Why does lu function yield different lower triangle matrix if I return [L,U] rather than [L, U, P]?
58 ビュー (過去 30 日間)
古いコメントを表示
% square matrix A
A=[10,-7,0;-3,2,6;5,-1,5]
Return only L and U
[L1,U1] = lu(A);
Return L, U and P
[L2,U2,P2] = lu(A);
Compare L1 and L2
L1
L2
0 件のコメント
採用された回答
Christine Tobler
2022 年 5 月 18 日
The LU decomposition really involves three new matrices: An upper-triangular matrix U, a lower-triangular matrix L, and a permutation matrix P. This is what the three-output syntax returns:
A = [10,-7,0;-3,2,6;5,-1,5]
[L, U, P] = lu(A)
P*A
L*U
Unfortunately, lu also has a 2-output syntax. However, since it wouldn't be numerically safe to just compute L and U without a permutation matrix, internally we still compute all three matrices, and then return the first output as P'*L
[L2, U2] = lu(A);
L2
P'*L
L2*U
So the result of two-output LU satisfies A == L*U, but the output L isn't a lower-triangular matrix as one might expect.
You can argue that it would be better if the LU function didn't have a two-output syntax at all, but that decision was made a long time ago, and was probably based on the point that most people think of LU as a two-matrix decomposition, without thinking of the necessary permutation vector.
その他の回答 (1 件)
Steven Lord
2022 年 5 月 18 日
"[L,U] = lu(A) returns an upper triangular matrix U and a matrix L, such that A = L*U. Here, L is a product of the inverse of the permutation matrix and a lower triangular matrix.
[L,U,P] = lu(A) returns an upper triangular matrix U, a lower triangular matrix L, and a permutation matrix P, such that P*A = L*U. The syntax lu(A,'matrix') is identical."
Emphasis added.
参考
カテゴリ
Help Center および File Exchange で Matrix Decomposition についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!