ガウス・ザイデル法について

ヤコビ法の原理
2015.7.15
情報処理I: 行列の収束計算
1. n = 1 の場合:
−
→
−
→
→
x (1) = D−1 ( b − H −
x (0) )
ヤコビ法,ガウス・ザイデル法
松谷茂樹
2. n = 2 の場合:
−
→
−
→
→
x (2) = D−1 ( b − H −
x (1) )
ガウス・ザイデル法、ヤコビ法がなぜ線型計算できるのかというこ
とに関して、代数的な観点から書かれた教科書がないようなので以下
を考える。これは
−
→
−
→
→
x (2) = D−1 ( b − H −
x (1) )
−
→
−
→
→
= D−1 ( b − HD−1 ( b − H −
x (0) ))
−
→
→
= D−1 (I − HD−1 ) b − (D−1 H)2 −
x (0)
にまとめる。
行列の分解
与えられた
n × n 行列 A と n 次元ベクトル b,

a11
a12
a13
···
a1 n−1
a22
a23
···
a2 n−1
 a21
 a
a32
a33
···
a3 n−1
 31
A=
..
..
..
..
 ..
.
.
.
.
 .
a
a
a
··· a
a1n
a2n
a3n
..
.




 を以下



n−11
n−12
n−13
n−1 n−1 an−1 n
an1
an2
an3
···
an n−1
ann
のように、厳密上三角行列 U と対角成分 D と厳密下三角行列 L
に分ける:
A=D+L+U
つまり、


0 a12 a13 · · · a1n−1
a1n
0
a23 · · · a2n−1
a2n 
0
0
0
0
· · · a3n−1
a3n 


U =
.
.
.
.
.. 
.
.
,
.
.
.
.
.
.
.
.
. 
.
0
0
0
···
0
an−1n 
0
0
0
···
0
0


0
0
0
···
0
0
0
0
···
0
0
 a21
 a
a32
0
···
0
0
 31


L= .
..
..
..
.. 
..

.
.
.
.
.
.
 .
a
0
0
n−11 an−12 an−1 3 · · ·
an1
an2
an3
· · · ann−1 0


a11
0
0
···
0
0
a22
0
···
0
0 
 0
 0
0
a33 · · ·
0
0 



D= .
..
..
..
.. 
..

.
.
.
.
.
. 
 .
 0
0
0
· · · an−1n−1
0 
0
0
0
···
0
ann
また、
H =L+D
とする。
  A = D + H 
x1
b1
b2 
x

−
→ 
−
→  2


b =
 ..  に対し x =  .. 
.
.
bn
xn
に関する方程式
−
→
→
A−
x = b
を解くことを考える。
ヤコビ法
3. n = 3 の場合
−
→
−
→
→
x (3) = D−1 ( b − H −
x (2)
−
→
−
→
→
= D−1 ( b − HD−1 ( b − H −
x (1) )
−
→
−
→
−
→
→
= D−1 ( b − HD−1 ( b − HD−1 ( b − H −
x (0) )))
−
→
→
= D−1 (I − HD−1 + (HD−1 )2 ) b − (D−1 H)3 −
x (0)
4. 一般の n の場合
−
→
x (n) = D−1
(n−1
∑
)
(−HD
−1 ℓ
)
−
→
→
b − (D−1 H)n −
x (0) ,
(J-1)
ℓ=0
となる。
5. 一般の n が十分大きい場合:
−D−1
n
∑
(−1)ℓ (HD−1 )ℓ − A−1 = (−1)n (D−1 H)n+1
ℓ=0
となることが知られている。
ある条件の下(対角優位: min aii >
∑
i̸=j
|ai,j |) において
n → ∞ に対して,
D
−1
(n−1
∑
)
(−HD
−1 ℓ
)
−→ A−1 ,
(D−1 H)n −→ 0
ℓ=0
となる。(レゾルベントと現代数学ではいう)
よって,(J-1) 式の第一項は A−1 b に漸近する。他方、第二項
−
→
→
(HD−1 )ℓ −
x (0) → 0
に近づく。従ってヤコビ法により,n を十分大きくすることで
−
→
−
→
x (n) −→ A−1 b
となり、解に漸近する。
ガウス・ザイデル法
−
→
−
→
→
→
A−
x = b が、(D + L + U )−
x = b に注意するとヤコビ法より,収
束の早い方法が考えられる。
→
初期値としてあるベクトル −
x (0) に対して、
−
→
−
→
→
→
A−
x = b が、(D + H)−
x = b に注意する。
→
初期値としてあるベクトル −
x (0) に対して、
−
→
−
→
→
x (n+1) = D−1 ( b − H −
x (n) )
−
→
−
→
→
→
x (n+1) = D−1 ( b − L−
x (n+1) − U −
x (n) )
−
→
→
を考え,n = 0, 1, 2, . . . の逐次計算を行い,収束した先を A−
x = b
→
の解 −
x ∗ であると考えるのがヤコビ法である。
−
→
−
→
→
A x = b の解 −
x ∗ に対しては,
−
→
→
を考え,n = 0, 1, 2, . . . の逐次計算を行い,収束した先を A−
x = b
→
の解 −
x ∗ であると考えるのがガウス・ザイデル法である。
−
→
−
→
→
A x = b の解 −
x ∗ に対しては,
−
→
−
→
→
x ∗ = D−1 ( b − H −
x ∗)
−
→
−
→
→
→
x ∗ = D−1 ( b − L−
x ∗ − U−
x ∗)
→
→
→
を満たすので,|−
x (n+1) − −
x (n) | は,よい初期値 −
x (0) に対しては
より早く小さくなる。(初期値依存性が存在する。)
→
→
→
を満たすので,|−
x (n+1) − −
x (n) | は,よい初期値 −
x (0) に対しては
より早く小さくなる。(初期値依存性が存在する。)
1
ガウス・ザイデル法の収束の原理
ヤコビ法,ガウス・ザイデル法がうまく行くわけ
以下、単純化して1次元にする:
1. 基本的な関係式:
−
→
−
→
→
→
A−
x = b が、(D + H)−
x = b に注意するとヤコビ法より,収
1. テイラー展開:
束の早い方法が考えられる。
−
→
−
→
→
→
x (n+1) = D−1 ( b − L−
x (n+1) − U −
x (n) ) は
テイラー展開より,次の等式が成り立つ:
∞
∑
1
= 1−x+x2 −x3 +x4 −· · · =
(−x)ℓ ,
1+x
−
→
→
→
(E + D−1 L)−
x (n+1) = D−1 ( b − U −
x (n) ) と書けることより,
基本関係式
x ≪ 1 に対しては
示す。
を計算している事と一致する.
但し、(AB)−1 = B −1 A−1 より (E +D−1 L)−1 D−1 = (D(E +
D−1 L))−1 = (D + L)−1 を利用した。これより,
)
−1
(−(D + L)
ℓ
U)
−
→
b
1
h
= (1 − +
d
d
=
∑
i̸=j
(D + L)
(n−1
∑
(−(D + L)
ℓ
U)
−→ A−1 ,
となる。(レゾルベントと現代数学ではいう)
)ℓ
∞ (
1∑
h
−
d
d
h
d
+ ···)
上記 h を h = ℓ + u に分解して,(d + ℓ + u)x = b となる x を
計算するのにおいて,ある初期値 x(0) を用意して、
−
→
→ 0
x(n+1) =
に近づく。従ってガウス・ザイデル法により,n を十分大き
くすることで
−
→
−
→
x (n) −→ A−1 b
1
(b − ux(n) )
d+ℓ
を逐次的に計算する。
( h )m
( u )n (0)
∑n
x(n+1) = m=0 − d+ℓ
x
b − − d+ℓ
となり、解に漸近する。
−
4. ガウス・ザイデルのイメージ
よって,(G-1) 式の第一項は A−1 b に漸近する。他方、第二項
) x
( )3
を逐次的に計算する。
)ℓ
(
)n
∑n (
x(n+1) = ℓ=0 − hd b − − hd x(0)
((D + L)−1 U )n −→ 0
(U (D + L)
h
d
(d + h)x = b となる x を計算するのにおいて,ある初期値 x(0)
を用意して、
1
x(n+1) = (b − hx(n) )
d
ℓ=0
−1 ℓ −
→(0)
( )2
3. ヤコビ法のイメージ
)
−1
は有限の n でもよい近似を
ℓ=0
|ai,j |)
n → ∞ に対して,
−1
ℓ
ℓ=0 (−x)
1
1
1
1
=
=
d+h
d(1 + h/d)
d 1 + h/d
(G-1)
となり,ある条件の下(対角優位: min aii >
において
∑n
d, h をある実数とする (T-1) を使って d > h のとき
ℓ=0
→
−(U (D + L)−1 )n −
x (0) ,
(T-1)
2. 数学的事実:
2. 一般の n の場合
(n−1
∑
, (|x| < 1),
ℓ=0
−
→
−
→
→
x (n+1) = (D + L)−1 ( b − U −
x (n) )
−
→
x (n) = (D + L)−1
こちらの方が収束が早いと思われる。
5. d = 16, ℓ = 1, u = 2, h = ℓ + u = 3 の場合, b = 1, x(0) = 0 と
して
\
J型
GS 型
1
0.05078
0.05190
2
0.05298
0.05272
3
0.05257
0.05262
4
0.05264
0.05263
5
0.05263
0.05263
となり,1/19 = 0.0526316 への収束は当然であるが後者の方
がよい事が見える。
2
付録:行列の公式
(
a11
a21
1. A =
(
a11
a21
a12
a22
(
a12
a22
)(
)
(
とB=
b11
b21
(
a11
a21
2. A =
a11
a21
a12
a22
a11
a21
a31
(
a11
a21
a31
a12
a22
a32
(
a11
a21
a31
4. A =
(
a11
a21
a31
a12
a22
a32
(
=
)
b1
b2
a12
a22
a32
a13
a23
a33
a12
a22
a32
a13
a23
a33
−
→
と b =
b12
b22
)
との掛け算
a13
a23
a33
b1
b2
b1
b2
b3
(
=
)
( )
b1
b2
b3
−
→
と b =
)( )
a13
a23
a33
との掛け算
a11 b1 + a12 b2
a21 b1 + a22 b2
)
との掛け算
a11 b1 + a12 b2 + a13 b3
a21 b1 + a22 b2 + a23 b3
a31 b1 + a32 b2 + a33 b3
)
(
b11
b21
b31
とB =
b11
b21
b31
)
( )
(
=
)(
b11
b21
a11 b12 + a12 b22
a21 b12 + a22 b22
)( )
(
3. A =
a12
a22
)
b12
b22
a11 b11 + a12 b21
a21 b11 + a22 b21
=
(
b12
b22
b32
a11 b11 + a12 b21 + a13 b31
a21 b11 + a22 b21 + a23 b31
a31 b11 + a32 b21 + a33 b31
b13
b23
b33
)
b12
b22
b32
5. A =
a11
a21
a31
a12
a22
a32
a13
a23
a33
)
)
との掛け算
a11 b12 + a12 b22 + a13 b32
a21 b12 + a22 b22 + a23 b32
a31 b12 + a32 b22 + a33 b32
a11 + b13 + a12 b23 + a13 b33
a21 + b13 + a22 b23 + a23 b33
a31 + b13 + a32 b23 + a33 b33
(
b13
b23
b33
)
(
とB =
b11
b21
b31
b12
b22
b32
)
b13
b23
b33
d1
d2
d3
)
との掛
け算
(
)(
)
a11 a12 a13
b11 b12 b13 d1
a21 a22 a23
b21 b22 b23 d2
a31 a32 a33
b31 b32 b33 d3
(
a11 b11 + a12 b21 + a13 b31 a11 b12 + a12 b22 + a13 b32
= a21 b11 + a22 b21 + a23 b31 a21 b12 + a22 b22 + a23 b32
a31 b11 + a32 b21 + a33 b31 a31 b12 + a32 b22 + a33 b32
a11 b13 + a12 b23 + a13 b33
a21 b13 + a22 b23 + a23 b33
a31 b13 + a32 b23 + a33 b33
a11 d1 + a12 d2 + a13 d3
a21 d1 + a22 d2 + a23 d3
a31 d1 + a32 d2 + a33 d3
)
3