5.1.1 Код тестирующей программы

DECLARE FUNCTION LX (k, x(), y(), xl)

CLS

LOCATE 1, 15

PRINT "Kursovaya rabota po informatike OTLADKA"

LOCATE 2, 18

PRINT "Gruppa PS0601, Adamskiy Alexey"

DIM x(0 TO 2) AS SINGLE

DIM y(0 TO 2) AS SINGLE

x(0) = -2: x(1) = 0: x(2) = 1

y(0) = 4: y(1) = 0: y(2) = 1

PRINT

PRINT TAB(20); "L(x1)=f(x1)="; LX(2, x(), y(), -1)

PRINT TAB(20); "L(x2)=f(x2)="; LX(2, x(), y(), .5)

END

FUNCTION LX (k, x(), y(), xl)

l = 0 FOR i = 0 TO k L1 = y(i) FOR j = 0 TO k IF i <> j THEN L1 = L1 * (xl - x(j)) / (x(i) - x(j)) NEXT j l = l + L1 NEXT i

LX = l

END FUNCTION

 

Результат тестирования

Модуль отработал верно.


5.2 Тестирование модуля поиска минимума функции F(x) на отрезке [a;b]

программный модуль минимум функция

Проверим работоспособность модуля, найдя с его помощью минимум функции F(x)=x2 на отрезке [a;b]. Очевидно, что xmin=0, F(xmin)=0.

 

5.2.1 Схема алгоритма тестирующей программы:

 

Схема алгоритма управляющей программы

 

Схема алгоритма модуля f(x,LX1,LX2)


5.2.2 Код тестирующей программы

DECLARE FUNCTION dihotom (a, b, e, LX1, LX2)

DECLARE FUNCTION F (xmin, LX1, LX2)

CLS

LOCATE 1, 15

PRINT "Kursovaya rabota po informatike OTLADKA"

LOCATE 2, 18

PRINT "Gruppa PS0601, Adamskiy Alexey"

PRINT

xmin = dihotom(-2, 1, .0001, 1, 0)

PRINT TAB(10); "Minimum F(x): xmin="; xmin; "F(xmin)="; F(xmin, 1, 0)

END

FUNCTION dihotom (a, b, e, LX1, LX2)

PRINT TAB(10); "Promezhutochnie rezul`tati"

PRINT " a b x1 x2 f(x1) f(x2) b-a" DO x1 = (a + b - e / 4) / 2 x2 = (a + b + e / 4) / 2 PRINT USING " ##.###### #.##### #.##### #.##### #.##### #.##### #.#####"; a; b; x1; x2; F(x1, LX1, LX2); F(x2, LX1, LX2); b - a IF F(x1, LX1, LX2) > F(x2, LX1, LX2) THEN a = x1 ELSE b = x2 LOOP UNTIL ABS(b - a) <= e

dihotom = (a + b) / 2

END FUNCTION

FUNCTION F (x, LX1, LX2)

F = LX1 * x ^ 2 + LX2 * x

END FUNCTION


5.2.3 Результат тестирования

 

 

Модуль отработал верно. Минимум найден корректно.

5.3 Прогонка программы

Протестируем всю программу, задав   (тоже самое, что f(x)=x2)

x1=-1, x2=0. F(x)=L(x1)*x2+L(x2)*x, [a;b]=[-2;1].

Очевидно, что L(x1)=1, L(x2)=0, а минимум функции F(x) лежит в точке x=0

Cхемы алгоритмов других модулей совпадают с приведёнными в пп 5.1.1 и 5.2.1

5.3.1 Код программы при прогонке

DECLARE FUNCTION dihotom (a, b, e, LX1, LX2)

DECLARE FUNCTION LX (k, x(), y(), xl)

DECLARE FUNCTION F (xmin, LX1, LX2)

CLS

LOCATE 1, 15

PRINT "Kursovaya rabota po informatike OTLADKA"

LOCATE 2, 18

PRINT "Gruppa PS0601, Adamskiy Alexey"

PRINT

x(0) = -2: x(1) = 0: x(2) = 1

y(0) = 4: y(1) = 0: y(2) = 1

LX1 = LX(2, x(), y(), -1)

LX2 = LX(2, x(), y(), 0)

PRINT TAB(10); "Znacheniya polinoma Lagranzha v x1,x2"

PRINT TAB(15); "L(x1)="; LX1; "L(x2)="; LX2

PRINT

PRINT TAB(10); "Poisk minimuma F(x)"

xmin = dihotom(-2, 1, .0001, LX1, LX2)

PRINT TAB(10); "Minimum F(x): xmin="; xmin; "F(xmin)="; F(xmin, LX1, LX2)

END

FUNCTION dihotom (a, b, e, LX1, LX2)

PRINT TAB(10); "Promezhutochnie rezul`tati"

PRINT " a b x1 x2 f(x1) f(x2) b-a" DO PRINT USING " ##.###### #.##### #.##### #.##### #.##### #.##### #.#####"; a; b; x1; x2; F(x1, LX1, LX2); F(x2, LX1, LX2); b - a x1 = (a + b - e / 4) / 2 x2 = (a + b + e / 4) / 2 IF F(x1, LX1, LX2) > F(x2, LX1, LX2) THEN a = x1 ELSE b = x2 LOOP UNTIL ABS(b - a) <= e

dihotom = (a + b) / 2

END FUNCTION

FUNCTION F (x, LX1, LX2)

F = LX1 * x ^ 2 + LX2 * x

END FUNCTION

FUNCTION LX (k, x(), y(), xl)

l = 0 FOR i = 0 TO k L1 = y(i) FOR j = 0 TO k IF i <> j THEN L1 = L1 * (xl - x(j)) / (x(i) - x(j)) NEXT j l = l + L1 NEXT i

LX = l

END FUNCTION

5.3.2 Результат прогонки программы

 

Программа отработала верно

Проверка результатов тестирования в среде MathCAD не требуется из-за очевидности полученных результатов.


6. Детализированная схема алгоритма

 




7. Код программы

 

DECLARE FUNCTION dihotom (a, b, E, LX1, LX2)

DECLARE FUNCTION LX (k, x(), y(), xl)

DECLARE FUNCTION F (xmin, LX1, LX2)

CLS

LOCATE 1, 15

PRINT "Kursovaya rabota po informatike"

LOCATE 2, 18

PRINT "Gruppa PS0601, Adamskiy Alexey"

PRINT

LOCATE 5, 18

INPUT "Vvedite k,a,b,x1,x2,E"; k, a, b, x1, x2, E

DIM x(0 TO k) AS SINGLE

DIM y(0 TO k) AS SINGLE

DATA 0,0.1, 0.2,0.3,0.4,0.5,0.6 FOR i = 0 TO k READ x(i) NEXT i

DATA 1.858652,1.851659,1.851401,1.848081,1.841914,1.833125,1.821948 FOR i = 0 TO k READ y(i) NEXT i

LX1 = LX(k, x(), y(), x1)

LX2 = LX(k, x(), y(), x2)

PRINT TAB(10); "Znacheniya polinoma Lagranzha v x1,x2"

PRINT TAB(15); "L(x1)="; LX1; "L(x2)="; LX2

PRINT

PRINT TAB(10); "Poisk minimuma F(x)"

xmin = dihotom(a, b, E, LX1, LX2)

PRINT TAB(10); "Minimum F(x): xmin="; xmin; "F(xmin)="; F(xmin, LX1, LX2)

END

FUNCTION dihotom (a, b, E, LX1, LX2)

PRINT TAB(10); "Promezhutochnie rezul`tati"

PRINT " a b x1 x2 f(x1) f(x2) b-a" DO x1 = (a + b - E / 1.3) / 2 x2 = (a + b + E / 1.3) / 2 PRINT USING " ##.###### #.##### #.##### #.##### #.##### #.##### #.#####"; a; b; x1; x2; F(x1, LX1, LX2); F(x2, LX1, LX2); b - a IF F(x1, LX1, LX2) > F(x2, LX1, LX2) THEN a = x1 ELSE b = x2 LOOP UNTIL b - a <= E

dihotom = (a + b) / 2

END FUNCTION

FUNCTION F (x, LX1, LX2)

F = LX1 * x ^ 2 - 2.5 * LX2 * x - 3

END FUNCTION

FUNCTION LX (k, x(), y(), xl)

l = 0 FOR i = 0 TO k L1 = y(i) FOR j = 0 TO k IF i <> j THEN L1 = L1 * (xl - x(j)) / (x(i) - x(j)) NEXT j l = l + L1 NEXT i

LX = l

END FUNCTION


8. Полученные результаты


Выводы

1. Обоснованы и выбраны численные методы: - интерполяции таблично заданной функции с помощью полинома Лагранжа - одномерной оптимизации по методу дихотомии

2. Разработаны, протестированы модули, реализующие следующие методы: - поиск значений интерполяционного многочлена Лагранжа в требуемых точках (x1, x2) - поиск минимума функции F(x) с помощью метода дихотомии с требуемой точностью

3. Программа модульная, содержит следующие модули: - основной модуль, принимающий исходные данные, передающий их на обработку и выводящий конечный и промежуточный результаты - модуль поиска значений интерполяционного многочлена в точках x1 и x2 - модуль, задающий F(x) с параметрами LX1, LX2, найденными модулем интерполирования - модуль поиска минимума функции F(x) на отрезке [a;b] методом дихотомии

4. Получены следующие результаты: Полином Лагранжа L(x1)=1.853346, L(x2)=1.823337

Искомый минимум функции F(x) найден с точностью E=0.0001, xmin=1.229506

F(xmin)=-5.802835

5. Полученные результаты были проверены в MathCAD: Полученные в ходе работы программы результаты, очень хорошо согласуются с результатами, полученными в MathCAD, требуемая точность E=0.0001 соблюдалась, если научно подойти к выбору d в методе дихотомии.


Список литературы

1. Гловацкая А.П., Загвоздкина А.В., Кравченко О.М., Семёнова Т.И., Шакин В.Н: Практикум Численные методы и оптимизация по дисциплине «Информатика»

Москва, МТУСИ, 2004г.

2. А.П.Гловацкая: Конспект лекций «Информатика. Вычислительная математика» Москва, МТУСИ, 2006г.

3. Семёнова Т.И, Шакин В.Н.: Практикум Математический пакет MathCAD в дисциплине «Информатика», Москва, МТУСИ, 2006г.

4. А.В. Загвоздкина: Конспект лекций за 1 семестр 2007-2008 учебного года


Информация о работе «Программа вычисления минимума заданной функции»
Раздел: Информатика, программирование
Количество знаков с пробелами: 12488
Количество таблиц: 3
Количество изображений: 13

Похожие работы

Скачать
10499
3
12

... , так и их реализации с помощью конкретных инструментов – сред и языков программирования. Итогом работы можно считать созданную функциональную модель вычисления минимума заданной функции методом парабол. Данная модель применима к детерминированным задачам, т.е. погрешностью экспериментального вычисления функции f(x) можно пренебречь. Созданная функциональная модель вычисления минимума заданной ...

Скачать
12745
0
3

... исследованных функций. Так же необходимо изучить работу встроенных в MatLab функций. Протестировать программу на серии тестов. Теоретическое описание Одномерная оптимизация функций методом золотого сечения Метод золотого сечения состоит в построении последовательности отрезков [a0, b0], [a1, b1], …,стягивающихся к точке минимума функции f(x). На каждом шаге, за исключением первого, вычисление ...

Скачать
23672
25
23

... все многообразие факторов, имеющих место в реальных системах, т. е. использованию моделей, более адекватных исследуемым явлениям.   Библиографический список 1 Лященко И.Н. Линейное и нелинейное программирования / И.Н.Лященко, Е.А.Карагодова, Н.В.Черникова, Н.З.Шор. – К.: «Высшая школа», 1975, 372 с. 2 Методические указания для выполнения курсового проекта по дисциплине «Прикладная ...

Скачать
115680
3
6

... диаграммы. С этой целью строки и столбцы таблицы переставляются до тех пор, пока не получится упорядоченная диаграмма. Поиск сегментов рынка для программы установки защищенных сетевых соединений с помощью протокола ISAKMP Взрывной характер развития компьютерных технологий и резко возросшее количество действий совершаемых с помощью глобальной сети Internet (развитие электронной торговли, ...

0 комментариев


Наверх