Вычислите LU-факторизацию

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

LU-факторизация выражает m ×n матричный A можно следующим образом: P*A = L*U. Здесь L является m ×m нижняя треугольная матрица, которая содержит 1 с на основной диагонали, U является m ×n матричная верхняя треугольная матрица, и P является матрицей перестановок. Чтобы вычислить разложение LU матрицы, используйте функцию linalg::factorLU. Например, вычислите разложение LU следующей квадратной матрицы:

A := matrix([[0, 0, 1], [1, 2, 3], [0, 1, 2]]):
[L, U, p] := linalg::factorLU(A)

Вместо того, чтобы возвратить матрицу перестановок P, MuPAD® возвращает список p с числами, соответствующими обменам строки в матричном A. Для n ×n матрица, список p представляет следующую матрицу перестановок с индексами i и j в пределах от 1 к n:

.

Используя это выражение, восстановите матрицу перестановок P из списка p:

P := matrix(3, 3):
for i from 1 to 3 do
   P[i, p[i]] := 1
end_for:
P

Более эффективно вычислите результат применения матрицы перестановок к A, не восстанавливая саму матрицу перестановок:

PA := matrix(3, 3):
for i from 1 to 3 do
  PA[i, 1..3] := A[p[i], 1..3]
end_for:
PA

Продуктом нижнего треугольного матричного L и верхней треугольной матрицы U является исходный матричный A со строками, которыми обмениваются согласно матрице перестановок P:

testeq(PA = L*U)

Теперь, вычислите разложение LU для 3 ×2 матричных B:

B := matrix([[1, 2], [3, 4], [5, 6]]):
[L, U, p] := linalg::factorLU(B)

Матрица перестановок для этой LU-факторизации показывает, что порядок строк не изменяется. Поэтому продукт нижнего треугольного матричного L и верхней треугольной матрицы U дает исходный матричный A:

testeq(B = L*U)