Вход
Исходные данные a, b, ε1, ε2, f (x)
= b −a
|
|
|
|
|
|
xc = a + 0,5 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вычисление |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
f ′(xc ) |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f ′(xc ) |
|
≤ ε1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
Нет |
|
Да |
|
|
|
|
||||||
|
b = xc |
|
|
|
|
|
f ′ < 0 |
|
|
a = xc |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= b −a |
|
|
|
|
|
|
||
|
|
|
|
|
|
Да |
|
|
|
|
||||||
|
|
|
Нет |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
≤ε2 |
|
|
|
|
a = xc |
|||
Рис. 1.10. Блок-схема алгоритма метода дихотомии |
|
|
|
|||||||||||||
|
|
Выход |
||||||||||||||
31
1.2.3.3. Метод парабол (метод полиномиальной аппроксимации)
Идея метода весьма проста: если на отрезке [a, b] , внутри
которого лежит точка минимума x , функция f (x) достаточно хорошо аппроксимируется многочленом второй степени, то за
приближенное значение x целесообразно взять точку минимума этого многочлена. В случае, когда функция гладкая и
унимодальная, можно предполагать, что в окрестности точки x она весьма близка к параболе. Ввиду этого метод парабол целесообразно применять после того, как найден отрезок
достаточно |
|
малой |
длины, |
содержащий x (например, после |
||
нескольких шагов по методу золотого сечения). |
|
|
||||
Пусть |
известны |
три |
значения x1 < x2 < x3 , |
|
таких, что |
|
f (x )> f (x |
)< f (x |
). В |
этом случае x [x , x |
3 |
]. Построим |
|
1 |
2 |
3 |
|
1 |
|
|
многочлен второго порядка, который проходит через три данные точки (рис. 1.11).
Рис. 1.11. Графическое представление функции f (x) = α0 + α1x + α2x2
32
Коэффициенты α0 , α1 , α2 определяются из системы уравнений:
f (x )= α + α x + α x2 ,
1 0 1 1 2 1
f (x2 )= α0 + α1 x2 + α2 x22 ,f (x3 )= α0 + α1 x3 + α2 x32 .
Минимум полинома определяется из условия
df (x) |
|
= α + 2α |
2 |
xˆ* = 0 . |
|
||||
dx |
|
1 |
|
|
|
x=xˆ* |
|
|
|
|
|
|
Откуда получаем
xˆ = − α1 . 2α2
Найдя α1 и α2 из линейной системы уравнений, получим
|
1 |
|
|
1 |
f (x1 ) |
|
|
|
|||||
xˆ* = − |
|
|
1 |
f (x2 ) |
||
2 |
||||||
|
|
|
1 |
f (x3 ) |
x12 |
|
|
|
1 |
x1 |
f (x1 ) |
|
|
|
|
|
|
|
||||||
x22 |
|
|
|
1 |
x2 |
f (x2 ) |
|
= |
|
x32 |
|
|
|
1 |
x3 |
f (x3 ) |
|
|
(*) |
=1 (x22 − x32 ) f (x1 )+ (x32 − x12 ) f (x2 )+(x12 − x22 ) f (x3 ).
2 (x2 − x3 ) f (x1 )+ (x3 − x1 ) f (x2 )+(x1 − x2 ) f (x3 )
Алгоритм метода парабол. |
x1 < x2 < x3 , |
|
|
|||||||
1. |
Найти |
|
тройку |
чисел |
таких, |
что |
||||
f (x1 )> f (x2 )< f (x3 ) |
(это можно |
сделать, например, используя |
||||||||
алгоритм поиска отрезка, содержащего точку минимума). |
|
|||||||||
2. |
Вычислить оценку xˆ |
по формуле (*). |
|
|
||||||
3. |
Если |
|
xˆ* − x |
|
≤ ε , закончить |
процесс, положив x* = xˆ* . В |
||||
|
|
|||||||||
|
|
|
2 |
|
|
|
|
|
|
|
противном случае – вычислить f (xˆ* ). |
|
|
||||||||
4. |
Из чисел x , |
x , |
x , xˆ* |
выбрать необходимую тройку чисел и |
||||||
|
|
1 |
2 |
3 |
|
|
|
|
||
перейти к шагу 2.
33
Контрольные задачи
Задача 1. Методом удвоения шага найти отрезок, содержащий точку минимума функции f (x) = (x −5)2 . В качестве начальной точки взять: 1) x0 = 3 ; 2) x0 = 7 . Составить блок-схему алгоритма.
Задача 2. Методом золотого сечения найти точку минимума функции
f (x) = (x −5)2 |
с погрешностью ε = 0,1. |
|
Задача 3. |
Методом дихотомии найти точку минимума функции |
|
f (x) = (x −5)2 |
с погрешностью ε = 0,1. Сравнить скорость сходимости |
|
метода дихотомии и «метода золотого» сечения для данного примера. |
||
Задача 4. |
Найти точку минимума функции |
f (x) = (x −5)2 методом |
парабол с погрешностью менее 10 %. |
|
|
Задача 5. |
Найти точку минимума функции |
f (x) = (x −5)2 методами: |
Фибоначчи, Ньютона и методом касательных с погрешностью менее 5 %. Сравнить полученные результаты.
1.3. Минимизация функций без ограничений (безусловная минимизация)
Перейдем к изучению методов нахождения минимума функции многих переменных f (x1 , …, xn ) по всему пространству R n , т.е. при условии, что при поиске экстремума каждая из переменных xi может принимать значения от –∞ до +∞. Допустим, что f (x)
обладает единственным минимумом и что все частные производные, по крайней мере первого порядка, существуют при любых значениях x .
Прежде всего, рассмотрим методы отыскания экстремума функций без ограничений, а затем перейдем к более трудной задаче отыскания экстремума с ограничениями. Это необходимо потому, что задача оптимизации с ограничениями часто решается путем преобразования ее к задаче оптимизации без ограничений.
Все методы безусловной минимизации сводятся к нахождению последовательности точек x0 , x1 , …, x n , значения функции в которых убывают:
34
|
|
f (x0 ) > f (x1 ) > |
> f (xn ) . |
|
(1.1) |
Эти |
методы |
называются |
методами |
спуска |
(или |
релаксационными методами).
При получении таких последовательностей точек в задачах с ограничениями, прежде всего, необходимо выбрать начальную точку x0 , удовлетворяющую всем ограничениям.
В задаче без ограничений можно в качестве x0 взять любую точку. При этом, конечно, нужно использовать любую имеющуюся информацию о поведении функции f (x) с тем, чтобы выбрать x0
не слишком далеко от точки минимума.
После того, как какая-то точка выбрана, необходимо:
1)выбрать направление, вдоль которого предполагается расположить следующую точку;
2)решить, какой величины шаг должен быть сделан в выбранном направлении.
При любом методе спуска последовательность точек выглядит так:
xk +1 = xk + λk Sk , |
(1.2) |
где единичный вектор Sk задает направление, а λk – величину шага. Изменяя процедуру выбора Sk и λk, можно получать различные методы спуска.
Для задач без ограничений любое направление является возможным, однако не все направления приемлемы. Приемлемым называется такое направление Sk, для которого выполняется условие
f (xk ), Sk < 0 , |
(1.3) |
Действительно, для достаточно малых λk можно написать разложение функции в ряд Тейлора
f (xk + λSk ) ≈ f (xk ) + λ f (xk ), Sk . |
(1.4) |
если этот член < 0, то f ( xk +λSk )< f ( xk )
Все методы спуска можно разбить на две группы:
1) прямые методы, или методы нулевого порядка – методы,
использующие только значения функций;
35