MATLAB Function Reference |
Syntax
[L,U]=
lu(X) [L,U,P] = lu(X) lu(X) lu(X, thresh)
Description
lu
函式將原本的矩陣 X
表示成一上三角(upper triangular matrix)一下三角(lower
triangular matrix)的兩個的矩陣,其乘積為 x。此分解法又叫做 LU 或 LR分解。
[L,U] = lu(X)
U
為上三角矩陣,而 L 為下三角矩陣(或為下三角矩陣和排列矩陣的乘積)。X = L*U。
[L,U,P] = lu(X)
U
為上三角矩陣,L
為下三角矩陣,而 P 為排列矩陣(permutation matrix )。即 L*U = P*X。
lu(X)
回傳 LAPACK 程序 DGETRF
或 ZGETRF
輸出。
lu(X,thresh)
控制稀疏矩陣的中樞(pivot), thresh
表示範圍在 [0,1]
之間的中樞臨界點(pivot threshold)。 thresh = 1
為預設值。
Remarks
大多數計算 LU 分解的演算法都是利用高斯消去法。分解過程中的關鍵是利用矩陣反轉函式 inv
及行列式(determinant)函式 det。
也可使用線性方程組的基本解法或利用矩陣除法 \
及 /。
Arguments
X |
將被分解的一 n * n 矩陣。 |
thresh |
稀疏矩陣的中樞起點( Pivot threshold)。其值的範圍在 [0,1] 之間。預設值為 1。 |
L |
X 的一項分解因子。依據其函式, L 可能是下三角矩陣,也可能為一下三角矩陣及排列矩陣 P 的乘積。 |
U |
X 的一項分解因子。為上三角矩陣。 |
P |
滿足 L*U = P*X 的排列矩陣。 |
Examples
初始值為
A=
1
2
3
4
5
6
7
8
0
[L,U]=
lu(A) L
=
0.1429
1.0000
0
0.5714
0.5000
1.0000
1.0000
0
0 U
=
7.0000
8.0000
0.0000
0
0.8571
3.0000
0
0
4.5000
L*
U
傳回原先的矩陣 A
後,使用三個輸出參數的函式以取得排列陣列:
[L,U,P] = lu(A)
L=
1.0000
0
0
0.1429
1.0000
0
0.5714
0.5000
1.0000 U
=
7.0000
8.0000
0
0
0.8571
3.0000
0
0
4.5000 P
=
0
0
1
1
0
0
0
1
0
為了要驗証 L*U
為 A
的一種排列方式,將P*A 減去 L*U
:
P*
A - L*
U
X = inv(A)
正好是兩個三角矩陣的乘積:
X = inv(U)*
inv(L)
d = det(A) d=
27
它也是兩個三角矩陣行列式的乘積:
d = det(L)*
det(U)
Ax =
b 可由矩陣除法解之:
x = A\b
y = L\b, x = U\y
Algorithm
lu
使用 LAPACK 的子程序 DGETRF
(real) 及 ZGETRF
(complex)。
See Also
cond
, det
, inv
, luinc
, qr
, rref
The arithmetic operators \
and /
References
[1] Anderson, E., Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User's Guide, Third Edition, SIAM, Philadelphia, 1999.
lsqr | luinc |