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 | qr >> |