Метод сопряженных градиентов
4.2. Метод сопряженных градиентов
Решаем задачу
.
Пусть
- начальное приближение. Все последующие приближения находим по формуле
(4.12)
Здесь
- «направление спуска».
Для упрощения выкладок бдуем обозначать
. То же для всех остальных величин. Формула (4.12) перепишется в виде
. (4.13)
Положим
, т.е. первый (точнее, нулевой) спуск делаем по антиградиенту, а затем направление выбираем в виде комбинации
Рекомендуемые материалы
, (4.14)
причем
выбираем так, чтобы вектор
был
-сопряжен (А-ортогонален) вектору
, т.е.
. (4.15)
Имеем

откуда находим
. (4.16)
Шаг
для процесса (4.13), как и в методе скорейшего спуска, выбираем из условия минимума функционала
, см. (4.6).

Условие минимума
дает

откуда находим
. (4.17)
Итак, алгоритм решения задачи
методом CG (Conjugate Gradient Method) выглядит так:
1.
. Задаем начальное приближение
и вычисляем невязку
.
2. Выбираем напрвление нулевого шага
.
3. Вычисляем длину нулевого шага
.
4. Вычисляем первое приближение
.
5. В цикле для 
Ø Переобозначим 
Ø Вычисляем невязку 
Ø и параметр
.
Ø Выбираем направление
.
Ø Вычисляем длину шага
.
Ø Определяем новое приближение
.
Видим, что в цикле (5) требуется вычислить 3 скалярных произведения
,
и
, а также 2 раза умножить матрицу на вектор:
. Можно уменьшить вычислительную работу, если по-другому вычислять невязку.
Подействуем оператором
на равенство (4.13):
,
так что
. (4.18)
Кроме того, параметры метода тоже можно вычислять по новым формулам. Для этого вначале требуется получить некоторые формулы.
Рассмотрим

Но из (4.17) следует, что
, поэтому
. (4.19)
Пользуясь этим равенством, покажем, что
(4.20)

Можно показать также, что
. Это значит что все невязки в методе CG взаимно ортогональны. В конечномерном пространстве (
- размерность пространства и количество узлов сетки) существует не более
ненулевых взаимно ортогональных векторов, поэтому все невязки, генерируемые методом CG, будут равны нулю, начиная с некоторой итерации
. Таким образом, при точных вычислениях (без ошибок округления) этод метод сходится самое долгое за N итераций.
Получим теперь модифициованные формулы для итерационных параметров.
Согласно (4.17) числитель формулы для
равен
,
поэтому
. (4.21)
Преобразуем формулу (4.16) для
:
(4.22)
Итак, цикл вычислений в модифицированном алгоритме CG выглядит так.
В лекции "2. Структура ЭВМ" также много полезной информации.
Ø Вычисляем невязку 
Ø и параметр
.
Ø Выбираем направление
.
Ø Вычисляем длину шага
.
Ø Определяем новое приближение
.
В этом алгоритме нужно только один раз умножить матрицу на вектор (
), и вычислть 2 скалярных произведения
. Кроме того, здесь «бесплатно» вычисяется норма невязки
.




















