Нехай потрібно знайти чисельний розв’язок системи рівнянь використовуючи метод найшвидшого спуску (градієнтний метод). Для цього, систему (1) перепишемо у наступному вигляді:
або в матрично-векторній формі , де
– матриця коефіцієнтів при невідомих системи (1);
– вектор-стовпець вільних члені;
– вектор-стовпець невідомих.
Тоді, згідно з методом найшвидшого спуску, кожне наступне наближення до рішення системи рівнянь будемо шукати у наступному вигляді:
де – наближення отримане на k-й ітерації градієнтного методу;
– транспонована матриця Якобі;
– вектор нев’язок, який на кожній ітерації обчислюється за формулою
і параметр
визначається наступним чином:
Нагадаємо, що матриця Якобі вектор-функції – це матриця, яка склажається з частинних похідних цих функцій, тобто матриця насутпного вигляду:
Неважко переконатися, що для системи (3) матриця Якобі рівна:
Як і для методу простої ітерації, достатньою умовою збіжності градієнтного методу є переважання діагональних елементів. В якості нульового наближення можна взяти .
Також відмітимо, що у формулі (6) використовується скалярний добуток двох векторів, який визначається за наступною формулою:
Зауваження: у методі найшвидшого спуску ітераційний процес, зазвичай, продовжується до тих пір, поки на деякому кроці модуль вектора нев’язок не стане меншим або рівним від деякого як завгодно малого додатного числа (
).
Розв’язок системи рівнянь використовуючи метод найшвидшого спуску – приклад:
Використовуючи розглянутий вище градієнтний метод, з точністю , розв’язати систему рівнянь наступного вигляду:
Для цього, перепишемо задану систему у зручному для ітерації вигляду та виберемо вектор нульового (початкового) наближення:
На наступному кроці, обчисливши матрицю Якобі (збігається з матрицею коефіцієнтів заданої системи) і транспоновану до неї
, вектор нев’язок
та параметр
, переходимо до обчислення наступного наближення до шуканого розв’язку:
Далі, обчисливши елементи вектора нев’язок , перевіримо виконання умови зупинки:
Виходячи з того, що для отриманого на першій ітерації наближення, умова зупинки не виконується, продовжуємо ітераційний процес далі і на п’ятій ітерації отримуємо значення, для яких задану точність досягнуто і які приймаємо в якості розв’язку заданої системи рівнянь.
Що таке differense(X, X0, eps, n) ?!?!?!
difference(X, X0, eps, n) – функція, яка відповідає за зупинку ітераційного процесу методу найшвидшого спуску.
Чи помилки точно ніде нема? Запрограмував цей алгоритм по блок-схемам, проте алгоритм не працює.
Виходячи з того, що по даних блок-схемах було реалізовано delphi-проект Використання методу найшвидшого спуску при знаходженні розв’язку СЛАР, який працює безпомилково, то алгоритм можна вважати працездатним.