- •Содержание
- •Предисловие
- •Глава I. Нелинейное программирование: экстремумы функций нескольких переменных
- •§1. Классические методы оптимизации
- •1.1. Безусловный экстремум функции одной переменной
- •1.2. Условный экстремум функции одной переменной
- •1.3. Безусловный экстремум функций двух переменных
- •1.4. Упражнения.
- •§2. Безусловный экстремум функций нескольких переменных
- •2.1. Необходимые и достаточные условия
- •§3. Условный экстремум функций нескольких переменных
- •3.1. Основные определения и факты
- •3.2. Условный экстремум при ограничениях типа равенств
- •3.3. Условный экстремум при ограничениях типа неравенств
- •3.4. Условный экстремум при смешанных ограничениях
- •3.5. Понятие о методах штрафных функций
- •Глава II. Численные методы нелинейного программирования
- •§1. Общие положения
- •1.1. Постановка проблемы
- •1.2. Общие принципы.
- •§2. Методы нулевого порядка одномерной минимизации
- •2.1. Общие положения
- •2.2. Метод равномерного поиска
- •2.3. Метод деления интервала пополам
- •§3. Методы первого и второго порядка
- •3.1. Метод градиентного спуска с постоянным шагом
- •3.2. Метод Ньютона
- •§4. Элементы численных методов задачи условной оптимизации выпуклого программирования
- •4.2. Постановка задачи выпуклого программирования.
- •4.3. Численные методы на основе метода штрафных функций
- •4.4. Метод проекции градиента.
- •Приложение 1. Варианты индивидуальных заданий
- •Задание нп-1
- •Задание нп-2
- •Задание нп-3
- •Задание нп-4
- •Задание нп-5
- •Задание нп-6
- •Задание нп-7
- •Задание нп-8
3.2. Метод Ньютона
В методе Ньютона точки последовательности {Xk} вычисляются по формуле Xk+1=Xk+Dk, где направление спуска Dk определяется для каждого значения k по формуле
Dk=H
(Xk)f(Xk)
(3.1)
Если H(Xk)>0, то формула (3.1) гарантирует выполнение условия f(Xk+1)<f(Xk). Если для каких-то значений k H(Xk) не является положительно определённой, то для соответствующих значений k точка Xk+1 вычисляется по методу градиентного спуска Xk+1=Xkhkf(Xk) с выбором величины hk из условия f(Xkhkf(Xk))<f(Xk). Построение {Xk} заканчивается в точке Xk, для которой выполняются условия завершения, как и в методе градиентного спуска.
Таким образом, алгоритм метода следующий:
1. Задать X0, 1>0, 2>0, k0 предельное число итераций. Найти f(X0) и H(X0).
2. Положить k=0.
3. Вычислить f(Xk).
4. Проверить условие выполнения критерия окончания |f(Xk)|<1:
а) если неравенство выполнено, то расчёт закончен: X*=Xk;
б) если критерий не выполнен, то перейти к шагу 5.
5. Проверить выполнение неравенства kk0:
а) если неравенство выполнено, то расчёт окончен: X*=Xk;
б) если нет, то перейти к шагу 6.
6. Вычислить матрицу H(Xk).
7. Вычислить матрицу H (Xk).
8. Проверить выполнение условия H (Xk)>0:
а) если H (Xk)>0, то перейти к шагу 9;
б) в противном случае перейти к шагу 10, положив Dk=f(Xk).
9. Определить Dk=H (Xk)f(Xk).
10. Определить Xk+1=Xk+hkDk, положив hk=1, если Dk=H (Xk)f(Xk) или выбрав hk из условия f(Xk+1)<f(Xk), если Dk=f(Xk).
11. Проверить условий (Xk+1, Xk)<2 и |f(Xk+1)f(Xk)|<2:
а) если оба условия выполнены при текущем значении k и k1, то расчёт окончен: X*=Xk;
б) если хотя бы одно условие не выполнено, то положить k=k+1 и перейти к шагу 3.
Как и в случае метода градиентного спуска, сходимость метода Ньютона гарантируется для сильно выпуклых функций. Поэтому также необходимо проверять, является ли найденная точка приближением искомой X*.
Пример II. Решить задачу из примера I методом Ньютона.
Решение. Мы уже убедились (при решении примера I), что сходимость итерационного процесса гарантирована. Так что, осталось найти X* и провести его анализ.
I. Найдём Xk.
1. Зададим X0=(1, 1), 1=0,1, 2=0,1, k0=10 и найдём градиент f(X)=(6x1+2x2, 2x1+4x2) и H(X)= (см. решение примера I).
2. Положим k=0.
3.0. Вычислим f(X0)=(8; 6).
4.0. Проверим критерий окончания: |f(X0)|=10>0,1. Переходим к шагу 5.
5.0. Проверим условие k>k0: k=0<10=k0. Переходим к шагу 6.
6.0. Вычислим матрицу H(X0)= .
7.0.
Вычислим матрицу H
(X0)=
=
.
8.0.
Проверим выполнение условия H
(X0)>0.
Так как 1=0,2,
2=
=0,05>0,
то условие выполнено. Переходим к шагу
9.
9.0. Определим D0:
D0=H
(X0)f(X0)=
=
.
10.0. Определим X1=X0+h0D0, полагая h0=1 (так как D0=H (X0)f(X0)): X1=(1; 1)+(1; 1)=(0; 0).
11.0. Проверим условия (X1, X0)<0,1 и |f(X1)f(X0)|<0,1. Имеем
(X1,
X0)=
=
>0,1,
то есть первое условие не выполнено. Полагаем k=1 и переходим к шагу 3.
3.1. Вычислим f(X1)=(0; 0).
4.1. Проверим критерий окончания |f(X1)|<0,1: |f(X1)|=0. Расчёт окончен: X*=X1=(0; 0).
II. Анализ точки X1.
Функция f(x1, x2)=3 +2x1x2+2 является строго выпуклой, так как матрица Гессе постоянна и является положительно определённой. Поэтому точка X1 является точкой локального минимума, а значение f(X1)=0 приближённое значение локального минимума (на самом деле это точное значение локального минимума).
Ответ: точкой локального минимума является точка X*=(0; 0), f(X*)=0 локальный минимум.
