Слайд 1Основы программирования и БД
Тема: Языки программирования высокого уровня
Программная реализация метода кубической
интерполяции
преподаватель Новиков А. В.
Слайд 2Метод кубической интерполяции
В методах полиномиальной аппроксимации при построении многочлена, аппроксимирующего минимизируемую
функцию в окрестности искомой точки х* минимума, помимо значений функции в отдельных точках могут быть использованы и значения ее производных.
Пусть для непрерывно дифференцируемой функции f(x), строго выпуклой на отрезке [a,b], известны значения f1 = f(a), f2 = f(b), f1' = f '(a) и f2' = f '(b). Для строго выпуклой функции производная f'(x) возрастает на отрезке. Поэтому если значения f1' и f2' одного знака, т.е. f1'f2' > 0, то дифференцируемая функция f(x) не имеет стационарных точек на отрезке [a, b] и, следовательно, не имеет на нем точки минимума. Если f1'f2' = 0, то один из концов отрезка является стационарной точкой функции f(x), в которой эта функция имеет минимум.
Слайд 3Наконец, если f1'f2' < 0, то для строго выпуклой функции
f1
< 0 и f2 > 0. Следовательно, лишь единственная точка х* (a, b) будет стационарной, и в ней функция f(x) достигнет минимума. Таким образом, если f1'f2' < 0 на отрезке [a, b], то рассматриваемая функция строго унимодальна на этом отрезке.
Рассмотрим метод поиска точки х* (a, b) при условии
f1'f2' < 0 называемый методом кубической аппроксимации, поскольку в этом случае на отрезке [a, b] можно построить единственный многочлен третьей степени, располагая значениями f1, f2, f1', f2' на концах этого отрезка. Этот многочлен, называемый кубическим интерполяционным многочленом Эрмита, можно преобразовать к виду
Слайд 4с коэффициентами
Несложно проверить, что Н3(a) = f1, H3(b) = f2,
Н'3(a)
= f1 ' и Н'3(b) = f2 '
Слайд 5Производная Н'3(х) является квадратичной функцией, непрерывной на отрезке [a,b] и имеющей
на его концах различные знаки. Поэтому в интервале она может изменить знак лишь один раз в точке , которая является стационарной точкой многочлена Н3(х), а именно точкой его минимума, так как производная меняет знак с минуса на плюс.
Из необходимого условия Н'3(х) = 0 экстремума этого многочлена получаем с учетом квадратное уравнение
Слайд 6Его решение, принадлежащее интервалу (a, b), представим в виде
, где
и покажем, что . Действительно, поскольку f1' < 0 и f2' > 0, имеем
Слайд 7Следовательно,
и
Если , то
— искомая точка минимума функции f(x) на отрезке [a, b]. Если же , то в случае можно отбросить отрезок и продолжать описанным выше способом поиск точки минимума на отрезке , и наоборот.
Слайд 8После каждого приближения правильность вычислений подтверждается уменьшением минимального значения многочлена по
сравнению с его минимальным значением на предыдущем шаге. Вычисления можно прекратить, когда длина интервала неопределенности, в котором гарантированно находится искомая точка x*, станет меньше заданной наибольшей допустимой величины *.
Слайд 9Для реализации алгоритма кубической аппроксимации можно воспользоваться программой MathCAD
Рассмотрим следующую задачу.
Задача.
Найти минимум функции
на интервале [8 12] с точностью ≤ 0,0001.
Решение. Задаем функцию, построим ее график и убедимся, что она имеет минимум на заданном интервале.
Слайд 10Анализ построенного графика показывает, что исследуемая функция действительно имеет локальный минимум
на интервале [a,b]
Слайд 11Модуль cub имеет список формальных параметров (a,b,), где а – левая
граница; b – правая граница интервала значений аргумента; - требуемая точность результатов расчета. Для вычислений используется итерационный цикл while. Дальнейшие вычисления в цикле прекращаются, если модуль произведения значений производных 1 – ого порядка меньше требуемой точности . Для анализа результатов вычислений модулем выдаются следующие параметры: n – число итераций; x – приближенное значение аргумента при котором функция имеет локальный минимум; F(x) – значение функции в точке минимума; f(x) – значение производной 1 – ого порядка в точке минимума.
Слайд 12При вводе фактических параметров
a = 9, b = 11 и
= 0.0001 модуль cub выводит следующие параметры:
число итераций n = 2;
значение аргумента x = 10.0662
значение функции в точке локального минимума F(10.0662) =
-4.1217;
модуль произведения значений производных 1 – ого порядка.
Последние три строки программы – это проверка полученного результата с помощью встроенной функции вычисления минимума функции одной переменной minimize. Функция имеет два входных аргумента: имя исследуемой функции и начальную точку x из интервала [a, b]. В последней строке кода отображено значение функции в точке локального минимума.
Отсюда видно, что результаты расчетов совпадают.
Слайд 13Самостоятельная работа
Задача 1. Найти минимум функции
на интервале [0 1] с точностью до 0,0001. (Ответ: х = 0.7388)
Задача 2. Найти минимум функции F(x) = x4 + х2 + x + 1 на интервале [-1 0] с точностью до 0,0001.
(Ответ: х = - 0.3855)
Задача 3. Найти минимум функции на интервале [0 10] с точностью до 0,0001. (Ответ: х = 3)
Задача 4. Найти минимум функции F(x) = x3 + 16х2 - 10x – 21 на интервале [0 6] с точностью до 0,0001. (Ответ: х = 0.3038)
Слайд 14Литература
1. А.В. Аттетков, С.В. Галкин, В.С. Зарубин. Методы оптимизации: Учеб. для
вузов – 2-е изд. стереотип. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2003. 440 с.
2. Половко А.М., Ганичев И.В. MathCAD для студента. – СПб.: БХВ – Петербург, 2006. – 336 с.