Метод Зейделя или метод Якоби: в чём разница и что быстрее
Коротко: Зейдель быстрее там, где сходятся оба метода: на системе 2x + y = 3, x + 2y = 0 он добрался до 10⁻⁶ за 11 итераций против 21 у Якоби. Но выбор не всегда в его пользу: симметричные положительно определённые матрицы — стихия Зейделя, GPU — стихия Якоби, а на матрице [[1, 2], [2, 1]] расходятся оба, причём Зейдель вдвое агрессивнее.
Две формулы отличаются одним индексом. В методе Якоби все компоненты очередного приближения считаются из старых: подставил вектор прошлого шага целиком — получил новый вектор разом. В методе Зейделя компоненты обновляются по очереди, и только что посчитанная величина немедленно идёт в дело при вычислении соседней. На бумаге — мелочь. На практике — вдвое меньше итераций, потерянный параллелизм и пара матриц, на которых оба метода дружно летят в пропасть. Ниже — таблицы итераций с точностью до третьего знака, счёт до , спектральные радиусы двух показательных матриц и честный ответ на вопрос «кто быстрее».
Обозначения всюду одинаковые: матрицу системы раскладывают в сумму A = D + L + U, где D — диагональ, L и U — строгие нижний и верхний треугольники. Оба метода — итерационные в строгом смысле слова, см. термин итерационный метод: они не дают ответа за конечное число шагов, а строят последовательность приближений, сходящуюся к решению при удачной матрице. Общая механика разобрана в уроке численные методы для СЛАУ; рядом стоит прямой метод Гаусса — конечный, но дорогой для больших разреженных систем, ради которых итерации и придуманы.
| Критерий | Метод Якоби | Метод Зейделя |
|---|---|---|
| Обновление | все компоненты из старого вектора, одновременно | по очереди, свежие значения идут в ход сразу |
| Итерационная матрица | ||
| Гарантии сходимости | строгое диагональное преобладание | то же плюс все симметричные положительно определённые матрицы |
| Скорость | множитель за итерацию | обычно — заметно быстрее |
| Параллелизм | идеален: компоненты независимы, ложится на GPU | строгая очередь; нужен красно-чёрный порядок обновления |
| Память | два массива: старый и новый векторы | один массив с перезаписью на месте |
| Типичная беда | ползучая сходимость при близком к 1 | расходится быстрее Якоби там, где не сходятся оба |
Одновременные или последовательные обновления: в чём разница на бумаге#
Якоби в матричной записи:
Зейдель:
Расшифруем словами. У Якоби шаг начинается с полного среза старого вектора: пока не посчитаны все компоненты нового, шаг не закончен, поэтому нужны два массива памяти. У Зейделя массив один — старые значения перезаписываются по мере готовности. Обратная сторона та же: вторую компоненту не посчитать, пока не готова первая. Вычислительная цепочка жёсткая, компонента за компонентой, слева направо. Это и есть вся разница — дальше она только умножается на свойства матрицы.
Когда это вообще сходится: преобладание и симметрия#
Условие, закрывающее оба метода сразу, — строгое диагональное преобладание: в каждой строке диагональный элемент по модулю больше суммы модулей остальных, . Такое отображение сжимающее, и оба метода сходятся с любого стартового вектора. Проверка занимает минуту: пробежали по строкам — и понятно, с чем имеете дело. Учебный пример — матрица [[2, 1], [1, 2]] из численного примера ниже: диагональная двойка перекрывает единицу в каждой строке.
Для Зейделя список гарантий длиннее. Если матрица симметрична и положительно определена, метод Гаусса—Зейделя сходится всегда — преобладание не требуется, хватило положительной определённости. У Якоби на тех же матрицах своё условие: должна быть положительно определённой матрица 2D − A, и выполняется оно не всегда. Практический вывод: на симметричных задачах (регуляризация, сети, конечные элементы) Зейдель — выбор по умолчанию, а Якоби требует отдельной проверки. На несимметричных матрицах всё решает спектральный радиус — сейчас посчитаем его руками.
Числами: система 2x + y = 3, x + 2y = 0#
Точное решение — (2, −1), проверяется подстановкой. Разрешаем первое уравнение относительно x, второе относительно y: , . Это и есть обе итерационные формулы; вся разница между методами — в том, какой x подставлять в правую часть для y. Стартуем с нулевого вектора и считаем пять итераций с точностью до трёх знаков.
| k | Якоби: x | Якоби: y | Зейдель: x | Зейдель: y |
|---|---|---|---|---|
| 1 | 1,500 | 0,000 | 1,500 | −0,750 |
| 2 | 1,500 | −0,750 | 1,875 | −0,938 |
| 3 | 1,875 | −0,750 | 1,969 | −0,984 |
| 4 | 1,875 | −0,938 | 1,992 | −0,996 |
| 5 | 1,969 | −0,938 | 1,998 | −0,999 |
Смотрите, как ведёт себя ошибка в максимум-норме. У Якоби она делится пополам за итерацию: 1; 0,5; 0,25; 0,125; 0,0625 — геометрическая прогрессия со знаменателем 0,5. У Зейделя — делится на четыре: 0,5; 0,125; 0,031; 0,008. Двойка в знаменателе против четвёрки — и на дистанции это ровно вдвое меньше итераций: до Якоби добирается за 21 шаг, Зейдель — за 11. Свежая y уже на первой итерации ускорила Зейдель, и фора сохраняется до самого конца.
Спектральный радиус: честный подсчёт для матрицы [[1, 2], [2, 1]]#
Красивая матрица той же размерности, но диагональ теперь перекрыта: единица против двойки в каждой строке. Преобладания нет, о гарантиях речи нет — остаётся мерить спектральный радиус итерационных матриц. Для Якоби это , для Зейделя ; метод сходится тогда и только тогда, когда радиус меньше единицы.
Считаем; для матрицы 2×2 собственные числа берутся аналитически. У Якоби T = [[0, −2], [−2, 0]] — собственные числа плюс-минус два, значит . У Зейделя T = [[0, −2], [0, 4]] — матрица треугольная, собственные числа сидят на диагонали: 0 и 4, значит . Честный ответ на вопрос «кто сходится»: никто. Оба радиуса больше единицы, причём Зейдель улетает вдвое агрессивнее: за одну итерацию его ошибка растёт вчетверо против удвоения у Якоби.
Мораль ровно та, которой пугают преподаватели: «Зейдель быстрее» — не универсальное свойство метода, а свойство пары «матрица и оба метода». Там, где сходятся оба (для матриц со свойством согласованности обычно ), Зейдель выигрывает по числу итераций — как в таблице выше: 11 против 21. Где не сходятся оба — он просто быстрее доходит до переполнения. Проверяйте радиус, а не надейтесь на имя метода. Кстати, спасение иногда в одном движении: переставьте строки системы местами — получится [[2, 1], [1, 2]], на которой оба метода сходятся.
Число итераций связано с радиусом простой оценкой: чтобы уменьшить ошибку в раз, нужно примерно шагов. Радиус 0,5 — около шагов; радиус 0,9 — уже около . Отсюда диагноз «метод есть, а толку нет»: формально сходящаяся матрица с потребует сотен итераций, и лечится это не терпением, а переупорядочением уравнений или предобусловливанием. Как чувствительность задачи связана с её числами — в терминах число обусловленности.
- Шаг 1: разложите матрицу на D, L, U и проверьте диагональное преобладание. Есть строгое — оба метода сходятся, дальше можно не считать.
- Шаг 2: матрица симметрична и положительно определена? Тогда Зейдель сходится всегда; для Якоби отдельно проверьте положительную определённость 2D − A.
- Шаг 3: посчитайте радиусы: для и для . Радиус меньше единицы — метод жив, больше — мёртв при любом начальном приближении.
- Шаг 4: из живых кандидатов берите того, у кого больше; при равенстве решайте железо: параллельная машина — Якоби, последовательная — Зейдель.
Параллелизм: где Якоби отыгрывается#
Итерация Якоби embarrassingly parallel: каждая компонента нового вектора считается независимо — это матрично-векторное умножение, миллион потоков GPU без синхронизации. Поэтому Якоби живёт в графических решателях и сеточных методах, где шагов много, а каждый шаг дешёвый. У Зейделя компонента ждёт предыдущую — цепочка, которая на видеокарте оборачивается простоем тысяч ядер. Компромисс известен: красно-чёрное упорядочение. Узлы сетки красят в шахматном порядке, обновляют сначала все красные (они друг от друга не зависят), затем все чёрные. Выходит гибрид: параллелизм Якоби внутри цвета, зейделевский характер сходимости между цветами.
| Ситуация | Что брать | Почему |
|---|---|---|
| симметричная положительно определённая матрица | Зейдель | сходится всегда: без преобладания и без проверки радиуса |
| большая разреженная система на GPU | Якоби | обновления независимы; для ускорения сходимости — красно-чёрный Зейдель |
| оба метода сходятся, дорого каждое приближение | Зейдель | : в примере 11 итераций против 21 |
| памяти впритык | Зейдель | один массив вместо двух — старый вектор перезаписывается на месте |
| матрица [[1, 2], [2, 1]] и её родственники | ни один | , : лечится перестановкой строк или другим методом |
| радиус у края единицы () | менять подход | сотни итераций; спасают переупорядочение и предобусловливание |
Для матрицы [[1, 2], [2, 1]] посчитали и . Что делать?
Система 2x + y = 3, x + 2y = 0, старт с нулей. Почему у Зейделя уже на первой итерации y = −0,75, а у Якоби y = 0?
Частые вопросы
Что сходится быстрее: метод Зейделя или метод Якоби?
На матрицах, где сходятся оба, обычно Зейдель: его радиус равен квадрату якобиевского, и число итераций падает примерно вдвое. На системе 2x + y = 3, x + 2y = 0 Зейдель достиг точности за 11 итераций против 21 у Якоби. Правило не универсальное: на матрице [[1, 2], [2, 1]] расходятся оба, причём Зейдель — вдвое агрессивнее.
Какое условие сходимости у метода Зейделя?
Необходимое и достаточное — спектральный радиус матрицы меньше единицы. Достаточные условия попроще: строгое диагональное преобладание всех строк либо симметричная положительно определённая матрица — во втором случае метод сходится всегда. Проверка радиуса занимает пару строк кода, преобладание видно глазами прямо по строкам матрицы.
Когда метод Якоби лучше метода Зейделя?
Когда важен параллелизм. Компоненты итерации Якоби независимы, поэтому метод идеально ложится на GPU и кластеры, а Зейдель тянет последовательную цепочку зависимостей. Компромисс — красно-чёрное упорядочение узлов сетки: внутри цвета параллелизм полный, между цветами сохраняется характер Зейделя. Бонус Якоби — простота отладки: смешать старые и новые значения в нём труднее.
Что делать, если метод Зейделя не сходится?
Сначала посчитайте спектральный радиус: если он больше единицы, итерации обречены при любом начальном приближении. Попробуйте переставить строки системы — преобладание иногда появляется после перестановки. Дальше варианты: релаксированный метод с параметром из интервала от 0 до 1, симметризация матрицы или другой алгоритм — например, метод минимальных невязок; на плотных матрицах честнее прямой метод Гаусса.
Следующий шаг: возьмите матрицу из своей контрольной и прогоните четыре шага проверки из списка выше — радиус считается в пять строк кода. Тренировка — в тренажёре по СЛАУ и тренажёре численных методов, задачи с разборами — в задачах по СЛАУ и разборе как решать СЛАУ. Прямые конкуренты итерациям — в сравнении Гаусс против LU-разложения, базовое определение — в терминах система линейных уравнений.