Смекни!
smekni.com

Программа вычисления минимума заданной функции (стр. 2 из 2)

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

ENDFUNCTION


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 учебного года