LU分解のまとめ

Download Report

Transcript LU分解のまとめ

線型方程式
吉水由美
•発表内容
線型方程式について学んできた中で,
LU分解と反復法の最初の部分について
発表しようと思います.
•ガウスの消去法について
a11 x1  a12 x2    a1n xn  b1
(1)
(1)
(1)
(1)
a21 x1  a22 x2    a2 n xn  b2

(1)
(1)
(1)
(1)
an1 x1  an 2 x2    ann xn  bn
(1)
(1)
(1)
(1)
次のような演算で消去を行い,右上三角行列を作り,
方程式を解く方法
(各係数の右上の添字は消去の過程を表すためにつけ
たもの)
a

a
m
(
i,j
k
1
, ,n

1
)
i
j
i
j 
i
ka
k
j
(k

1
)
(k
)
(k
)
(k

1
)
(k
)
(k
) (k
)

a
b

b
m
ik
ik /a
k
k
i
i 
ik b
k ,m
(
k

1
)
(
k
)
(
k
)
(
k
)
•ガウスの消去法の演算回数
n1

k 1
1 3
(n  k )(n  k  2)  n  O(n2 )
3
3
(
1
3
)
n
より,約
回の乗算と加算が必要
• LU 分解
A
A (a
ij )
(1
)
(1
)
( 1)
a21
m21  (1)
a11 ,
 1

  m21
M1    m31


 m
 n1
0 0
1 0
0 1
0
0
0
0
0
(1 )
an1
mn1  (1)
a11 とおき
,
(1)
(1)
(1)

a11 a12  a1n 
0

 (1)

(
1
)
(
1
)
0
a
a

a


(1)
21
22
2
n
A 
0





0


(1)
(1)
(1) 
a
a

a
1 とおくと 
n2
nn 
 n1
M
1A A
(1)
(2)
つまり,消去の第1段は行列 M1 を左からかけたこと
に等しい.
第 k段は  1
0

Mk  



0

0
0
0
1
 mk 1, k
 mn, k
1
0
0



(k )
a jk

 , m jk 
( k)

a
kk

 (jk
1
, ,n
)

1
(k)
(k
1
) と表せる
とおくと MA
A
k
最終段まで進むと
( n)
M
M
M
M
A

A
n

1 n

2
2 1
 a(1) a(1) a(1)
 11 12 13
( 2)
( 2)

a
a
22
23

(3)
U  
a33

0



 a1(1n) 
 a2( 2n) 
 a3(3n) 

  
( n) 
ann

AX  b の右辺のベクトル b にも同様の操作
M
M
M
b

b を行なえば
n

1
n

2 M
2
1
(n)
UX

b
は
となる
AX  b
(
n
)
M k の逆行列は
Mk
1
1

0





0

0

0


0
1
mk 1,k

mn,k
1
0
0









 1

で与えられる(これは Mk Mk I からわかる)
1

1 
1
1 2

1

1
n

1 n

1
L

M
MM
M とおくと
 1

 m21
m
L   31
 
 

m
 n1
LU  M1
A
0
1
m32


mn 2
1
0
0
1


mn3
1


0




0
1
 mnn1
Mn 1 Mn1
であり,これを A の
0

0
0


となる
0

1

M1 A
LU分解という
•LU分解に必要な演算回数
計算時間の大部分はLU分解の過程で費やされる.
そこで必要な回数は
n1 n
加減算の回数:
乗算の回数:
1 3
2
  1  n  O(n )
3
k 1ik 1 j k 1
n1 n
n
1 3
2
  (1 1)  n  O(n )
3
k 1ik 1
j k 1
n
したがって,LU分解の過程で,加減算と乗算それぞれ
3
(
1
3
)
n
約
回必要になる.
そして,LU分解された行列を使って右辺ベクトル b の
異なる複素組の連立1次方程式を解くときには,1組の
方程式あたり約 n2 回の加減算と乗算がそれぞれ必要
になる.
•対称行列の
T
LDL 分解
A の LU 分解をA  LU とするとき
 a11(1)


a22 (2)
D

 0

U  DV
 1 v12

1

V 




v13
v23
1
0 




( n) 
ann 
とおいて
v1n 

v2n 
 v
kj

,
1 
(k)
akj (k  j)
 (k )
akk
と表せる
T
Aが対称行列(A
 A のこと)とする
第(k-1)段までで得られた行列 A( k ) の
第k行以下の小行列を
 ak ,k
a
k , k 1

(k)
(k)
 ak 1, k
ak 1, k 1
(k )
As  

 a (k ) a (k )
n, k 1
 n, k
(k)
とおくと As ( k ) は対称である
(k )
ak , n 
(k)
ak 1, n 


(k )
an, n 
(k )
なぜなら,第(k-1)段で行われる変形は
( k1)
aij  aij
(k)
( k 1)
ai,k 1
( k 1)

ak 1, j
( k 1)
ak 1,k 1
であるが,alm aml であったから aij
(1)
aij aji
(3)
(3)
(1)
とつづき
(k )
aij aji
(k)
(2)
aji が分かり
(2)
(k)
(k )
が分かる.
ゆえに
は対称
As ( k )
akj
a jk
vkj  (k )  (k )  mjk となり V  L である.
akk
akk
T
T
A
LD
L
つまり対称行列は
と分解できる.
これを A の
LDLT
分解という
•
T
LDL 分解に必要な計算回数
分解の過程で必要な計算回数は
n k 1
1 3
2
n  O(n )
加減算の回数:  i   k 
6
k 1i1 k 1
n k 1
i 1 
1 3
2
n  O(n )
乗算の回数:     2 1 
k 1 i 1
j 1 
6
n
したがって,分解の過程で,加減算と乗算それぞれ
3
約 (1 6)n 回必要になる.
そして,分解された方程式を解くときには,
約 n2 回の加減算と乗算がそれぞれ必要になる.
•反復法とは…
ガウスの消去法をまともに解くと,大きい行列では計
算回数が多くなってしまう.
このため,適当に近似を繰り返していくことで解を求め
ることはできないだろうか,ということが考えられてきた.
連立方程式
Ax  b
で,真の解を x ,ある計算により n 回目で求めら
れたものを x(n)とする.計算回数を増やして
lim x(n)  x
n
となったとする.
このように計算回数を増やして,真の解に近づける
方法を反復法という.
•解の収束の条件
Ax  b
x
・・① を同値な x  Mx  c ・・② に変形する.
( k 1)
 Mx
(k )
c
・・③ が
適当な初期値 x(0) から出発して計算をしていき,
①の解 x に収束すればよい.
x
K回目の計算誤差を
(k )
e
③から②を引くと
( k 1)
x
e
x
(k )
 x とおく.
 x  M (x
( k 1)
 Me
(k )
(k )
 x)
一般には初期値 x(0) は任意に選ぶので,その誤差
( 0)
e
x
( 0)
x
(k )
は0ではない.反復とともに x が x に収束するため
には, e(k ) が反復とともに0に収束しなければならない.
そのためには反復行列Mの固有値の絶対値がすべて
1より小さくなくてはならない.
Mの固有値がすべて1より小さければ,反復と共に誤差
は e( k 1)  Me( k ) にしたがって減少し,0に収束する.
すなはち,x(k 1)  Mx( k )  c が収束するための必要
十分条件は,反復行列Mのすべての固有値の絶対値
が1より小さいことである.
•ヤコビ法
非対角成分に相当する項をすべて右辺に移項した
次の形において反復を行う方法をヤコビ法という.
x1( k 1)
1 
 a11 b1

 (a12x2

(k )
x2(k 1)  a221 b2  (a21x1
(k )

 a13x3
(k )
( k ) 
   a1n xn 


 a23x3( k )    a2n xn( k ) 


xn
( k 1)
行列で表すと
すなわち
1 
 ann bn

(k )
 (an1x1
 an 2 x2
(k )
( k ) 
   ann1xn1 





x( k 1)  D1 b  ( E  F ) x( k ) 
x(k 1)  D1(E  F)x(k )  D1b
ただし
 0

 a11





a21 0


a22


a

D
E

a
0
31
32






 
 




a
nn 

 an1 an2   0 
 0 a12 a13  a1n 


0 a23  a2n 

F  
0
 

  


0 

まとめ
ガウスの消去法よりも計算回数が少なくてすむ方
法がいくつかあることがわかりました.
線型方程式については,たくさん学ぶことがありま
す.今後の課題としては,行列の固有値問題につ
いて学んでいきたいと思います.
ガウスの消去法についての説明や,コレスキー法,
反復法など今まで学んできたことはホームページ
に載せてあります.
http://tnt.math.metro-u.ac.jp/labo/grad/2004/yumi