Что такое LU-разложение с частичным выбором ведущего элемента?
LU-разложение представляет квадратную матрицу A в виде произведения нижнетреугольной матрицы L (с единицами на главной диагонали) и верхнетреугольной матрицы U. При частичном выборе ведущего элемента (по строкам) дополнительно формируется вектор перестановки строк P, такой что \(P \cdot A = L \cdot U\). Выбор ведущего элемента переставляет на нужное место строку с наибольшим по модулю опорным элементом — это исключает деление на ноль и заметно повышает численную устойчивость. Это чистая линейная алгебра, которая работает одинаково везде и не зависит от страны.
Как пользоваться калькулятором
Выберите размер матрицы n (от 2 до 5), введите элементы квадратной матрицы построчно и укажите, сколько значащих цифр показывать в результате. Нажмите «Вычислить», чтобы получить L, U, вектор перестановки P (нумерация с нуля) и определитель. Ячейки за пределами выбранного размера не учитываются.
Алгоритм
Для каждого столбца k находим строку p (p ≥ k), в которой |M[p][k]| максимально, и переставляем её на место строки k. Затем для каждой строки i ниже k вычисляем множитель factor = M[i][k] / M[k][k], сохраняем его в нижней части матрицы и обновляем оставшиеся элементы: \(M[i][j] \mathrel{-}= \text{factor} \cdot M[k][j]\). После обработки всех столбцов L — это строго нижняя часть M с единичной диагональю, а U — верхняя часть вместе с диагональю. Определитель равен знаку перестановки, умноженному на произведение диагональных элементов U:
$$\det(A) = \operatorname{sign}(P) \prod_{i} U_{ii}$$
Разбор примера
Для A = [[2,1,1],[4,-6,0],[-2,7,2]] первый ведущий элемент находится в строке 1 (|4| — наибольший), поэтому P становится (1,0,2). После исключения получаем L = [[1,0,0],[0.5,1,0],[-0.5,1,1]], U = [[4,-6,0],[0,4,1],[0,0,1]]. Одна перестановка даёт знак −1, поэтому $$\det(A) = -1 \times (4 \cdot 4 \cdot 1) = -16.$$
Частые вопросы
Почему L·U не совпадает с исходной матрицей A? Из-за перестановок L·U равно матрице A со строками, переставленными согласно P. Сначала переупорядочьте строки A по вектору P — тогда L·U совпадёт.
А если матрица вырожденная? На диагонали U появится ноль, а определитель будет равен 0; при этом разложение всё равно выводится.
Нумерация вектора перестановки начинается с нуля? Да. P[i] — это индекс исходной строки матрицы A, которая оказалась в строке i.