EssayAI
Блог
Блог
Математика и алгоритмы

Метод Якоби решение СЛАУ: формулы, сходимость, пример

3 апреля 2026Время чтения: 8 минут
#метод Якоби#итерационные методы#СЛАУ#диагональное преобладание#сходимость
Метод Якоби решение СЛАУ: формулы, сходимость, пример

Метод Якоби - простейший итерационный способ решения системы линейных алгебраических уравнений Ax=bAx = b. Вместо прямого исключения переменных он строит последовательность приближений x(0),x(1),x(2),x^{(0)}, x^{(1)}, x^{(2)}, \ldots, сходящуюся к точному решению. Метод незаменим, когда матрица AA большая и разреженная: дискретизация уравнений теплопроводности, метод конечных разностей, задачи электростатики - там прямое LU-разложение слишком дорого по памяти, а каждая итерация Якоби стоит лишь одно умножение матрицы на вектор.

Постановка задачи

Дана система Ax=bAx = b из nn уравнений с nn неизвестными, где ARn×nA \in \mathbb{R}^{n \times n}, bRnb \in \mathbb{R}^n. Предполагаем, что все диагональные элементы ненулевые: aii0a_{ii} \neq 0 для каждого i=1,,ni = 1, \ldots, n. Если это не так, уравнения переставляют, чтобы на диагонали оказались ненулевые (а лучше - наибольшие по модулю) коэффициенты. Итерация стартует с произвольного начального вектора x(0)x^{(0)}, чаще всего нулевого, и на каждом шаге пересчитывает все компоненты сразу.

Идея метода Якоби

Выразим из ii-го уравнения переменную xix_i через все остальные:

xi=1aii(bijiaijxj).x_i = \frac{1}{a_{ii}}\left(b_i - \sum_{j \neq i} a_{ij} x_j\right).

Если подставить в правую часть значения с предыдущего шага, получим итерационную формулу метода Якоби:

xi(k+1)=1aii(bijiaijxj(k)),i=1,2,,n.x_i^{(k+1)} = \frac{1}{a_{ii}}\left(b_i - \sum_{j \neq i} a_{ij} x_j^{(k)}\right), \quad i = 1, 2, \ldots, n.

Принципиальная особенность: все компоненты нового вектора x(k+1)x^{(k+1)} вычисляются на основе одного и того же «старого» вектора x(k)x^{(k)}. Порядок обхода ii неважен, и формула легко распараллеливается - каждая компонента считается независимо. Это и отличает Якоби от метода Гаусса–Зейделя, где уже обновлённые на текущем шаге значения сразу идут в дело.

Матричная форма и матрица перехода

Расщепим AA на сумму трёх матриц: A=D+L+UA = D + L + U, где DD - диагональ, LL - строго нижнетреугольная часть, UU - строго верхнетреугольная. Тогда одна итерация Якоби записывается как Dx(k+1)=b(L+U)x(k)D x^{(k+1)} = b - (L + U)x^{(k)}, откуда

x(k+1)=D1(L+U)x(k)+D1b=TJx(k)+c.x^{(k+1)} = -D^{-1}(L + U)\, x^{(k)} + D^{-1} b = T_J\, x^{(k)} + c.

Матрица TJ=D1(L+U)T_J = -D^{-1}(L + U) называется матрицей перехода (итерационной матрицей) метода Якоби, а вектор c=D1bc = D^{-1} b. Это запись стандартного вида x(k+1)=Tx(k)+cx^{(k+1)} = T x^{(k)} + c, к которому сводятся все простые итерационные методы. Поведение метода целиком определяется свойствами матрицы TJT_J: точное решение xx^{*} является её неподвижной точкой (x=TJx+cx^{*} = T_J x^{*} + c), а ошибка e(k)=x(k)xe^{(k)} = x^{(k)} - x^{*} эволюционирует как e(k+1)=TJe(k)e^{(k+1)} = T_J\, e^{(k)}, то есть e(k)=TJke(0)e^{(k)} = T_J^{\,k}\, e^{(0)}.

Условие сходимости

Из соотношения e(k)=TJke(0)e^{(k)} = T_J^{\,k}\, e^{(0)} видно: метод сходится при любом x(0)x^{(0)} тогда и только тогда, когда TJk0T_J^{\,k} \to 0 при kk \to \infty. Это эквивалентно условию на спектральный радиус:

ρ(TJ)=maxiλi<1,\rho(T_J) = \max_i |\lambda_i| < 1,

где λi\lambda_i - собственные значения TJT_J, а ρ\rho - модуль наибольшего из них. Спектральный радиус - точный критерий, но его дорого считать. На практике пользуются достаточным условием - диагональным преобладанием по строкам:

aii>jiaijдля всех i.|a_{ii}| > \sum_{j \neq i} |a_{ij}| \quad \text{для всех } i.

Если оно выполнено, то TJ<1\|T_J\|_\infty < 1, спектральный радиус заведомо меньше единицы, и метод сходится при любом стартовом приближении. Условие лишь достаточное: метод может сходиться и без диагонального преобладания, но тогда сходимость нужно проверять через ρ(TJ)\rho(T_J) напрямую. Подробнее общая теория простой итерации разобрана в статье про сходимость метода простой итерации.

Диагональное преобладание зависит от порядка уравнений. Одна и та же система может не иметь преобладания при исходной нумерации строк и приобрести его после перестановки - это аналог выбора ведущего элемента.

Скорость сходимости

Ошибка убывает примерно как e(k)ρ(TJ)ke(0)\|e^{(k)}\| \approx \rho(T_J)^k \, \|e^{(0)}\|. Чтобы уменьшить ошибку в 1010 раз, нужно около 1/log10 ⁣(1/ρ(TJ))1 / \log_{10}\!\big(1/\rho(T_J)\big) итераций. При ρ=0.5\rho = 0.5 хватает 3344 шагов на порядок точности, а при ρ=0.99\rho = 0.99 - уже около 230230. Именно поэтому Якоби пасует на задачах с плохо обусловленными матрицами: для дискретизации уравнения Пуассона на сетке N×NN \times N спектральный радиус ρ(TJ)1O(h2)\rho(T_J) \approx 1 - O(h^2), где h=1/Nh = 1/N, и число итераций растёт как O(N2)O(N^2).

Для широкого класса согласованно упорядоченных матриц справедливо соотношение Янга ρ(TGS)=ρ(TJ)2\rho(T_{GS}) = \rho(T_J)^2, связывающее Якоби с Гауссом–Зейделем. Оно означает, что одна итерация Гаусса–Зейделя в среднем эквивалентна двум итерациям Якоби. Это главный практический минус Якоби: при одинаковой матрице он сходится примерно вдвое медленнее по числу шагов.

Сравнение с методом Гаусса–Зейделя

Метод Гаусса–Зейделя использует уже пересчитанные на текущем шаге компоненты xj(k+1)x_j^{(k+1)} при j<ij < i, тогда как Якоби берёт только «старый» вектор. У этого есть две стороны.

  • Скорость. Гаусс–Зейдель обычно сходится вдвое быстрее по числу итераций (соотношение Янга выше).
  • Параллелизм. Якоби тривиально параллелится: все nn компонент независимы и считаются одновременно - идеально для GPU и векторных архитектур. Гаусс–Зейдель последователен «в лоб» и требует трюков вроде red–black упорядочения.
  • Память. Якоби нужно хранить два вектора (старый x(k)x^{(k)} и новый x(k+1)x^{(k+1)}), Гауссу–Зейделю - один, так как он переписывает массив на месте.

На многоядерных и графических процессорах выигрыш в параллелизме часто перевешивает проигрыш в числе итераций, поэтому Якоби (и его взвешенный вариант) до сих пор широко применяют как сглаживатель в многосеточных методах.

Критерий остановки

Точного решения мы не знаем, поэтому итерации прекращают, когда соседние приближения перестают заметно меняться. Корректный критерий - относительная норма поправки:

x(k+1)x(k)x(k+1)<ε.\frac{\|x^{(k+1)} - x^{(k)}\|}{\|x^{(k+1)}\|} < \varepsilon.

Часто используют норму невязки bAx(k)<ε\|b - A x^{(k)}\| < \varepsilon - она напрямую измеряет, насколько хорошо приближение удовлетворяет системе. Абсолютный критерий x(k+1)x(k)<ε\|x^{(k+1)} - x^{(k)}\| < \varepsilon без нормировки опасен: при больших по модулю компонентах решения он сработает слишком рано и даст ложную «сходимость».

Пошаговый пример

Решим систему 3×33 \times 3:

{10x1x2+2x3=6,x1+11x2x3=25,2x1x2+10x3=11.\begin{cases} 10 x_1 - x_2 + 2 x_3 = 6, \\ -x_1 + 11 x_2 - x_3 = 25, \\ 2 x_1 - x_2 + 10 x_3 = -11. \end{cases}

Диагональное преобладание выполнено: 10>1+2=310 > |{-1}| + |2| = 3, 11>211 > 2, 10>310 > 3 - метод сойдётся. Итерационные формулы:

x1(k+1)=6+x2(k)2x3(k)10,x2(k+1)=25+x1(k)+x3(k)11,x3(k+1)=112x1(k)+x2(k)10.x_1^{(k+1)} = \frac{6 + x_2^{(k)} - 2 x_3^{(k)}}{10}, \quad x_2^{(k+1)} = \frac{25 + x_1^{(k)} + x_3^{(k)}}{11}, \quad x_3^{(k+1)} = \frac{-11 - 2 x_1^{(k)} + x_2^{(k)}}{10}.

Стартуем с x(0)=(0,0,0)x^{(0)} = (0, 0, 0). Первая итерация: x1(1)=0.6x_1^{(1)} = 0.6, x2(1)=2.2727x_2^{(1)} = 2.2727, x3(1)=1.1x_3^{(1)} = -1.1. Вторая: x1(2)=1.0473x_1^{(2)} = 1.0473, x2(2)=2.2273x_2^{(2)} = 2.2273, x3(2)=0.9927x_3^{(2)} = -0.9927. Значения уже близки к точному решению x(1.0433,2.2692,1.0817)x^{*} \approx (1.0433, 2.2692, -1.0817), и за 6688 итераций ошибка падает ниже 10310^{-3}.

Частые ошибки

  • Применить метод к системе с нулём на диагонали без перестановки строк - формула 1/aii1/a_{ii} даст деление на ноль.
  • Перепутать Якоби с Гауссом–Зейделем и подставлять уже обновлённые компоненты текущего шага - это меняет метод и его скорость сходимости.
  • Объявить метод расходящимся после 551010 итераций: при ρ(TJ)\rho(T_J) около 0.950.95 требуются сотни шагов даже для умеренной точности.
  • Считать, что диагональное преобладание необходимо. Это лишь достаточное условие - без него метод тоже может сходиться, нужно проверить ρ(TJ)<1\rho(T_J) < 1.
  • Использовать абсолютный критерий остановки x(k+1)x(k)<ε\|x^{(k+1)} - x^{(k)}\| < \varepsilon без нормировки на больших по модулю решениях.

FAQ

Чем метод Якоби отличается от метода Гаусса–Зейделя? Якоби вычисляет все компоненты нового вектора x(k+1)x^{(k+1)} только по «старому» вектору x(k)x^{(k)}, поэтому компоненты независимы и метод легко распараллеливается. Гаусс–Зейдель внутри одного шага сразу подставляет уже пересчитанные xj(k+1)x_j^{(k+1)} при j<ij < i, за счёт чего сходится примерно вдвое быстрее, но теряет параллелизм.

Как проверить, сойдётся ли метод Якоби? Достаточное условие - диагональное преобладание по строкам: aii>jiaij|a_{ii}| > \sum_{j \neq i} |a_{ij}| для всех ii. Если оно выполнено, метод сходится при любом x(0)x^{(0)}. Точный критерий - спектральный радиус матрицы перехода ρ(TJ)<1\rho(T_J) < 1, где TJ=D1(L+U)T_J = -D^{-1}(L + U).

Что делать, если диагональное преобладание не выполнено? Сначала попробовать переставить строки (и столбцы) так, чтобы наибольшие по модулю элементы оказались на диагонали. Если преобладания всё равно нет, посчитать спектральный радиус ρ(TJ)\rho(T_J) численно: при ρ<1\rho < 1 метод сойдётся, иначе нужен другой подход - Гаусс–Зейдель, SOR или сопряжённые градиенты.

Коротко

Метод Якоби - итерационный метод для Ax=bAx = b, где каждая компонента нового приближения считается из предыдущего вектора по формуле xi(k+1)=(bijiaijxj(k))/aiix_i^{(k+1)} = (b_i - \sum_{j \neq i} a_{ij} x_j^{(k)}) / a_{ii}. Сходимость гарантируется при ρ(TJ)<1\rho(T_J) < 1; удобное достаточное условие - диагональное преобладание. Метод проще и параллелится лучше Гаусса–Зейделя, но сходится примерно вдвое медленнее по числу итераций.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также