cholesky - 神谷研究室・ホームページへ

Cholesky 分解あれこれ
~ Contents ~
§ 1 Cholesky 分解
§ 2 不完全 Cholesky 分解
神谷研究室 ゼミ -1-
§ 1 Cholesky 分解
◎ LU 分解
定理 1
N 次正則行列 A は A = LU の形に一意に分解できる.
但し,L : N 次正方行列 , U : N 次上三角行列.
◎ LDU 分解
定理 2
N 次正則行列 A は A = LDU の形に一意に分解できる.但し,L, U
及び D はそれぞれ N 次正方行列,N 次上三角行列及び N 次対角行列
である.また,U の対角要素は 1 とする.
神谷研究室 ゼミ -2-
定理 2 →
A = LDU.
但し,A : N 次正則行列,L : N 次下三角行列 ,
U : N 次上三角行列 , D = diag[ d1, d2, …, dN ] .
(1.1)
D* = diag[ d*1, d*2, …, d*N ] の定義.
∀ L = diag[ l 1, l 2, …, l N ], U = diag[ u 1, u 2, …, u N ]
s.t. det( L ) ≠ 0, det( U ) ≠ 0 :
d*k ≡ dk / ( l k u k )
( for k = 1, 2, …, N ).
(1.2)
(1.1), (1.2) →
A = L*D*U*.
(1.3)
但し,L* = LL , U* = U U.
神谷研究室 ゼミ -3-
L , U , D* の3つの行列の中でどれか2つを与えてやれば,分解が一意に決まる.
特に, L = U = E とすれば定理2 を得る.
定理 3
N 次対称正定値行列 A が A = LDU と分解されたとき,L = U とすれば ,
L* = U*T となる.
A : 対称正定値行列,定理 3 →
A = L*D*L*T = U*TD*U*.
(1.4)
以下では,L*, U*, D* を改めて L, U, D と表し,A が対称正定値行列の場
合のみを考える.
神谷研究室 ゼミ -4-
◎平方根 Cholesky 分解
分解条件
lk k = uk k , dk = 1 ( for k = 1, 2, …, N )
(1.5)
(1.5)→
A = LLT = UTU.
◎改訂 Cholesky 分解
分解条件
lk k = uk k = 1 ( for k = 1, 2, …, N )
(1.6)
(1.6)→
A = LDLT = UTDU .
神谷研究室 ゼミ -5-
◎ Meijerink の Cholesky 分解
分解条件
lk k = uk k = dk−1 ( for k = 1, 2, …, N )
(1.7)
(1.7)→
A = LDLT = UTDU .
Meijerink の Cholesky 分解をもとに不完全 Cholesky 分解を行う.
神谷研究室 ゼミ -6-
Algorithm 1.1 Meijerink の Cholesky 分解
i
)
○
○
li k
O
○
○
○
○
○
○
○
○
○
○
A = ( ai j ) : N 次対称正定値行列,
L = ( li j ) : N 次下三角行列,
D = diag[ d1, d2, …, dN ] .
1234567890123456
1234567890123456
1234567890123456
1234567890123456
1234567890123456
1234567890123456
○
(i
○
○
○
(j
○
○
○
○
○
○
lj i
○
lj k
○
○
di = li i− 1 ,
○
○
○
○
○
○
Σ l i kd kl j k ,
k=1
1234567890123456
123456
1234567890123456
1234567890123456123456
123456
1234567890123456
123456
1234567890123456
1234567890123456123456
123456
○
lj i = ai j −
i−1
○
○
○
○
○
○
○
○
○
do j = i, i + 1, …, N
○
○
○
○
do i = 1, 2, …, N
Fig. 1.1. 行列 L.
神谷研究室 ゼミ -7-
§ 2 不完全 Cholesky 分解
共役勾配法(CG 法)に対する前処理法として考え出された.
不完全 Cholesky 分解
1) ai j = 0 ならば lj i = 0,
2) l i i < ε ならば li i = ε .
但し,ε : 正定数 .
li i = 0 の場合も許されているので行列が対称であれば適用可能.
神谷研究室 ゼミ -8-
Algorithm 2.1 不完全 Cholesky 分解
A = ( ai j ) : N 次対称行列,L = ( li j ) : N 次下三角行列,
D = diag[ d1, d2, …, dN ] .
do i = 1, 2, …, N
do j = i, i + 1, …, N
if( ai j ≠ 0 ) then
lj i = ai j −
i−1
l i kd kl j k ,
Σ
k=1
else
lj i = 0 ,
if( l i i < ε ) li i = ε ,
di = li i− 1 ,
神谷研究室 ゼミ -9-
◎ fill in
ai j = 0 である行列 A を改訂 Cholesky 分解したとき,lj i ≠ 0 となることを
" fill in が起きる " という.
不完全 Cholesky 分解では ai j = 0 ならば lj i = 0. → fill in は起きない.
◎ ICCG 法
Ax = b,
但し,b : N 次元既知ベクトル,x : N 次元解ベクトル.
(2.1)
A を不完全 Cholesky 分解 →
A ∼ LDLT,
(2.2)
但し,L : 下三角行列,D = diag[ d1, d2, …, dN ].
神谷研究室 ゼミ - 10 -
(2.2) ⇔
( LD1/2 )− 1 A ( LD1/2 )− T ∼ E ,
(2.3)
但し,D1/2 = diag[ d11/2, d21/2, …, dN1/2 ].
(2.1) ⇔
Bz = c,
(2.4)
但し,B = ( LD1/2 )− 1 A ( LD1/2 )− T, z = ( LD1/2 )− T x, c = ( LD1/2 )− 1 b.
(2.4)に対し CG 法を適用すれば,少ない反復回数で解を得ることがで
きる.
神谷研究室 ゼミ - 11 -
Appendix
○定理 1 の証明
正則行列 A に対し部分軸選択の前進消去を行えば,前進消
去終了後に得られる上三角行列の対角要素は必ず非零な値
になる.故に,A を一意に分解できる.
○定理 2 の証明
定理 1 より A を A = LU と一意に分解できる.L = ( li j ), U = ( ui j )とする.
ここで,対角行列 D = diag[ d , d , …, d ]と上三角行列 U = ( u )を以下
1
2
N
ij
のように定義する.
d k ≡ uk k
( for k = 1, 2, …, N ),
u i j ≡ ui j / di
( for j = 1, 2, …, N ; i = 1, 2, …, j ).
定義より明らかなように,D は一意に定まり,U = DU となる.
神谷研究室 ゼミ - 12 -
故に,A を A = LDU と一意に分解できる.U を改めて U とすれば
A = LDU となる.
○定理 3 の証明
正定値行列の対角要素は必ず正になる.何故ならば,任意のベクトル
x に対し,正定値行列 A の 2 次形式:(x, Ax)は必ず正になるが,特に
x = ei とすれば,
( x, Ax ) = ( ei, Aei ) = ai i > 0
( for i = 1, 2, …, N ).
また,対称正定値行列Aに対して,| ar r | ≤ | ar s | , | as s | ≤ | ar s | ( r ≠ s ) と
すると矛盾を生ずる.何故ならば,eα β = αer + βes に対して A の 2 次
形式を考えると,
( eα β , Aeα β ) = ar rα2 + 2ar sαβ + as sβ2 > 0 ,
となる.ar r > 0, as s > 0 であるから,判別式は ar s2 − ar ras s < 0 となり条
件に反する.
神谷研究室 ゼミ - 13 -
上記の結果とガウスの消去法では行列の対称性と正値性は保存されるこ
とを考慮すれば,対称正定値行列に対しては部分軸選択無しのGaussの消
去法が適用可能であることがわかる.即ち,A を LU 分解したとき L が下
三角行列になる.
定理 2 より,対称正定値行列 A は,
A = LDU,
と一意に分解される.A は対称行列であるから AT は,
AT = A = LDU = UT DLT ,
となる.分解の一意性より,
L = UT.
ここで,L = U であるから,
L* = U*T .
神谷研究室 ゼミ - 14 -
Algorithm A.1 平方根 Cholesky 分解
A = ( ai j ) : N 次対称正定値行列,
L = ( li j ) : N 次下三角行列.
do i = 1, 2, …, N
li i = a i j −
i−1
l i2k
Σ
k=1
1
2
,
do j = i + 1, i + 2…, N
i−1
1
l i kl j k ,
lj i = l a i j − kΣ
=
1
ii
神谷研究室 ゼミ - 15 -
Algorithm A.2 改訂 Cholesky 分解
A = ( ai j ) : N 次対称正定値行列,
L = ( li j ) : N 次下三角行列,
D = diag[ d1, d2, …, dN ] .
do i = 1, 2, …, N
i−1
Σ
li i = 1 , di = a i i − k = 1 d kl i k ,
2
do j = i + 1, i + 2, …, N
i−1
1
l i kd kl j k ,
lj i = d a i j − kΣ
=
1
i
神谷研究室 ゼミ - 16 -
○CG法とICCG法のアルゴリズムの相違点
CG 法
ICCG 法
p0 = r0
p0 = ( LDL )− 1r0
( r k, r k)
αk =
( pk, Apk)
βk =
r k + 1, r k + 1
r k, r k
pk + 1 = rk + 1 + βκ pk
神谷研究室 ゼミ T
αk =
βk =
r k, LDL
T −1
rk
( pk, Apk)
r k + 1, LDL
T −1
r k, LDL
rk + 1
T −1
rk
pk + 1 = ( LDL )− 1rk + 1 + βκ pk
T
- 17 -