Участник:Сорокин Александр/Метод сопряженных градиентов (Решение СЛАУ): различия между версиями
Строка 10: | Строка 10: | ||
Как известно, градиент <math> \bigtriangledown \phi (x) </math> является направлением наибольшего роста функции. <br> | Как известно, градиент <math> \bigtriangledown \phi (x) </math> является направлением наибольшего роста функции. <br> | ||
Метод градиентного спуска основан на стратегии движения в строну, противоположную возрастанию функционала. Оптимальным направлением в этом случае будет антиградиент <math> -\bigtriangledown \phi (x) </math> и двигаться по нему нужно будет до тех пор, пока функционал убывает. <br> | Метод градиентного спуска основан на стратегии движения в строну, противоположную возрастанию функционала. Оптимальным направлением в этом случае будет антиградиент <math> -\bigtriangledown \phi (x) </math> и двигаться по нему нужно будет до тех пор, пока функционал убывает. <br> | ||
− | Таким образом можно построить метод: <math> x_{i+1} = x_{i} + \alpha_i p_i </math> | + | Таким образом можно построить следующий итерационный метод: <br> |
+ | # Выберем произвольное начальное приближение <math> x_0 </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 = \underset{\alpha}{\operatorname{argmin}} \phi (x_i + \alpha p_i) </math>. Аналитическую формулу <math> \alpha_i = \frac{\bigtriangledown\phi (x_i)^T \bigtriangledown\phi (x_i)}{\bigtriangledown\phi (x_i)^T A \bigtriangledown\phi (x_i)} = \frac{r_i ^T r_i}{r_i ^T A r_i} </math> можно получить из <math> \frac{d}{d\alpha} \phi (x_i + \alpha p_i) = 0 </math>. | Из рассуждений выше понятно что оптимальным является направление <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>. Аналитическую формулу <math> \alpha_i = \frac{\bigtriangledown\phi (x_i)^T \bigtriangledown\phi (x_i)}{\bigtriangledown\phi (x_i)^T A \bigtriangledown\phi (x_i)} = \frac{r_i ^T r_i}{r_i ^T A r_i} </math> можно получить из <math> \frac{d}{d\alpha} \phi (x_i + \alpha p_i) = 0 </math>. | ||
Версия 17:17, 22 октября 2017
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Метод сопряженных градиентов представляет собой итерационный метод для численного решения системы уравнений с симметричной и положительно определенной матрицей, является итерационным методом Крыловского типа. Основная идея метода заключается в том, чтобы минимизировать на подпространствах Крылова А-норму ошибки.
1.2 Математическое описание алгоритма
Пусть необходимо найти решение системы уравнений [math] Ax = b [/math], где [math] A^* = A \gt 0 [/math].
Рассмотрим функционал [math] \phi (x) = \frac{1}{2}x^T A x - x^T b [/math].
Если [math] x^* [/math] это решение задачи минимизации данного функционала, то в этой точке градиент [math] \bigtriangledown \phi (x^*) = Ax^* - b [/math] должен быть равен нулю. Таким образом, минимизируя функционал [math] \phi (x) [/math] мы получим решение исходной системы.
1.2.1 Метод градиентного спуска
Как известно, градиент [math] \bigtriangledown \phi (x) [/math] является направлением наибольшего роста функции.
Метод градиентного спуска основан на стратегии движения в строну, противоположную возрастанию функционала. Оптимальным направлением в этом случае будет антиградиент [math] -\bigtriangledown \phi (x) [/math] и двигаться по нему нужно будет до тех пор, пока функционал убывает.
Таким образом можно построить следующий итерационный метод:
- Выберем произвольное начальное приближение [math] x_0 [/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 = \underset{\alpha}{\operatorname{argmin}} \phi (x_i + \alpha p_i) [/math]. Аналитическую формулу [math] \alpha_i = \frac{\bigtriangledown\phi (x_i)^T \bigtriangledown\phi (x_i)}{\bigtriangledown\phi (x_i)^T A \bigtriangledown\phi (x_i)} = \frac{r_i ^T r_i}{r_i ^T A r_i} [/math] можно получить из [math] \frac{d}{d\alpha} \phi (x_i + \alpha p_i) = 0 [/math].