Використання методу градієнтного спуску для розв'язку СНР в середовищі програмування Delphi

На відміну від систем лінійних рівнянь не існує прямих методів для розв'язку систем нелінійних рівнянь (СНР) загального вигляду. Лише в окремих випадках систему нелінійних рівнянь можна розв'язати безпосередньо. Наприклад, для випадку двох рівнянь іноді вдається виразити одне невідоме через інше і таким чином звести задачу до вирішення одного нелінійного рівняння відносно однієї невідомої. Для вирішення систем нелінійних рівнянь, зазвичай, використовують ітераційні методи, серед яких найпоширенішими є метод простої ітерації та метод Ньютона. Проте використання даних методів вимагає вибір початкового наближення, при якому б ітераційний процес збігався до шуканого розв'язку. Для того, щоб уникнути даної проблеми, задачу на знаходження розв'язку СНР зводять до задачі на знаходження точки мінімуму функції декількох змінних, координати якої і являтимуться розв'язком СНР. Саме такий підхід і реалізує розглядуваний нами delphi-проект. В якості методу, для визначення точки мінімуму програма використовує метод градієнтного спуску. Більш детальну інформацію про застосування даного методу для рішення систем нелінійних рівнянь можна знайти за посиланням Розв'язок систем нелінійних рівнянь за методом градієнтного спуску.

Читати повністю

Розв'язок системи нелінійних рівнянь за методом градієнтного спуску

Основним недоліком методу Ньютона чи методу простої ітерації (послідовних наближень) при знаходженні розв'язку системи нелінійних рівнянь (СНР) являється процес вдалого вибору початкового наближення, при якому б ітераційний процес даних методів був збіжний. Для того, щоб уникнути даної проблеми, можна скористоатись будь-яким з оптимізаційних методів мінімізації функції багатьох змінних. Серед методів даної групи розглянемо метод найшвидшого спуску (градієнтний метод). Основна ідея даного методу полягає у зведенні задачі на знаходження розв'язку СНР до відшукання точки мінімуму функції декількох змінних, яка складається з суми квадратів функцій, які містяться в лівій частині рівнянь заданої системи.

Розглянемо даний процес більш детально. Для зручності, візьмемо систему, яка складається з двох нелінійних рівнянь з двома невідомими:

Розв'язок системи нелінійних рівнянь

Далі, як було вище сказано, з функцій gradientnuj_metod_snar2 та порн системи (1) утворюємо нову функцію, яка приймає насутпний вигляд: gradientnuj_metod_snar4. Виходячи з того, що дана функція завжди є додатною, то для неї знайдеться деяка точка Розв'язок системи нелінійних рівнянь, така що gradientnuj_metod_snar6. Отже, якщо тим чи іншим способом вдається отримати точку, яка мінінізує функцію gradientnuj_metod_snar7 і якщо при цьому виявиться, що gradientnuj_metod_snar8, то виходячи з того, що

Читати повністю