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