不完全LU分解

Concept in numerical linear algebra

数値線形代数において行列の不完全 LU 分解( ILUと略される) は、前処理としてよく使用されるLU 分解のスパース近似です

導入

疎な線形システム を考えてみましょう。これはL が下一三角行列U が上三角行列であるような の因数分解を計算することで解かれることがよくあります。次に を解きます。これは行列が三角行列であるため、効率的に行うことができます。 A x = b {\displaystyle Ax=b} A = L U {\displaystyle A=LU} L y = b {\displaystyle Ly=b} U x = y {\displaystyle Ux=y}

典型的な疎行列では、LU因子は元の行列よりもはるかに疎でなくなることがあります。これは「フィルイン」と呼ばれる現象です。そのため、直接ソルバーを使用するために必要なメモリ量は、線形連立方程式を解く際のボトルネックとなる可能性があります。この問題に対処するには、最小次数アルゴリズムなど、行列の未知数のフィルインを削減する並べ替えを使用します

不完全因数分解では、ではなく となる三角行列L , Uを求めます。 を解くことはすぐに行えますが、 の正確な解は得られません。そのため、代わりに 行列を共役勾配法GMRESなどの別の反復解法アルゴリズムの前処理として用います A L U {\displaystyle A\approx LU} A = L U {\displaystyle A=LU} L U x = b {\displaystyle LUx=b} A x = b {\displaystyle Ax=b} M = L U {\displaystyle M=LU}

意味

与えられた行列に対してグラフを次のように 定義する。 A R n × n {\displaystyle A\in \mathbb {R} ^{n\times n}} G ( A ) {\displaystyle G(A)}

G ( A ) := { ( i , j ) N 2 : A i j 0 } , {\displaystyle G(A):=\left\lbrace (i,j)\in \mathbb {N} ^{2}:A_{ij}\neq 0\right\rbrace \,,}

これは、スパースパターンが 満たす必要の ある条件を定義するために使用されます。 S {\displaystyle S}

S { 1 , , n } 2 , { ( i , i ) : 1 i n } S , G ( A ) S . {\displaystyle S\subset \left\lbrace 1,\dots ,n\right\rbrace ^{2}\,,\quad \left\lbrace (i,i):1\leq i\leq n\right\rbrace \subset S\,,\quad G(A)\subset S\,.}

次の式が成り立つ 形の分解 A = L U R {\displaystyle A=LU-R}

  • L R n × n {\displaystyle L\in \mathbb {R} ^{n\times n}} 下単位三角行列である
  • U R n × n {\displaystyle U\in \mathbb {R} ^{n\times n}} 上三角行列である
  • L , U {\displaystyle L,U} スパースパターンの外側ではゼロになります。 L i j = U i j = 0 ( i , j ) S {\displaystyle L_{ij}=U_{ij}=0\quad \forall \;(i,j)\notin S}
  • R R n × n {\displaystyle R\in \mathbb {R} ^{n\times n}} スパースパターン内ではゼロです。 R i j = 0 ( i , j ) S {\displaystyle R_{ij}=0\quad \forall \;(i,j)\in S}

不完全LU分解と呼ばれます(スパースパターンに関して)。 S {\displaystyle S}

LUのスパースパターンは、元の行列Aのスパースパターンと同じになるよう選択されることが多い。基となる行列構造をコピーではなくポインタで参照できる場合、必要な追加メモリはLUのエントリ分のみである。この前処理はILU(0)と呼ばれる。

安定性

ILUの安定性に関しては、メイエリンクとファンデルフォルストによって次の定理が証明されました。[1]

M行列とし、(完全な)LU分解を、ILUを で与えるとします A {\displaystyle A} A = L ^ U ^ {\displaystyle A={\hat {L}}{\hat {U}}} A = L U R {\displaystyle A=LU-R}

| L i j | | L ^ i j | i , j {\displaystyle |L_{ij}|\leq |{\hat {L}}_{ij}|\quad \forall \;i,j}

が成り立つ。したがって、ILUは(完全な)LU分解と少なくとも同程度に安定である。

一般化

因数分解においてある程度の余分な充填を許容することで、より正確な前処理子を得ることができます。一般的な選択肢としては、行列Aの代わりにA 2のスパースパターンを用いることです。この行列はAよりもかなり密ですが、全体としては依然としてスパースです。この前処理子はILU(1)と呼ばれます。この手順を一般化することができます。行列AのILU(k)前処理子は、行列A k+1のスパースパターンを持つ不完全LU分解です

より高精度なILU前処理はより多くのメモリを必要とし、最終的には反復回数は減少するにもかかわらず、アルゴリズムの実行時間が増大します。したがって、ユーザーはコストと精度のトレードオフを評価する必要があり、通常は解くべき線形システムの族に応じてケースバイケースで評価する必要があります。

ILU分解の近似は、高度に並列化された固定小数点反復として実行することができる。 [2]

参照

参考文献

  • Saad, Yousef (1996),疎線形システムの反復法(第1版)、ボストン:PWS、ISBN 978-0-534-94776-710.3節以降を参照してください。
  1. ^ Meijerink, JA; Vorst, Van Der; A, H. (1977). 「係数行列が対称π行列である線形システムの反復解法」.計算数学. 31 (137): 148– 162. doi : 10.1090/S0025-5718-1977-0438681-4 . ISSN  0025-5718.
  2. ^ Chow, Edmond; Patel, Aftab (2015). 「細粒度並列不完全LU分解」. SIAM Journal on Scientific Computing . 37 (2): C169-C193. doi :10.1137/140968896.


  • CFD Wiki における不完全 LU 分解
Retrieved from "https://en.wikipedia.org/w/index.php?title=Incomplete_LU_factorization&oldid=1296980085"