Лекция: Методы одномерной минимизации

Сначала рассматриваются прямые методы. Первые два из них ориентированы на поиск безусловного минимума, остальные – на поиск минимума на заданном непрерывном интервале.

8.7.1. Метод деления шага пополам

Начальная точка и начальный шаг задаются на основе предварительных знаний о функции. Движение с неизменным шагом в одном направлении продолжается пока значение функции уменьшается. При увеличении значения направление меняется на противоположное и шаг уменьшается в два раза. Поиск заканчивается, когда при очередном шаге значение ухудшилось, а длина шага меньше заданной точности (рис. 8.8). Очевидно, что после прохождения минимума происходят колебания вокруг него с уменьшающейся амплитудой.

Алгоритм.

1. Задать начальную точку x0, начальный шаг h0и точность e; k=0.

2. Вычислить f(xk).

3. xk+1 =xk+hk.

4. Вычислить f(xk+1).

5. Еслиf(xk+1)<f(xk), то hk+1= hk и идти на 9.

6. Если hk<e, перейти на 10.

7. Если k=0, то hk+1= -hk и идти на 9.

8. hk+1= -hk/2;

9. k=k+1и перейти на 3.

10. Конец.▲

Проверка в п.7 необходима для того, чтобы не уменьшать шаг до достижения окрестности минимума. После окончания алгоритма в качестве оптимального x* может быть взято любое значение между xk и xk+1. При сильной изменчивости функции в окрестности минимума условие п.6 можно заменить на (hk<e) & (f(xk+1) – f(xk)<ef), гдеef – точность по функции.

8.7.2. Квадратичная аппроксимация

Для нахождения приближенного минимума исходная функция аппроксимируется функцией второго порядка

, (8.35)

где х0– точка отсчета реального диапазона значений x, в частности х0=0. Для определения коэффициентов, входящих в функцию (8.35), выбираются 3 точки и в них вычисляется значение функции f. Получается простая система 3-х уравнений с 3-мя неизвестными a,b и c:

Стационарная точка функции (8.35) вычисляется из равенства ее производной нулю:

. (8.36)

Она используется в условии останова и как новая точка для аппроксимации.

Алгоритм.

1. Задать первую точку x1, шаг Dх и точность по координате e и функции ef.

2. Определить 2-ю точку: x2=x1+Dх.

3. Вычислить f(x1) и f(x2).

4. Если f(x2)<f(x1), принять x3=x2+Dх, иначе x3=x1-Dх.

5. Вычислить f(x3).

6. Вычислить fm=min{f(x1),f(x2),f(x3)} и определить точку xm, соответствующую fm.

7. По трем точкам и значениям функции в них найти коэффициенты в (8.35).

8. Вычислить xa по формуле (8.36).

9. Если (|fm-f(xa)|<ef) & (|xm-xa |<e), окончить поиск.

10. Если fm<f(xa), взять xm и две ближайшие к ней точки, иначе взять xa и две ближайшие к ней точки. Выбранные точки пронумеровать в порядке возрастания значений, вычислить f в новой точке и перейти на 6.

8.7.3. Метод деления интервала пополам

Этот метод, как и два следующих, относится к методам сокращения интервала неопределенности. Предполагается, что точка минимума находится на заданном интервале [a,b].

Рассматриваемый метод также называют трехточечным. Точки выбираются так, что делят интервал на 4 равные части (рис. 8.9):

xm=(a+b)/2, x1=(a+ xm)/2, x2=(xm+b)/2.

Функция вычисляется в этих точках и после сравнения ее значений интервал сокращается в 2 раза. С новым интервалом действия повторяются.

Алгоритм.

1. Задать точность по координате e.

2. Вычислить xm и f(xm).

3. Вычислить x1 и x2.

4. Вычислить f(x) в этих точках.

5. Если f(x1) < f(xm), то принять b = xm, xm= x1. Иначе, если f(x2) < f(xm), положить a= xm, xm= x2 , иначе – a= x1, b = x2.

6. Если b — a<e, закончить поиск, иначе перейти на 3.

Нетрудно подсчитать, что после n вычислений функции интервал неопределенности уменьшится в раз. Доказано, что этот метод эффективнее других прямых методов, использующих равноудаленные точки.

8.7.4. Метод золотого сечения

Золотое сечение – это определенное отношение части к целому. Отрезок АВ делится точкой С в отношении золотого сечения (рис. 8.10), если

. (8.37)

Положим АВ = 1, АС = х, СВ = 1 – х, тогда из (8.37) получаем уравнение

х2 + х – 1 = 0,

из которого следует

, .

Эти отношения используются для выбора двух точек внутри интервала неопределенности. Они располагаются, как показано на рис. 8.11. Каждая из точек делит интервал [a, b] в отношении золотого сечения.

В этих точках вычисляется функция. Если f(x1) > f(x2), то отбрасывается часть интервала [a, x1], если f(x1) < f(x2), то отсекается часть [x2, b], а при равенстве значений функции – любая из них. Оставшаяся часть интервала равна от величины исходного. Очевидно, что после такого сокращения интервала одна из внутренних точек остается с изменением индекса, а вторая берется на основе золотого сечения или, что одно и то же, симметрично оставшейся (рис. 8.12). Сокращение интервала продолжается до достижения заданной точности.

Алгоритм.

1. Задать точность по координате e.

2. Вычислить

3. Вычислить f( x1), f( x2).

4. Если f(x1)>f(x2), положить a=x1, x1=x2, илиx2=a+b-x1, иначе – b=x2, x2=x1, или x1=a+b-x2.

5. Если (b-a)<e, закончить поиск.

6. Вычислить функцию в новой точке и перейти на 4.▲

Итерации алгоритма графически иллюстрируются на рис. 8.12.

Покажем, что сохраняемая точка (x1 или x2) делит сокращенный интервал также в отношении золотого сечения. Пусть на k-й итерации внутренние точки делят интервал [ak, bk] в отношении золотого сечения. Обозначив =bk — ak, имеем

.

Тогда для нового, сокращенного, интервала находим

,

В результате получаем:

.

Благодаря этому свойству, внутренние точки не сливаются при любом числе итераций.

Согласно алгоритму функция вычисляется 2 раза на начальном интервале и по одному разу на всех последующих. Поэтому после n вычислений функции интервал неопределенности составит от величины первоначального. При заданной точности можно найти необходимое количество вычислений функции n из условия

8.7.5. Метод Фибоначчи

Схема метода почти полностью совпадает с методом золотого сечения. Отличие в том, что вместо золотого сечения используется отношение чисел Фибоначчи: на k-й итерации доли малого и большого отрезков интервала равны и соответственно.

Числа ФибоначчиFn вычисляются по известным соотношениям: F0=F1=1, Fn= Fn-1+Fn-2, n³2.

Точки x1 и x2вычисляются по формулам:

, (8.38)

. (8.39)

Как видно, они идентичны приведенным в предыдущем разделе. Однако если при использовании золотого сечения внутренние точки не могут сливаться, то здесь это не так. Действительно, при k=n-1 из (8.38) и (8.39) имеем

, .

Но так как F0/F2=F1/F2=1/2, тои, следовательно, точки сливаются в середине интервала. Поэтому до начала итераций необходимо определить значение n, гарантирующее достижение минимума с заданной точностью e. После 1-й итерации длина интервала составит от величины исходного, после 2-й – ( )( ),…, после (n-1)-й –

.

Значит, длина последнего интервала будет равна (b1 — a1)/Fn, где [a1, b1] – исходный интервал. Для обеспечения заданной точности требуется, чтобы

или. (8.40)

Таким образом, соотношение (8.40) позволяет определить номер числа Фибоначчи по исходным данным. На начальном интервале точки вычисляются по формулам (8.38) и (8.39) при k=1. На последующих итерациях числа Фибоначчи не требуются, так как одна точка переносится из предшествующей итерации, а вторая берется симметрично ей, то есть лучше использовать вторые формулы из п.4 алгоритма золотого сечения.

После слияния внутренних точек остается неопределенность с положением минимума. Для ее устранения вторая точка берется слева или справа от центра на расстоянии e1@(0,01¸0,05)e. Для случая сдвига второй точки влево (рис. 8.13) при f(x1)< f(x1-e1) минимум лежит в интервале (2), в противном случае – в интервале (1).

Метод Фибоначчи является самым эффективными из всех прямых методов. Очень близок к нему метод золотого сечения: при n>9 они практически совпадают по эффективности и чем больше n, тем ближе эти методы. А в пределе отношение, используемое в методе Фибоначчи на 1-й итерации, становится равным золотому сечению:

.

еще рефераты
Еще работы по информатике