Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - 日本語


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 を出力します. 実際は,行列AE*A=B*U のように分解されます. ただし, 行列Bは下三角行列, 行列LL=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 関数を使用する 方法を示しています.

a=rand(4,4);
[l,u]=lu(a)
norm(l*u-a)
[h,rk]=lufact(sparse(a))
[P,L,U,Q]=luget(h);
ludel(h)
P=full(P);
L=full(L);
U=full(U);
Q=full(Q);
norm(P*L*U*Q-a)

参照

  • lufact — 疎行列LU分解
  • luget — 疎行列LU分解の展開
  • lusolve — 疎な線形システムの解を得る
  • qr — QR 分解
  • svd — 特異値分解

使用する関数

lu 分解 Lapack ルーチン DGETRF (実数行列の場合) および ZGETRF (複素数の場合) に基づいています.

Report an issue
<< hess Factorization polar >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon May 22 12:43:09 CEST 2023