Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Chast_II.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.32 Mб
Скачать

§3. Методы первого и второго порядка

Методы первого и второго порядков рассмотрим на примере методов градиентного спуска с постоянным шагом и метода Ньютона.

3.1. Метод градиентного спуска с постоянным шагом

Напомним, что в большинстве случаев численные методы минимизации основываются на построении итерационной последовательности {Xk}, обладающей свойством f(Xk+1)<f(Xk), (k=0, 1, …), по формулам Xk+1=Xk+hkDk, Dk  направление спуска, hk  величина шага. Если Dk=f(Xk), то метод называется градиентным. Если величину шага hk оставлять постоянной (до тех пор, пока функция убывает в точках последовательности), то метод называется методом градиентного спуска с постоянным шагом. Убывание контролируется путём проверки выполнения условия f(Xk+1)f(Xk)<0. Построение последовательности {Xk} заканчивается в точке Xk, для которой |f(Xk)|<1, или выполняется система

где 1, 2  заданные положительные числа, или kk0, где k0  предельное число итераций. Дополнительно необходимо провести исследование вопроса, является ли найденная точка действительным приближением искомой функции.

Более подробно:

1. Задать X0, 1>0, 2>0, k0. Найти градиент функции f(X)= , …, (Напоминаем, что в отношение вектора возможно одновременное применение в качестве обозначений как строки, так и столбца. При чтении произведений типа AX или XA, где X  вектор, а A  (mn)-матрица, разночтений быть не должно: в первом случае  это столбец с n элементами, во втором  строка с m элементами).

2. Положить k=0.

3. Вычислить f(Xk).

4. Проверить критерий окончания |f(Xk)|1:

а) если критерий выполнен, то расчёт закончен: X*=Xk;

б) если критерий не выполнен, то перейти к шагу 5.

5. Проверить выполнение неравенства kk0:

а) если неравенство выполнено, то расчёт окончен: X*=Xk;

б) если нет, то перейти к шагу 6.

6. Задать величину шага hk.

7. Вычислить Xk+1=Xkhkf(Xk).

8. Проверить выполнение условия f(Xk+1)f(Xk)<0:

а) если условие выполнено, то перейти к шагу 9;

б) если условие не выполнено, то положить hk= и перейти к шагу 7.

9. Проверить условия (Xk+1, Xk)<2 и |f(Xk+1)f(Xk)|<2:

а) если оба условия выполнены при текущем значении k и k1, то расчёт окончен: X*=Xk;

б) если хотя бы одно условие не выполнено, то положить k=k+1 и перейти к шагу 3.

Вопрос о сходимости последовательности {Xk} к решению X* решается в общем в случае с помощью так называемого условия Липшица. Мы ограничимся тем фактом, что если f(X)  сильно выпуклая функция, то при любом выборе X0 последовательность {Xk}, полученная методом градиентного спуска, сходится к точке X*. Поэтому прежде, чем начинать строить последовательность {Xk}, необходимо проверить условие сильной выпуклости функции.

После окончания процедуры нахождения X*Xk, необходимо проверить, что найденная точка, действительно, является приближением решения задачи.

Если f(X)  дважды непрерывно дифференцируемая (а мы ограничимся именно этим классом задач), то при H(Xk)>0 точка Xk является приближением искомой точки.

Пример I. Найти локальный минимум функции

f(x1, x2)=3 +2x1x2+2 .

Решение. Прежде всего убедимся, что функция выпукла. Так как H(X)= , то H(X)>0 и функция сильно выпукла, и сходимость итерационного процесса гарантирована.

I. Найдём Xk.

1. Зададим X0=(1, 1), 1=0,1, 2=0,1, k0=10 и найдём градиент f(X)=(6x1+2x2, 2x1+4x2).

2. Положим k=0.

3.0. Вычислим f(X0)=(8; 6).

4.0. Вычислим |f(X0)| и проверим критерий окончания: |f(X0)|= =10>0,1. Переходим к шагу 5.

5.0. Проверим условие k>k0: k=0<10=k0. Переходим к шагу 6.

6.0. Зададим h0=0,2.

7.0. Вычислим X1=X00,2f(X0)=(1; 1)0,2(8; 6)=(0,6; 0,2).

8.0. Проверим выполнение условия f(X1)f(X0)<0. Так как f(X1)=1,4, f(X0)=7, то условие выполняется. Переходим к шагу 9.

9.0. Проверим условия (X1, X0)<0,1 и |f(X1)f(X0)|<0,1. Второе условие не выполняется: |f(X1)f(X0)|=5,6>0,1. Полагаем k=1 и переходим к шагу 3.

3.1. Вычислим f(X1)=(4; 2).

4.1. Вычислим |f(X1)| и проверим критерий окончания: |f(X1)|= = >0,1. Переходим к шагу 5.

5.1. Проверим условие k>k0: k=1<10=k0. Переходим к шагу 6.

6.1. Зададим h1=0,2.

7.1. Вычислим X2=X10,2f(X1)=(0,6; 0,2)0,2(4; 2)=(0,2; 0,2).

8.1. Проверим выполнение условия f(X2)f(X1)<0. Так как f(X2)=0,28, f(X1)=1,4, то условие выполняется: f(X2)f(X1)=0,281,4=1,12. Переходим к шагу 9.

9.1. Проверим условия (X2, X1)<0,1 и |f(X2)f(X1)|<0,1. Второе условие не выполняется: |f(X2)f(X1)|=1,12>0,1. Полагаем k=2 и переходим к шагу 3.

3.2. Вычислим f(X2)=(1,6; 1,2).

4.2. Вычислим |f(X1)| и проверим критерий окончания: |f(X1)|= =2>0,1. Переходим к шагу 5.

5.2. Проверим условие k>k0: k=2<10=k0. Переходим к шагу 6.

6.2. Зададим h2=0,2.

7.2. Вычислим X3=X20,2f(X2)=(0,2; 0,2)0,2(1,6; 1,2)=(0,12; 0,04).

8.2. Проверим выполнение условия f(X3)f(X2)<0. Так как f(X3)=0,056, f(X2)=0,28, то условие выполняется: f(X3)f(X2)=0,224. Переходим к шагу 9.

9.2. Проверим условия (X3, X2)<0,1 и |f(X3)f(X2)|<0,1. Второе условие не выполняется: |f(X3)f(X2)|=0,224>0,1. Полагаем k=3 и переходим к шагу 3.

3.3. Вычислим f(X3)=(0,8; 0,4).

4.3. Вычислим |f(X3)| и проверим критерий окончания: |f(X3)|=0,8944>0,1. Переходим к шагу 5.

5.3. Проверим условие k>k0: k=3<10=k0. Переходим к шагу 6.

6.3. Зададим h3=0,2.

7.3. Вычислим X4=X30,2f(X3)=(0,12; 0,02)0,2(0,8; 0,4)=(0,04; 0,04).

8.3. Проверим выполнение условия f(X4)f(X3)<0. Так как f(X4)=0,0112, f(X3)=0,056, то условие выполняется: f(X4)f(X3)=0,0448. Переходим к шагу 9.

9.3. Проверим условия (X4, X3)<0,1 и |f(X4)f(X3)|<0,1. Второе условие выполняется: |f(X4)f(X3)|=0,0448<0,1. Для первого имеем

(X4, X3)= = 0,1789>0,1,

и условие не выполняется. Полагаем k=4 и переходим к шагу 3.

3.4. Вычислим f(X4)=(0,32; 0,24).

4.4. Вычислим |f(X4)| и проверим критерий окончания: |f(X4)|=0,4>0,1. Переходим к шагу 5.

5.4. Проверим условие k>k0: k=4<10=k0. Переходим к шагу 6.

6.4. Зададим h4=0,2.

7.4. Вычислим X5=X40,2f(X4)=(0,04; 0,04)0,2(0,32; 0,24)=(0,024; 0,008).

8.4. Проверим выполнение условия f(X5)f(X4)<0. Так как f(X5)=0,0022, f(X4)=0,0112, то условие выполняется: f(X5)f(X4)=0,009. Переходим к шагу 9.

9.4. Проверим условия (X5, X4)<0,1 и |f(X5)f(X4)|<0,1. Второе условие выполняется: |f(X5)f(X4)|=0,009<0,1. Для первого имеем

(X5, X4)= = 0,08<0,1,

и условия выполняются. Условия должны выполняться для текущего k и k1. Поэтому полагаем k=5 и переходим к шагу 3.

3.5. Вычислим f(X5)=(0,16; 0,08).

4.5. Вычислим |f(X5)| и проверим критерий окончания: |f(X5)|=0,1799>0,1. Переходим к шагу 5.

5.5. Проверим условие k>k0: k=5<10=k0. Переходим к шагу 6.

6.5. Зададим h5=0,2.

7.5. Вычислим

X6=X50,2f(X4)=(0,024; 0,008)0,2(0,16; 0,08)=(0,008; 0,008).

8.5. Проверим выполнение условия f(X6)f(X5)<0. Так как f(X6)=0,0005, f(X5)=0,0022, то условие выполняется: f(X6)f(X5)=0,0017. Переходим к шагу 9.

9.5. Проверим условия (X6, X5)<0,1 и |f(X6)f(X5)|<0,1. Второе условие выполняется: |f(X6)f(X5)|=0,0017<0,1. Для первого имеем

(X6, X5)= 0,0358<0,1.

Так как оба условия выполнены при текущем значении k=5 k1=4, то расчёт окончен: X*=X5=(0,024; 0,008).

II. Анализ точки X5.

Функция f(x1, x2)=3 +2x1x2+2 является дважды дифференцируемой. Так как матрица Гессе  постоянна и является положительно определённой, то точка X5 является точкой локального минимума, а значение f(X5)=0,0022  приближённое значение локального минимума.

Ответ: точкой локального минимума является точка X*=(0,024; 0,008), f(X*)=0,0022  локальный минимум.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]