Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные Методы (часть 4).doc
Скачиваний:
23
Добавлен:
14.11.2019
Размер:
838.14 Кб
Скачать

5.8 Градиентные методы.

Требуют знания значения функции и ее градиента. Основная идея метода заключается в отказе от “слепого” поиска вдоль осей координат и переходе к движению сразу в направление возрастания функции (противоположное – убывание функции).

Рис.5.10

5.8.1. Наискорейший спуск

Допустим, что переход из точки в точку происходит по направлению с шагом . Точка определеяется координатами , а следующая точка – координатами , где . При этом косинусы направлений такие, что . (5.11)

Возникает задача: как выбрать направление d , чтобы получить наибольшее изменение функции df при соблюдении условия (5.11) т.е. с ограничением. Логично предположить, что направление наиболее быстрого изменения функции- это направление роста градиента функции. Изменение значений функции определяется соотношениями

(5.12)

Чтобы получить наибольшее изменение функции , т.е. решить задачу определения максимума функции с ограничением, используем метод множителей Лагранжа для поиска функции

или .

На основе метода df достигает max , если φ достигает max. Берем производную от φ

(j=1,2,…,n) и приравниваем ее нулю, получаем ,

следовательно,

. “Направления” совпадают с градиентами функции f(x) в точке x, или g(x).

Для min - f(x) или – g(x). Уравнение (0) можно записать так , где Θ – угол между векторами g(x) и dx. Угол выбран Θ=1800 , чтобы обеспечить направление – g(x):

.

Значение λi , минимизирующее функцию φ, может быть найдено любым методом одномерного поиска. В чистом виде метод работает медленно и не надежно. Но прежде чем перейти к более эффективным методам, рассмотрим свойства квадратичных функций.

F(x)= , где a – константа , b – постоянный вектор , G – положительно определенная симметрическая матрица.

min в точке .

Поставим задачу так, что в окрестности точки х0 любую функцию φ(х) можно аппроксимировать квадратичной функцией:

Пусть min φ(x) находится в точке хm

Берем производную и приравниваем ее к нулю.

, откуда:

, т.е. в итерационном виде:

, а с учетом множителей Лагранжа:

.

Видим, что по сравнению с методом наискорейшего спуска требуется умножение

на G-1(xi), а это самая трудоемкая операция метода.

Но если проводить умножение на Hi , а не на G-1(xi) , то получим метод Давидона – Флетчера – Пауэлла (ДФП). - симметрическая положительно определенная матрица. В ходе вычислений она приближается к матрице .

5.8.2. Метод дфп

Начнем поиск из начальной точки , взяв H0 в виде Е.

  1. На шаге i имеется точка и матрица H.

  2. В качестве направления поиска взять направление

  3. Чтобы найти λi , необходимо минимизировать вдоль прямой .

  4. Положить

  5. Положить

  6. Найти и . Завершить процедуру, если или достаточно малы.

  7. Положить

  8. Обновить матрицу Н: , где ; .

  9. Увеличить i+1 и вернуться на шаг 2.

Доказательства использования Hi отсутствуют.

Программа метода ДФП.

procedure DFP;

type tt=array[1..10] of real; var X,P,Q,R,D,G,U,V,Y,M:tt;

type mat=array[1..10,1..10] of real; var H:mat;

var I,J,N:integer;

var FP,GI;GP;QX,HH,BB,FQ,GQ,ZZ,FR,GR,KK,DK,WK:integer;

begin GQ:=0;

for I:=1 to N do

begin

for J:=1 to N do H[I,J]:=0; H[I,I]:=1;

end;

TT:=0;

4: for I:=1 to N do

begin

P[I]:=x[I]; Y[I]:=x[I];

end;

FUNK;

FP:=Z; GRAD; GI:=G0;

for I:=1 to N do

begin

U[I]:=G[I]; D[I]:=0;

for J:=1 to N do D[I]:=D[I]-H[I,J]*G[J];

6: GP:=0;

for I:=1 to N do CP:=GP+G[I]*D[I];

if GP<0 then goto 68;

QX:=abs(2*FP/GP);

if QX>1 then QX:=1;

for I:=1 to N do

begin x[I]:=P[I]-Qx*D[I]; P[I]:=x[I];

end;

FUNK;

FP:=Z; GRAD; G1:=G0; goto 6;

68: QX:=abs(2*FP/GP);

if QX>1 then Qx:=1;

HH:=QX; BB:=HH;

for I:=1 to N do

begin Q[I]:=P[I]+BB*D[I]; X[I]:=Q[I];

end;

FUNK; FQ:=Z; GRAD; GZ:=G0; GQ:=0;

7: BB:=HH;

for I:=1 to N do

begin Q[I]:=P[I]+BB*D[I]; X[I]:=Q[I];

end;

FUNK; FQ:=Z; GRAD; GZ:=G0; GQ:=0;

for I:=1 to N do GQ:=GQ+G[I]*D[I];

if ((GQ>0)or(FQ>FP)) then goto 83;

HH:=2*HH; goto 7;

83: ZZ:=3*(FP-FQ)/HH; ZZ:=ZZ+GP+GQ; WW:=ZZ*ZZ-GP*GQ;

if WW<0 then WW:=0; W:=sqr(WW);

DD:=HH*(1-(GQ+W-ZZ)/(GQ-GP+2*W));

for I:=1 to N do x[I]:=P[I]+DD*D[I]; FUNK; FR:=Z;

GRAD; G3:=G0; GR:=0;

for I:=1 to N do GR:=GR+G[I]*D[I];

if ((Z<=FP) and (Z<=FQ)) then goto 11;

if GR>0 then goto 99;

HH:=HH-DD;

for I:=1 to N do P[I]:=x[I];

FP:=Z; GP:=GR; G1:=G0; goto 83;

99: HH:=DD;

for I:=1 to N do Q[I]:=x[I];

11: KK:=0; WK:=0; DK:=0;

for I:=1 to N do

begin U[I]:=G[I]-U[I]; V[I]:=x[I]-Y[I];

end;

for I:=1 to N do

begin

M[I]:=0;

for J:=1 to N do M[I]:=M[I]+H[I,J]*U[J];

KK:=KK+M[I]*U[I]; WK:=WK+V[I]+U[I];

DK:=DK+V[I]*V[I];

end;

if ((KK=0) or (WK=0)) then goto 126

Проиллюстрируем основную идею метода графически на рис.5.11 для функции

f (x)=(x1 –3)2 +(x2 –2)2-5.

Окружности – линии равного уровня для f(x).

Пунктиром показаны траектории поиска экстремума покоординатным методом.

Сплошная линия – траектория наискорейшего спуска.

Градиент функции определяется:

f(x)=grad f(x)=(2x1-6 , 2x2-4).

Рис. 5.11

Если овраг направлен вдоль одной из осей, то проблем поиска экстремума не возникает, но процесс наискорейшего спуска перестает быть таковым (рис.5.12) (шарик катится на дно, переваливаясь с одного склона на другой)

А если овраги узки и извилисты, то рассмотренные методы могут зайти в тупик.

Рис. 5.12

Литература

1. Мак-Кракен Д., Дорн У. Численные методы и программирование на Фортране. -

М.: Мир, 1977.

2. Корн Г., Корн Т. Справочник по математике, глава 20-я, М.: Наука , 1978.

3. Калиткин Н.Н. Численные методы. – М.: Наука, 1978.

4. Турчак Л.И. Основы численных методов. – М.: Наука, 1987.

5. Банди Б. Методы оптимизации. – М.: Наука, 1987.

6. Волков Е.А. Численные методы. – М.: Наука, 1987.

7. Дьяконов В.П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ. – М.: Наука, 1989.

8. Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль. – М.: Роско,1991.

9.Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – М.: Физматгиз, 2001.

10. Метьюз Д. Численные методы.- М.: 2001.

11.Ануфриев И.Е., Смирнов А.Б, Смирнова Е.Н. Матлаб 7.0 в подлиннике.- С.-Пб.,2005.

12.Кетков Ю.Л., Кетков А.Ю., Шульц М.М. Матлаб 7: программирование, численные методы. – СПб.: БХВ-Петербург,2005.

13. M.J.Box, D.Davies and W.H.Swann, Non-linear Optimisation Techniques, ICI ltd.,Monograph No.5, Oliver and Boyd,1969.

Оглавление стр.

Предисловие 2

Введение 2