Математика / Численное решение линейных систем
Диагональное предобусловливание сопряжённых градиентов
Диагональный предобусловливатель делит компоненты невязки на диагональ матрицы. Сопряжённые градиенты после этого строят направление в масштабе, учитывающем разные диагональные коэффициенты.
Формула
Масштабирование даёт диагональ из единиц, но собственные числа расходятся при усилении связи c.
Обозначения
- $D$
- диагональная часть A, —
- $A$
- симметричная положительно определённая матрица, —
- $rₖ$
- текущая невязка исходной системы, —
- $zₖ$
- решение Dzₖ=rₖ, —
- $pₖ$
- направление поиска; p₀=z₀, —
- $αₖ$
- длина шага, —
Условия применения
Матрица A вещественная, симметричная и положительно определённая; следовательно, все элементы её диагонали положительны. D фиксируется на весь расчёт. Первое направление равно z₀, а x и r обновляются как x+αp и r−αAp.
Ограничения
Единичная диагональ не гарантирует хорошей обусловленности: сильные связи вне диагонали могут оставить очень малое собственное число. Не следует подавать D⁻¹A как обычную симметричную матрицу в реализацию CG; в исходных координатах нужна рекурсия с rᵀz.
Подробное объяснение
Если у двух уравнений разные диагональные коэффициенты, одинаковые остатки могут требовать совсем разных поправок к неизвестным. Деление rᵢ на aᵢᵢ даёт поправку, которая занулила бы компоненту остатка при выключенных внедиагональных связях.
Математически применяется обычный CG к симметричной матрице B=D⁻¹ᐟ²AD⁻¹ᐟ² с преобразованной правой частью D⁻¹ᐟ²b. Подстановка y=D¹ᐟ²x возвращает вычисления в исходные координаты. Квадрат нормы преобразованной невязки равен rᵀD⁻¹r=rᵀz.
Поэтому в обеих формулах для коэффициентов встречается rᵀz, а умножение на матрицу по-прежнему выполняют с A. Явные матрицы D⁻¹ и D⁻¹ᐟ² не нужны: достаточно сохранить диагональ и поделить компоненты вектора.
При диагональной A симметрично масштабированная матрица равна I и решение получается за один шаг. При A с диагональю 4 и 9 и внедиагональным коэффициентом c матрица B имеет собственные числа 1±c/6. При приближении |c| к 6 меньший корень стремится к нулю, хотя диагональ B остаётся единичной.
Как пользоваться формулой
- Сохраните положительные диагональные элементы A и вычислите r₀ из исходной, ещё не масштабированной системы.
- Поделите каждую компоненту r₀ на соответствующий диагональный элемент и присвойте полученный z₀ направлению p₀.
- Вычислите Apₖ и коэффициент шага через rₖᵀzₖ; обновите xₖ и исходную невязку rₖ.
- Проверьте критерий остановки по b−Ax. Для следующего шага повторите диагональное деление и пересчитайте направление.
Историческая справка
Руководство Templates, изданное SIAM в 1994 году, описывает предобусловливание как часть практического решения больших линейных систем. В нём диагональное масштабирование отнесено к простым предобусловливателям: применение сводится к операциям с диагональными элементами, которые обычно доступны без дополнительного разложения.
В том же 1994 году Джонатан Шевчук изложил предобусловленные сопряжённые градиенты через преобразование исходной задачи. Такой вывод поясняет, почему матрица в преобразованных координатах симметрична, хотя произведение D⁻¹A в исходных координатах обычно несимметрично. В вычислительной записи остаётся решение с D, а квадратные корни из её элементов не требуются.
Историческая линия формулы
Диагональный предобусловливатель часто называют предобусловливателем Якоби. Название отражает использование той же диагональной части, что и в итерации Якоби. В этой схеме диагональное деление только подготавливает направление, а решение уточняется рекурсией сопряжённых градиентов.
Пример
Пусть A=diag(2,8), b=(2,8) и x₀=(0,0). Вычислим первый шаг с диагональным предобусловливателем и проверим его прямой подстановкой. Здесь D=A. Невязка r₀=(2,8), следовательно z₀=p₀=(1,1). Числитель r₀ᵀz₀=2+8=10, знаменатель p₀ᵀAp₀=2+8=10. Значит α₀=1, и x₁=(1,1). Матрица A переводит найденный вектор точно в (2,8), поэтому r₁=0 и новый коэффициент направления не нужен. Абстрактная система не содержит размерных величин. Обычный первый шаг вдоль (2,8) не может дать (1,1) одним скалярным множителем.
Частая ошибка
Берите диагональ исходной A, а не диагональ обратной матрицы. Не заменяйте rᵀz на zᵀz: квадрат нормы возникает в координатах с половинным масштабированием. Для остановки проверяйте исходную невязку, так как малый z на строках с большой диагональю может скрыть существенный остаток.
Практика
Задачи с решением
Один шаг при ненулевой связи
Условие. A имеет диагональ 4 и 9, оба внедиагональных элемента равны 2. b=(4,9), x₀=0. Найдите x₁.
Решение. D⁻¹b=(1,1), A(1,1)=(6,11). Получаем α=(4+9)/(6+11)=13/17 и умножаем на p₀.
Ответ. x₁=(13/17,13/17).
Спектр после масштабирования
Условие. Для той же A найдите спектр B=D⁻¹ᐟ²AD⁻¹ᐟ² и отношение крайних чисел.
Решение. Внедиагональный элемент B равен 2/(2·3)=1/3. На направлениях (1,1) и (1,−1) получаем 1+1/3 и 1−1/3.
Ответ. 4/3 и 2/3; отношение равно 2.
Дополнительные источники
- https://www.netlib.org/utk/papers/templates/report.html
- https://ics.uci.edu/~smyth/courses/cs274/readings/optimization/shewchuk.pdf
Связанные формулы
Математика
Метод сопряжённых градиентов для системы Ax=b
Сопряжённые градиенты решают симметричную положительно определённую систему, сохраняя полезную часть прежнего направления. На каждом шаге достаточно умножения матрицы на вектор.
Математика
Наискорейший спуск для линейной системы: точный шаг
Наискорейший спуск для симметричной положительно определённой системы выбирает длину шага по текущей невязке. Шаг минимизирует квадратичную энергию вдоль направления спуска.
Математика
Метод Якоби для системы линейных уравнений
Метод Якоби строит новое приближение к решению Ax=b, одновременно пересчитывая все неизвестные из значений предыдущего шага. Он удобен для разреженных систем и хорошо показывает, зачем проверять сходимость, а не только выполнять заданное число итераций.