| 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=123456780
[L,U]=lu(A) L=0.14291.000000.57140.50001.00001.000000 U=7.00008.00000.000000.85713.0000004.5000
L*U
傳回原先的矩陣 A 後,使用三個輸出參數的函式以取得排列陣列:
[L,U,P] = lu(A)
L=1.0000000.14291.000000.57140.50001.0000 U=7.00008.0000000.85713.0000004.5000 P=001100010
為了要驗証 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 | ![]() |