Вычислите 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)