linalg
::factorLU
LU-разложение матрицы
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
linalg::factorLU(A
)
linalg::factorLU(A)
вычисляет LU-разложение m ×n матричный A, т.е. разложение A в m ×m нижний треугольный матричный L и m ×n верхняя треугольная матрица U, таким образом, что P A = L U, где P является матрицей перестановок.
Диагональные элементы нижнего треугольного матричного L равны одному (Doolittle-разложение). Диагональные элементы U являются элементами центра, используемыми во время расчета.
Матрицы L и U уникальны.
pivindex
список [ r1, r2, ...]
представление обменов строки A на вертящихся шагах, т.е. B = P A = L U, где b ij = a r i, j.
Приближение с плавающей точкой разложения вычисляется с помощью numeric::factorLU
, если матричный A
задан по кольцевому Dom::Float
компонента. В этом случае рекомендуется вызвать
numeric::factorLU
непосредственно для лучшего КПД.
Алгоритм также работает на сингулярный A. В этом случае или L или U сингулярны.
L и U несингулярны, если и только если A несингулярен.
Звонок компонента матричного A
должно быть поле, т.е. область категории Cat::Field
.
Мы вычисляем LU-разложение действительной матрицы:
A := Dom::Matrix(Dom::Real)( [[2, -3, -1], [1, 1, -1], [0, 1, -1]] )
[L, U, pivlist] := linalg::factorLU(A)
Нижний треугольный матричный L является первым элементом und верхняя треугольная матрица, U является вторым элементом списка LU
. Продукт этих двух матриц равен входной матрице A
:
L * U
LU-разложение 3×2 матрица:
A := Dom::Matrix(Dom::Real)([[2, -3], [1, 2], [2, 3]])
дает 3×3 нижняя треугольная матрица и 3×2 верхняя треугольная матрица:
[L, U, pivlist] := linalg::factorLU(A)
L * U
Вычислить LU-разложение матрицы:
A := matrix([[1, 2, -1], [0, 0, 3], [0, 2, -1]])
один обмен строки необходим, и мы поэтому получаем нетривиальный список сочетаний:
[L, U, pivlist] := linalg::factorLU(A)
Соответствующая матрица перестановок следующая:
P := linalg::swapRow(matrix::identity(3), 3, 2)
Следовательно, у нас есть разложение A в продукт этих трех матриц, L и U можно следующим образом:
P^(-1) * L * U
Можно вычислить LU-разложение матрицы с символьными компонентами, такими как:
delete a, b, c, d: A := matrix([[a, b], [c, d]])
Диагональные элементы матричного U являются элементами центра, используемыми во время расчета. Они должны быть ненулевыми, если инверсия U необходима:
[L, U, pivlist] := linalg::factorLU(A)
Например, если мы используем это разложение, чтобы решить линейную систему для произвольных векторов, затем следующий результат только правилен для a ≠ 0 и:
delete b1, b2: linalg::matlinsolveLU(L, U, matrix([b1, b2]))
|
Матрица A области категории |
Перечислите [L, U, pivindex]
с этими двумя матрицами L и U доменного Dom::Matrix
(R)
и список pivindex
из положительных целых чисел. R
звонок компонента A
.
Следующий алгоритм для решения системы с несингулярным матричным A использует LU-разложение:
Вычислите LU-разложение A: A = L U.
Решите прямой заменой.
Решите обратной подстановкой.
LU-разложение матричного A полезно для решения нескольких систем линейных уравнений с той же матрицей коэффициентов A и несколько правых векторов стороны, потому что затем продвигаются, один из алгоритма выше должен быть сделан только однажды.