MatrixCalc

Калькулятор LU-разложения

Разложите квадратную матрицу в произведение A = L·U с частичным выбором главного элемента и проследите, как оба треугольных множителя строятся шаг за шагом. С разложением Холецкого для симметричных положительно определённых матриц.

Матрица A
строки: 3
столбцы: 3
Матрица B
строки: 3
столбцы: 3
Операции

Откройте шаги ниже, чтобы увидеть полный ответ.

Результат
Выберите операцию, чтобы увидеть результат здесь. Сообщения об ошибках появляются в этой области.

Советы: настройте размер (макс. 50×50). Для A×B число столбцов A должно быть равно числу строк B. Det/обратная/след/степень требуют квадратных матриц.

React, Tailwind & shadcn/ui. No external math deps. — Русский

Введите квадратную матрицу, откройте вкладку Разложения и нажмите LU(A). Поскольку ответ — пара матриц, а не одна, он целиком живёт в панели пошагового решения, которая открывается сама и в конце показывает L и U рядом. Cholesky(A) находится на той же вкладке — для симметричного случая, разобранного ниже.

Что представляют собой множители

LU записывает A = L·U, где L нижнетреугольная, а U верхнетреугольная. Ни в одной из них нет ничего загадочного: U — это в точности ступенчатый вид, который даёт метод Гаусса, а L хранит множители, использованные по дороге. Одно приведение даёт обе.

Разобранный пример

43
63
=
10
3/21
×
43
0−3/2

Число 3/2 в L — это множитель, обнуливший 6 под ведущим элементом. Заметьте, что определитель теперь достаётся даром: перемножьте диагональ U и получите 4 · (−3/2) = −6, умноженное на −1 за каждую выполненную перестановку строк.

Ради чего это делается

Разложение можно использовать повторно. Решить Ax = b с нуля стоит примерно n³/3 операций. Когда L и U уже есть, каждая новая правая часть стоит всего : решите Ly = b прямым ходом, затем Ux = y обратным. Если вы решаете одну и ту же систему для многих векторов b — обычное дело в инженерных расчётах и моделировании — экономия огромна. Для матрицы 100×100 и пятидесяти правых частей это одно разложение плюс пятьдесят дешёвых проходов вместо пятидесяти полных приведений.

Прямой и обратный ход на конкретных числах

Возьмите загруженную выше матрицу 3×3. Одно приведение даёт оба множителя:

211
4−60
−272
=
100
210
−1−11
×
211
0−8−2
001

Элементы L — это в точности множители, применённые при приведении: 2 обнулил 4, −1 обнулил −2, а −1 убрал остаток во втором столбце. Теперь решим Ax = b при b = (4, −2, 7). Сначала Ly = b, сверху вниз, где каждая строка сразу даёт новое значение, потому что справа от неё всё нулевое:

y₁ = 4; затем 2·4 + y₂ = −2, значит y₂ = −10; затем −4 + 10 + y₃ = 7, значит y₃ = 1.

Далее Ux = y, снизу вверх: x₃ = 1; затем −8x₂ − 2 = −10, значит x₂ = 1; затем 2x₁ + 1 + 1 = 4, значит x₁ = 1. Решение — (1, 1, 1), полученное без единого деления на что-либо, кроме диагонального элемента. Определитель достаётся из тех же множителей: 2 · (−8) · 1 = −16.

Выбор главного элемента

Не всякая матрица допускает простое A = L·U: ноль в позиции ведущего элемента ломает разложение. Выход — матрица перестановок, дающая P·A = L·U. На практике выбор главного элемента применяют в любом случае, потому что взятие наибольшего доступного ведущего элемента держит ошибки округления под контролем. Разложение единственно после фиксации соглашения; этот калькулятор использует соглашение Дулиттла, ставящее единицы на диагональ L.

Холецкий: симметричный случай

Если A симметрична и положительно определена, она раскладывается как A = L·Lᵀ — квадратный корень для матриц, требующий лишь одного треугольного множителя. Симметричность означает A = Aᵀ; положительная определённость означает, что каждое собственное значение больше нуля. Звучит ограничительно, но такие матрицы встречаются повсюду: матрицы ковариации, матрицы Грама, нормальные уравнения метода наименьших квадратов и матрицы жёсткости в методе конечных элементов симметричны и положительно определены по построению.

42
25
=
20
12
·
21
02

Каждый диагональный элемент L — это квадратный корень (здесь √4 = 2 и √(5 − 1²) = 2), и поэтому метод требует, чтобы подкоренное выражение оставалось положительным. Это требование и есть положительная определённость, что превращает алгоритм в тест: если разложение дошло до конца, матрица положительно определена; если под корнем встретилось неположительное число — нет. Холецкий примерно вдвое быстрее LU, занимает вдвое меньше памяти и устойчив без выбора главного элемента — поэтому решатели сначала проверяют симметрию и берут его при любой возможности.

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

  • Считать, что раскладывается любая матрица. Ноль в позиции ведущего элемента ломает простое LU. Выход — матрица перестановок: P·A = L·U.
  • Применять Холецкого к несимметричной матрице. A = L·Lᵀ симметрична по построению, поэтому у несимметричного входа такого разложения нет. Берите LU.
  • Считать, что достаточно симметрии. Симметричная матрица с отрицательным собственным значением неопределённая и сорвётся посреди алгоритма.
  • Ждать целых множителей. Диагональ Холецкого содержит квадратные корни, поэтому L обычно иррациональна, даже когда A целочисленная.
  • Забывать перестановки строк в определителе. Каждая меняет его знак.

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

Зачем нужно LU-разложение?
Чтобы решать системы с одной и той же матрицей и разными правыми частями. Разложение считается один раз, а каждая следующая система стоит всего двух треугольных решений.
Что означает матрица перестановок P?
Она фиксирует, какие строки менялись местами. С частичным выбором главного элемента результат записывается как P·A = L·U.
Когда лучше взять разложение Холецкого?
Когда матрица симметрична и положительно определена. Оно примерно вдвое быстрее и требует лишь одного треугольного множителя, поскольку A = L·Lᵀ.
Что будет, если матрица не положительно определена?
Алгоритм дойдёт до квадратного корня из неположительного числа и остановится. Такой сбой информативен: это стандартная численная проверка положительной определённости.
Можно ли получить определитель из LU?
Да — это произведение элементов диагонали U, умноженное на −1 за каждую выполненную перестановку строк.

Другие калькуляторы