Участник:Сорокин Александр/Метод сопряженных градиентов (Решение СЛАУ): различия между версиями
| Строка 11: | Строка 11: | ||
Метод градиентного спуска основан на стратегии движения в строну, противоположную возрастанию функционала. Оптимальным направлением в этом случае будет антиградиент <math> -\bigtriangledown \phi (x) </math> и двигаться по нему нужно будет до тех пор, пока функционал убывает. <br> | Метод градиентного спуска основан на стратегии движения в строну, противоположную возрастанию функционала. Оптимальным направлением в этом случае будет антиградиент <math> -\bigtriangledown \phi (x) </math> и двигаться по нему нужно будет до тех пор, пока функционал убывает. <br> | ||
Таким образом можно построить метод: <math> x_{i+1} = x_{i} + \alpha_i p_i </math>, где <math> p_i </math> - направление движения, а <math> \alpha_i </math> - величина шага. | Таким образом можно построить метод: <math> x_{i+1} = x_{i} + \alpha_i p_i </math>, где <math> p_i </math> - направление движения, а <math> \alpha_i </math> - величина шага. | ||
Из рассуждений выше понятно что оптимальным является направление <math> p_i = - bigtriangledown \phi (x_{i}) </math>. Величина <math> \alpha_i </math> выбирается из соображений <math> \alpha_i | Из рассуждений выше понятно что оптимальным является направление <math> p_i = - bigtriangledown \phi (x_{i}) </math>. Величина <math> \alpha_i </math> выбирается из соображений <math> \alpha_i \underset{\alpha}{\operatorname{argmin}} \phi (x_i + \alpha p_i) </math>. | ||
=== Вычислительное ядро алгоритма === | === Вычислительное ядро алгоритма === | ||
Версия от 14:06, 22 октября 2017
Свойства и структура алгоритма
Общее описание алгоритма
Метод сопряженных градиентов представляет собой итерационный метод для численного решения системы уравнений с симметричной и положительно определенной матрицей, является итерационным методом Крыловского типа. Основная идея метода заключается в том, чтобы минимизировать на подпространствах Крылова А-норму ошибки.
Математическое описание алгоритма
Пусть необходимо найти решение системы уравнений [math]\displaystyle{ Ax = b }[/math], где [math]\displaystyle{ A^* = A \gt 0 }[/math].
Рассмотрим функционал [math]\displaystyle{ \phi (x) = \frac{1}{2}x^T A x - x^T b }[/math].
Если [math]\displaystyle{ x^* }[/math] это решение задачи минимизации данного функционала, то в этой точке градиент [math]\displaystyle{ \bigtriangledown \phi (x^*) = Ax^* - b }[/math] должен быть равен нулю. Таким образом, минимизируя функционал [math]\displaystyle{ \phi (x) }[/math] мы получим решение исходной системы.
Метод градиентного спуска
Как известно, градиент [math]\displaystyle{ \bigtriangledown \phi (x) }[/math] является направлением наибольшего роста функции.
Метод градиентного спуска основан на стратегии движения в строну, противоположную возрастанию функционала. Оптимальным направлением в этом случае будет антиградиент [math]\displaystyle{ -\bigtriangledown \phi (x) }[/math] и двигаться по нему нужно будет до тех пор, пока функционал убывает.
Таким образом можно построить метод: [math]\displaystyle{ x_{i+1} = x_{i} + \alpha_i p_i }[/math], где [math]\displaystyle{ p_i }[/math] - направление движения, а [math]\displaystyle{ \alpha_i }[/math] - величина шага.
Из рассуждений выше понятно что оптимальным является направление [math]\displaystyle{ p_i = - bigtriangledown \phi (x_{i}) }[/math]. Величина [math]\displaystyle{ \alpha_i }[/math] выбирается из соображений [math]\displaystyle{ \alpha_i \underset{\alpha}{\operatorname{argmin}} \phi (x_i + \alpha p_i) }[/math].