Градієнтні методи — чисельні методи рішення з допомогою градієнта задач, що зводяться до знаходження екстремумів функції.
Завдання рішення системи рівнянь:
(1)
з
еквівалентна задачі мінімізації функції
(2)
або якій-небудь іншій зростаючій функції від абсолютних величин
нев'язок (помилок)
,
. Завдання знаходження мінімуму (або максимуму) функції
змінних і сама по собі має велике практичне значення.
Для вирішення цієї задачі ітераційними методами починають з довільних значень
і будують послідовні наближення:
або покоординатно:
(3)
які зводяться до деякого рішенням
при
.
Різні методи відрізняються вибором «напрямку» для чергового кроку, тобто вибором відносин
.
Величина кроку (відстань, на яку треба піднятися в заданому напрямку в пошуках екстремуму) визначається значенням параметра
, який мінімізує величину
як функцію від
. Цю функцію зазвичай апроксимують її розкладанням у ряд Тейлора або інтерполяційним многочленом з трьох-п'яти вибраних значень
. Останній метод застосуємо для знаходження max і min таблично заданої функції
Основна ідея методів полягає в тому, щоб йти в напрямку найшвидшого спуску, а цей напрямок задається антиградієнтом
:
де
вибирається:
- сталою, в цьому випадку метод може розходитися;
- дробовим кроком, тобто довжина кроку в процесі спуску ділиться на деяке число;
- якнайскорішим спуском:
![{\displaystyle \lambda ^{[j]}=\mathrm {argmin} _{\lambda }\,F({\vec {x}}^{[j]}-\lambda ^{[j]}\nabla F({\vec {x}}^{[j]}))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7760fd1ca4bf7978aa9caa66912cada3108aa132)
Вибирають
, де всі похідні обчислюються при
, і зменшують довжину кроку
по мірі наближення до мінімуму функції
.
Для аналітичних функцій
і малих значень
тейлорівський розклад
дозволяє вибрати оптимальну величину кроку
(5)
де всі похідні обчислюються при
. Параболічна інтерполяція функції
може виявитися більш зручною.
- Задаються початкове наближення і точність розрахунку
![{\displaystyle {\vec {x}}^{0},\quad \epsilon }](https://wikimedia.org/api/rest_v1/media/math/render/svg/363f79bb4c8ef457beb6fa0d9debaeffc21e735e)
- Розраховують
, де ![{\displaystyle \lambda ^{[j]}=\mathrm {argmin} _{\lambda }\,F({\vec {x}}^{[j]}-\lambda ^{[j]}\nabla F({\vec {x}}^{[j]}))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7760fd1ca4bf7978aa9caa66912cada3108aa132)
- Перевіряють умову зупинки:
- Якщо
, то
і перехід до кроку 2.
- Інакше
і зупинка.
Метод покоординатного спуску Гауса — Зейделя
[ред. | ред. код]
Цей метод названий за аналогією з методом Гауса — Зейделя для розв'язання системи лінійних рівнянь.
Покращує попередній метод за рахунок того, що на черговій ітерації спуск здійснюється поступово уздовж кожної з координат, однак тепер необхідно обчислювати нові
раз за один крок.
- Задаються початкове наближення і точність розрахунку
![{\displaystyle {\vec {x}}_{0}^{0},\quad \varepsilon }](https://wikimedia.org/api/rest_v1/media/math/render/svg/a423b311678a1e6c290482f6b1ddbaa1ce387849)
- Розраховують
, де ![{\displaystyle \lambda _{i}^{[j]}=\mathrm {argmin} _{\lambda }\,F\left({\vec {x}}_{i-1}^{[j]}-\lambda ^{[j]}{\frac {\partial F({\vec {x}}_{i-1}^{[j]})}{\partial x_{i}}}{\vec {e}}_{i}\right)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/db50a71a29deb83109fd16d970472a2ef52b1228)
- Перевірють умову зупинки:
- Якщо
, то
і перехід до кроку 2.
- Інакше
і зупинка.
Метод спряжених градієнтів ґрунтується на поняттях прямого методу багатовимірної оптимізації — методу спряжених напрямів.
Застосування методу до квадратичних функцій
визначає мінімум за
кроків.
- Задаються початковим наближенням і похибкою:
![{\displaystyle {\vec {x}}_{0},\quad \varepsilon ,\quad k=0}](https://wikimedia.org/api/rest_v1/media/math/render/svg/71ba0b309eff57375f201bf04a5453b343f2aca5)
- Розраховують початковий напрямок:
![{\displaystyle j=0,\quad {\vec {S}}_{k}^{j}=-\nabla f({\vec {x}}_{k}),\quad {\vec {x}}_{k}^{j}={\vec {x}}_{k}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/12b38fad1aed65efb54733e080d82d157f9acab8)
- Якщо
або
, то
і зупинка.
- Інакше
- якщо
, то
і перехід до 3;
і перехід до 2.
- Акулич И.Л. Математическое программирование в примерах и задачах: Учеб. пособие для студентов эконом. спец. вузов. — М. : Высш. шк., 1986.
- Гилл Ф., Мюррей У., Райт М. Практическая оптимизация. Пер. с англ. — М. : Мир, 1985.
- Коршунов Ю.М., Коршунов Ю.М. Математические основы кибернетики. — М. : Энергоатомиздат, 1972.
- Максимов Ю.А.,Филлиповская Е.А. Алгоритмы решения задач нелинейного программирования. — М. : МИФИ, 1982.
- Максимов Ю.А. Алгоритмы линейного и дискретного программирования. — М. : МИФИ, 1980.
- Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. — М. : Наука, 1970. — С. 575-576.