Метод Гаусса-Зейделя СЛАУ: формулы, сходимость, сравнение с Якоби

Метод Гаусса–Зейделя - итерационный способ решения системы линейных алгебраических уравнений . В отличие от прямых методов (например, исключение Гаусса с обратным ходом), он строит последовательность приближений , сходящуюся к точному решению, и применяется там, где матрица большая, разреженная и плохо помещается в память для прямого LU-разложения: дискретизация уравнения Лапласа, метод конечных элементов, задачи теплопроводности.
Постановка задачи
Дана система из уравнений с неизвестными, где , . Считаем, что для всех - иначе соответствующее уравнение нужно переставить с другим, где диагональный элемент ненулевой. Итерационные методы стартуют с произвольного начального приближения (обычно нулевой вектор) и на каждом шаге уточняют все компоненты вектора.
Расщепим в сумму трёх матриц: , где - диагональ, - строго нижнетреугольная часть, - строго верхнетреугольная. Якоби решает , метод Гаусса–Зейделя - . Разница в одном символе перевешивается тем, что Гаусс–Зейдель использует уже обновлённые компоненты текущей итерации.
Идея последовательного обновления
Покомпонентная формула метода Гаусса–Зейделя:
Ключевой момент - в первой сумме под стоят уже пересчитанные на текущем шаге компоненты . Когда мы доходим до , у нас уже есть , и мы подставляем именно его, а не «старое» значение . На доступны и , и так далее. По сути, мы переписываем массив на месте - это удобно с точки зрения памяти: достаточно одного вектора длины , тогда как Якоби требует двух (старого и нового).
Сравнение с методом Якоби
Метод Якоби в покомпонентной форме:
Все компоненты считаются на основе одного и того же «старого» вектора , поэтому порядок обновления неважен и итерация легко распараллеливается. Однако «свежая» информация о , уже посчитанной на этом же шаге, игнорируется. Гаусс–Зейдель эту информацию использует и, как правило, сходится примерно вдвое быстрее по числу итераций для одного и того же класса матриц. Платой становится последовательность вычислений: при простой реализации компоненты считаются строго по порядку , и параллелить «в лоб» нельзя. На практике используют red–black упорядочение (как в шахматной доске), чтобы внутри одного «цвета» компоненты были независимы и считались параллельно.
Достаточные условия сходимости
Метод Гаусса–Зейделя сходится не для любой невырожденной матрицы. Два часто проверяемых достаточных условия:
- Диагональное преобладание по строкам: для всех . Если выполнено строго хотя бы для одной строки и нестрого для остальных, метод сходится при любом стартовом .
- Симметрия и положительная определённость (то есть и для всех ненулевых ). В этом случае Гаусс–Зейдель сходится монотонно по энергетической норме, чего нельзя гарантировать для Якоби.
Если ни одно из условий не выполнено, нужно смотреть спектральный радиус матрицы перехода. Записав одну итерацию как , для Гаусса–Зейделя получим матрицу перехода . Метод сходится тогда и только тогда, когда , где - спектральный радиус (модуль наибольшего по модулю собственного значения). Чем меньше , тем быстрее сходимость: число итераций для уменьшения ошибки в раз приблизительно равно .
Скорость сходимости и спектральный радиус
Для метода Якоби матрица перехода - , для Гаусса–Зейделя - . Для широкого класса задач (так называемые согласованно упорядоченные матрицы - например, дискретизация Лапласа на регулярной сетке) выполняется красивое соотношение Янга: . Это значит, что одна итерация Гаусса–Зейделя даёт такое же уменьшение ошибки, как две итерации Якоби. Для матрицы , типичной для конечно-разностной дискретизации, это разница в десятки тысяч итераций.
Но даже Гаусс–Зейдель плох, когда близко к . Для дискретизации уравнения Пуассона на сетке имеем , где - шаг сетки. Удваивая разрешение, мы вчетверо увеличиваем число итераций для достижения той же точности - это уже неприемлемо для больших сеток, и нужны методы посерьёзнее: SOR, сопряжённые градиенты, многосеточные методы.
SOR-релаксация и параметр
Метод последовательной верхней релаксации (Successive Over-Relaxation, SOR) - естественное обобщение Гаусса–Зейделя с одним параметром . Формула:
При это в точности Гаусс–Зейдель. При (over-relaxation) мы «перешагиваем» через точку, которую дал бы Гаусс–Зейдель, в надежде быстрее догнать предел. При (under-relaxation) - наоборот, делаем меньшие шаги; иногда это спасает от расходимости. Метод сходится при (необходимое условие - Острогорский–Райх), а для симметричных положительно определённых - это же условие и достаточное.
Оптимальный для модельных задач
Для согласованно упорядоченных матриц оптимальное значение даётся формулой:
При оптимальном спектральный радиус SOR равен . Для дискретизации Пуассона на сетке получаем , и число итераций для нужной точности падает с (Гаусс–Зейдель) до - на сетке это разница между миллионом и тысячей итераций.
На практике часто неизвестен, и подбирают численно: пробуют несколько значений в диапазоне – с шагом и смотрят, на каком метод сходится за меньшее число итераций.
Типовые применения
Гаусс–Зейдель и его варианты популярны в следующих задачах:
- Метод конечных элементов (МКЭ) для эллиптических уравнений (упругость, теплопроводность, диффузия). Матрица жёсткости разреженная, симметричная положительно определённая.
- Метод конечных разностей для уравнения Лапласа / Пуассона на регулярной сетке. Каждый узел связан с четырьмя (в 2D) или шестью (в 3D) соседями.
- Сглаживатель в многосеточных методах. Здесь Гаусс–Зейдель используется не до сходимости, а 2–4 итерации на каждом уровне сетки - он быстро гасит высокочастотные ошибки.
- Релаксация в физических симуляциях: распределение электрического потенциала, гидродинамика несжимаемой жидкости (через уравнение для давления).
Типовые учебные задачи
В курсах численных методов чаще всего встречаются три задачи: вручную провести 2–3 итерации Гаусса–Зейделя на системе или , проверить выполнение условия диагонального преобладания и сравнить число итераций до достижения точности с методом Якоби на той же системе. Полезно также проследить, как меняется для одной и той же системы при перестановке строк - диагональное преобладание зависит от порядка уравнений.
Частые ошибки
- Применить метод к системе с нулём на диагонали - без предварительной перестановки строк формула даст деление на ноль.
- Перепутать, какие компоненты «свежие», и считать всё с предыдущего вектора - это превратит метод обратно в Якоби.
- Объявить метод расходящимся после 5–10 итераций. Для матриц со спектральным радиусом нужны сотни итераций даже для умеренной точности.
- Использовать SOR с - метод гарантированно расходится.
- Брать критерий остановки без нормировки. На больших относительная ошибка окажется заметной, нужно .
FAQ
Почему Гаусс–Зейдель быстрее Якоби, если формула почти та же? Каждая компонента считается уже с использованием обновлённых . Это «свежая» информация, и она ускоряет распространение поправок по системе. Для модельных задач спектральный радиус матрицы перехода в квадрате меньше, что эквивалентно удвоенной скорости сходимости.
Что делать, если диагональное преобладание не выполнено? Сначала попробовать переставить строки (или строки и столбцы) так, чтобы максимальные по модулю элементы оказались на диагонали - это аналог поиска ведущего элемента. Если и после этого преобладания нет, проверить, не симметрична ли матрица и не положительно ли определена - этого тоже достаточно. В крайнем случае - посчитать численно и убедиться, что он меньше .
Можно ли распараллелить Гаусс–Зейдель? Не «в лоб» - компоненты считаются последовательно. Но можно использовать red–black упорядочение: в дискретизации Лапласа разбить узлы на «красные» и «чёрные» в шахматном порядке. Внутри одного цвета узлы между собой не связаны, и пересчёт всех «красных» - параллельный, потом всех «чёрных» - тоже параллельный. На GPU это даёт значительное ускорение.
Коротко
Метод Гаусса–Зейделя - итерационный метод для , использующий уже обновлённые компоненты на текущем шаге. Достаточные условия сходимости - диагональное преобладание или симметричная положительно определённая матрица. Сходится примерно вдвое быстрее Якоби по числу итераций. Обобщение с параметром (SOR) при оптимальном выборе радикально ускоряет метод для задач с большим спектральным радиусом, типичных для дискретизации Лапласа.
Читайте также

Метод Якоби решение СЛАУ: формулы, сходимость, пример
Метод Якоби для решения СЛАУ Ax = b: итерационные формулы, условие диагонального преобладания, спектральный радиус, сравнение с Гауссом–Зейделем и пошаговый пример.

LU-разложение матрицы алгоритм: схема и пример
LU-разложение матрицы: алгоритм Гаусса для разложения A = LU, выбор ведущего элемента и P, решение СЛАУ через прямую и обратную подстановку, вычисление определителя.

Алгоритм Рабина-Карпа: поиск подстроки за O(n+m)
Разбираем алгоритм Рабина-Карпа: как полиномиальный хеш и скользящее окно ускоряют поиск подстроки до O(n+m) в среднем, почему бывают ложные совпадения и при чём тут плагиат.