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 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"
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"
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
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 учебного года
... , так и их реализации с помощью конкретных инструментов – сред и языков программирования. Итогом работы можно считать созданную функциональную модель вычисления минимума заданной функции методом парабол. Данная модель применима к детерминированным задачам, т.е. погрешностью экспериментального вычисления функции f(x) можно пренебречь. Созданная функциональная модель вычисления минимума заданной ...
... исследованных функций. Так же необходимо изучить работу встроенных в MatLab функций. Протестировать программу на серии тестов. Теоретическое описание Одномерная оптимизация функций методом золотого сечения Метод золотого сечения состоит в построении последовательности отрезков [a0, b0], [a1, b1], …,стягивающихся к точке минимума функции f(x). На каждом шаге, за исключением первого, вычисление ...
... все многообразие факторов, имеющих место в реальных системах, т. е. использованию моделей, более адекватных исследуемым явлениям. Библиографический список 1 Лященко И.Н. Линейное и нелинейное программирования / И.Н.Лященко, Е.А.Карагодова, Н.В.Черникова, Н.З.Шор. – К.: «Высшая школа», 1975, 372 с. 2 Методические указания для выполнения курсового проекта по дисциплине «Прикладная ...
... диаграммы. С этой целью строки и столбцы таблицы переставляются до тех пор, пока не получится упорядоченная диаграмма. Поиск сегментов рынка для программы установки защищенных сетевых соединений с помощью протокола ISAKMP Взрывной характер развития компьютерных технологий и резко возросшее количество действий совершаемых с помощью глобальной сети Internet (развитие электронной торговли, ...
0 комментариев