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