МатВектор

Command Palette

Search for a command to run...

🔢 Численные методы35 минСложность 3/5+65 XP

Численные методы решения СЛАУ: Гаусс, LU, Якоби и Зейдель

Гаусс с главным элементом, LU-разложение, число обусловленности и итерации Якоби и Зейделя: когда какой способ решать СЛАУ брать. Примеры с ручным счётом.

4 интерактива3 квизаУрок 6 из 11Обновлено 04.10.2026Обычный

Расчёт температуры в котле на сетке 1000×1000 даёт миллион линейных уравнений с миллионом неизвестных. Прямой метод Гаусса из линейной алгебры справится? Формально да — около арифметических операций. На машине с триллионом операций в секунду это примерно неделя, плюс миллион на миллион хранимых коэффициентов — терабайты памяти. А элементы матрицы при этом почти нулевые: каждая точка сетки связана лишь с четырьмя соседями. Лобовая атака здесь расточительна — нужны другие стратегии.

Почему лобовой Гаусс — не всегда выход#

Метод Гаусса — золотой стандарт для плотных систем, где каждый коэффициент значим: он надёжен (с выбором главного элемента) и предсказуем. Уравнения упругой балки, электросети, разреженной сетки из задачи теплопроводности устроены иначе: в строке длиной миллион отличны от нуля пять элементов.

Размер $n$Операций $\approx \frac{2}{3}n^3$Время при $10^{12}$ оп/с
1 0006,7·10⁸доли секунды
10 0006,7·10¹¹меньше секунды
100 0006,7·10¹⁴около 11 минут
1 000 0006,7·10¹⁷около 8 суток
Плотный Гаусс даже на суперкомпьютере: куб растёт быстрее, чем кажется

Время — только полбеды. Плотная матрица размера требует хранить чисел — терабайты, и это при том, что в задаче теплопроводности отличны от нуля примерно пять чисел в строке. Вся конструкция держится на одной мысли: и время, и память тратятся на нули. Отсюда два направления атаки — умные прямые методы, которые учитывают структуру заполнения, и итерационные, которые нулей вообще не касаются.

Выбор главного элемента: спасение от катастрофы#

Решим руками маленькую систему — и устроим ей маленькую ручную катастрофу:

уравнения честные, решение почти (1; 1)

Гаусс без затей исключает из второй строки: ведущий элемент , множитель . Вторая строка превращается в . Если машина хранит лишь три значащие цифры, оба числа округляются до , и выходит . Обратный ход: , откуда . Не «немного неточно» — совсем другой ответ: ноль вместо единицы, стопроцентная ошибка.

  1. Смотрим на первый столбец: — меняем строки местами, ведущим становится элемент
  2. Исключаем : множитель ; вторая строка: , то есть
  3. Округления до трёх цифр почти ничего не портят: , обратный ход даёт
  4. Ошибка порядка — три верные цифры вместо откровенного мусора

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

LU-разложение: одна факторизация на много правых частей#

Гаусс делает две вещи одновременно: приводит матрицу к треугольному виду и правую часть — вместе с ней. Если их разделить, получится LU-разложение (что это даёт при многих правых частях и как считать L и U — отдельная словарная статья): , где — нижнетреугольная с единицами на диагонали, — верхнетреугольная. Решение распадается на два треугольных:

обе системы решаются подстановкой за O(n²)

Зачем разделять? Затем, что факторизация — дорогой этап порядка , а оба треугольных хода — дешёвые, порядка . Если правых частей много (та же матрица жёсткости при разных нагрузках; нормальные уравнения МНК при переборе моделей), матрицу факторизуют один раз, а дальше каждая новая правая часть обходится в копейки. Мини-пример: . Для : из получается , из — . Подстановка в исходную систему подтверждает.

Число обусловленности: когда виновата не программа#

Вот система, которая сведёт с ума любой алгоритм:

почти параллельные прямые: пересечение гуляет на километры

С правой частью решение — . Сдвинем второй компонент на : при решение ускакивает в . Изменение данных на пять стотысячных — изменения решения в разы. Это свойство самой задачи, и называется оно плохой обусловленностью. Мерой служит число обусловленности : во сколько раз относительная ошибка решения может превысить относительную ошибку данных. Здесь — теряются около четырёх цифр точности, что бы вы ни программировали.

Полезная модель: — считайте, что младших цифр результата ненадёжны. Классический пациент — матрица Гильберта с элементами : уже при обусловленность порядка , и даже точный алгоритм в двойной точности сохранит три-четыре верные цифры. Откуда такие матрицы берутся? Из постановок задач: регрессия со степенями даёт матрицу Вандермонда, обработка сигналов — матрицы Тёплица. Прежде чем обвинять программу, посчитайте — или хотя бы чуть шевелите правую часть и смотрите, как пляшет ответ: если от пыли в пятом знаке решение меняется в разы, вы имеете дело с обусловленностью, а не с багом. Спасает тут не алгоритм, а пересмотр постановки: больше данных, регуляризация, другая параметризация. Формальное определение через нормы матриц даёт статья число обусловленности.

Итерации Якоби и Зейделя: как это работает#

Идея итерационных методов: угадать начальное приближение и уточнять его по простому правилу. Разрешим каждое уравнение относительно «своей» диагональной переменной. Для системы , (решение ) получаем:

метод Якоби: в дело идут только значения прошлой итерации

Стартуем с нуля. Первая итерация: , . Вторая: , . Значения прыгают вокруг решения, но амплитуда падает — итерации сходятся. Метод Зейделя отличается одной деталью: свежие компоненты подставляются немедленно, не дожидаясь конца итерации:

$k$Якоби: $x^{(k)};\ y^{(k)}$Зейдель: $x^{(k)};\ y^{(k)}$
11,2; 2,11,2; 1,98
20,99; 1,981,002; 1,9998
31,002; 2,0011,00002; 1,999998
решение1; 21; 2
Три итерации на одной системе: Зейдель каждый раз на шаг впереди

Сходятся ли итерации? Точный критерий — спектральный радиус матрицы перехода меньше единицы; проверять его в лоб тяжело, поэтому пользуются достаточным условием: строгое диагональное преобладание для каждой строки. В нашем примере — выполняется с запасом, и оба метода сходятся.

Разгадка ускорения — в матрице перехода. У Якоби её спектральный радиус здесь равен : каждая итерация сокращает ошибку примерно в десять раз. У Зейделя радиус равен квадрату якобиевского — , и ошибка падает в сто раз за итерацию. Числа из таблицы подтверждают: после третьей итерации Якоби ошибся на , Зейдель — на . Общий закон: чем больше диагональный элемент на фоне остальных в строке, тем меньше радиус и быстрее сходимость.

Практическое замечание: диагональное преобладание не экзотика, а норма жизни для сеточных задач. Уравнение теплопроводности связывает температуру каждого узла с четырьмя соседями, и её диагональный коэффициент по модулю не меньше суммы влияний соседей. Проверка занимает одну строку кода: обойти строки, сравнить модули. Если преобладания нет, но матрица симметричная и положительно определённая, работает метод сопряжённых градиентов — прямой наследник идей этого урока.

Прямая или итерационная стратегия: что выбирать#

КритерийПрямые (Гаусс, LU)Итерационные (Якоби, Зейдель)
Размер/заполненностьПлотные, до –Разреженные и огромные: сетки, графы
Стоимость один раз на итерацию, их много
ОтветТочный за конечное число шагов (с точностью округлений)Приближённый: точность растёт с числом итераций
ГарантииЕсть при выборе главного элементаТребуют сходимости: преобладание диагонали или симметрия + положительная определённость
Память
Две философии: «решить сразу» против «улучшать постепенно»
  • Маленькая плотная система — Гаусс с главным элементом, без вариантов
  • Много правых частей при одной матрице — LU-разложение: факторизация один раз, дальше по на правую часть
  • Огромная разреженная система — Зейдель и его старшие братья (сопряжённые градиенты, многосеточные)
  • Плохая обусловленность — враг любой стратегии: проверяйте , а не только код

Куда двигаться дальше: посчитайте руками пару итераций на своей системе из задачника, потом прогоните её в тренажёре СЛАУ — расхождение ручного счёта и машины само покажет, где вы ошиблись. Как устроен метод Гаусса по шагам с операциями над строками, есть в разборе задач на СЛАУ; термин метод Гаусса и определитель — в словаре. А нелинейный собрат этой истории — метод Ньютона, где на каждом шаге решается своя линейная система, — разобран в уроке про решение нелинейных уравнений.

Проверь себя+10 XP

В системе , метод Гаусса без выбора главного элемента (три значащие цифры) выдал вместо . Причина?

Проверь себя+10 XP

Метод Якоби для системы , стартует с . Чему равна первая итерация?

Проверь себя+10 XP

Число обусловленности матрицы . Сколько цифр может потерять решение из-за неточности данных?

Частые вопросы

Чем метод Зейделя отличается от метода Якоби и что лучше?

Якоби на новой итерации использует только значения предыдущей: компоненты можно считать даже параллельно. Зейдель подставляет свежепосчитанные компоненты сразу, поэтому обычно сходится быстрее — на тестовой системе после двух итераций ошибка в десять раз меньше. Плата — потеря естественного параллелизма. Выбор между ними часто диктуется архитектурой компьютера.

Как понять, что метод итераций сойдётся, не считая итерации?

Проверьте достаточное условие — строгое диагональное преобладание: в каждой строке модуль диагонального элемента больше суммы модулей остальных. Выполняется — Якоби и Зейдель сходятся. Более общий критерий — спектральный радиус матрицы перехода меньше единицы. Если условие нарушено, иногда помогает простая перестановка уравнений местами.

Зачем нужно LU-разложение, если метод Гаусса и так решает систему?

Гаусс решает одну систему, а LU-разложение готовит матрицу к любой правой части. Факторизация стоит порядка , но делается один раз; дальше каждая новая правая часть решается двумя треугольными ходами за операций. В расчётах конструкций при разных нагрузках или в МНК при переборе моделей это экономит большую часть работы.

Что делать, если решение СЛАУ получается явной ерундой?

Проверьте по порядку: подстановку в уравнения (не ошибка ли кода), выбор главного элемента (не делите ли на крошку) и обусловленность матрицы. Если огромно — данные не позволяют получить точное решение в принципе: почти параллельные уравнения означают, что часть информации о решении в них просто не записана. Тогда меняют постановку задачи, а не алгоритм.

Готовитесь к контрольной?

Чеклист тем по «Численные методы»: что вы уже умеете, что повторить и в каком порядке.

Открыть чеклист предмета →

Проверьте себя в бою

Босс-экзамен по «Численные методы»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.

Начать босс-экзамен →