lu
ピボット選択付きのLU 分解
呼び出し手順
[L,U]= lu(A) [L,U,E]= lu(A)
引数
- A
実数または複素数の行列 (m x n).
- L
実数または複素数の行列 (m x min(m,n)).
- U
実数または複素数の行列 (min(m,n) x n ).
- E
a (n x n) 置換行列.
説明
[L,U]= lu(A) は,
Uを上三角行列,
Lを何らかの特別な構造を持たない一般的な行列として,
A = L*U となるような
2つの行列 L および
U を出力します.
実際は,行列AはE*A=B*U
のように分解されます.
ただし, 行列Bは下三角行列,
行列LはL=E'*Bから計算されます.
A がランク kを有している場合,
Uの行 k+1 から
n までは 0 となります.
[L,U,E]= lu(A) は,
上三角行列Uおよび
置換行列を Eとした下三角行列 E*L,
によりE*A = L*Uとなるような
3つの行列 L, U および
Eを出力します.
A が実数行列の場合,
関数lufact および lugetを
用いることにより,
置換行列を得ることができます.
Aがフルランクでない場合,行列 L
の列圧縮も得ることができる.
例 #1
以下の例では,大きさ4のヒルバート行列を作成し, A=LU と分解します. 行列 L は下三角行列ではないことに注意してください. 下三角行列Lを取得するには, 出力引数 E を Scilab に指定する必要があります.
a = testmatrix("hilb",4); [l,u]=lu(a) norm(l*u-a)
例 #2
以下の例では,大きさ4のヒルバート行列を作成し, EA=LU と分解します. 行列 L は下三角行列であることに注意してください.
a = testmatrix("hilb",4); [l,u,e]=lu(a) norm(l*u-e*a)
例 #3
以下の例では, lufact および luget 関数を使用する 方法を示しています.
使用する関数
lu 分解 Lapack ルーチン DGETRF (実数行列の場合) および ZGETRF (複素数の場合) に基づいています.
| Report an issue | ||
| << hess | Factorization | polar >> |