Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
固有値解析
中島 研吾東京大学情報基盤センター
同 大学院情報理工学系研究科数理情報学専攻
数値解析 (科目番号 500080)
Eigen 2
• 行列の固有値問題
• べき乗法
• 対称行列の固有値計算法
行列の固有値問題3Eigen
0xxAx ,を満足する と x を求める
– : 固有値(eigenvalue)– x : 固有ベクトル(eigenvector)
一般固有値問題(General Eigenvalue Problem)
0xMxAx ,
ここでは標準固有値問題を扱う
固有値• 固有振動数
• 行列の性質に影響:スペクトル半径,条件数
標準固有値問題(Standard Eigenvalue Problem
固有値問題の例(1/3)4Eigen
2x1x
km mkk
運動方程式
2212
1211
)()(
xmkxxxkxmxxkkx
xx
mkmkmkmk
dtd
/2///2
2
2
1
xx
x
固有値問題の例(2/3)5Eigen
xx
mkmkmkmk
dtd
/2///2
2
tje
mkmkmkmk
ax
A
/2///2
振動的な解を仮定
aAa 2 ω(固有円振動数)
固有値問題の例(3/3)6Eigen
固有振動数(Natural Frequency)
(構造物などの)力学システムには,固有振動数が存在する.
固有振動数あるいは,それに近い周波数で力学システムを加振すると,システムは共振を起す.
共振したシステムは,非常に大きな変位,ひずみ,応力を生じて,システムが崩壊,破損する!
共振を避けたり,抑制したりする設計が必要(耐震設計・免振設計など)
固有値問題の計算(1/3)7Eigen
2111
A の固有値・固有ベクトルを求めよ.
0xxAx , 0x0xIA , 0det IA 特性方程式
01321
11)det( 2
IA
特性方程式=0
253
2
53,2
5321
固有値問題の計算(2/3)8Eigen
xAx より
221
121
2 xxxxxx
この連立方程式は、必ず不定
したがって,x1,x2のどちらか一方を定数をおく.
たとえば x1=c1とおけば x2=(1-λ)c1
固有ベクトル:
62.01
251
1
7.21
251
1
112
111
cc
cc
x
x
固有値問題の計算例(3/3)9Eigen
一般のn元の正方行列Aの固有値,固有ベクトルは,前述したような方法で求めることができる
0)det( IA
特性方程式は固有値λについてのn次の代数方程式(非線形)
大規模な次元(>106)を有する行列の固有値問題も扱える方法が開発されている:実に様々な解法がある
実用上重要なのは(絶対値)最大・最小固有値重根があると特別な扱い必要
- 本講義では基本的に重根は無しとする
Eigen 10
• 行列の固有値問題
• べき乗法
• 対称行列の固有値計算法
べき乗法(Power Method)11Eigen
絶対値最大の実固有値とそれに対応する固有ベクトルを求める方法
適当な初期ベクトル x(0) から始めて
)()1(
)1()2(
)0()1(
kk Axx
AxxAxx
Aをどんどん乗じていく
但し,単に乗じていくだけでは、発散したり,原点に収束したりしてしまうので,常に x(k)の大きさを
一定(例えば=1)に保つ必要がある.
x(k)は絶対値最大の固有値に対応する固有ベクトルに収束していく
Eigen
12
べき乗法のアルゴリズム
• Step 0: ||x(0)||2=1 である初期ベクトル x(0) を選び,k=0 とする
• Step 1: 以下のように x(k+1) を更新する:
• Step 2: k=k+1としてStep 1を繰り返す
2
)(
)()1()()()()( ,,
k
kkkkkk
yyxyxAxy
:A の絶対値最大の実固有値に収束
x(k) :A の絶対値最大の実固有値に対応する固有ベクトルに収束
Eigen
13
べき乗法が最大固有値に収束する理由(1/3)
nncccc xxxxy 332211)0(
nnncccc xxxxAyx 333222111)0()1(
nnk
nkkkkkk cccc xxxxyAAyx '''' 333222111
)0()1()(
n 321
nxxxx ,,,, 321
固有値(絶対値の大きさ順)
それに対応する固有ベクトル(一次独立と仮定)
Eigen
14
べき乗法が最大固有値に収束する理由(2/3)
0'1 cif
n
n
k
n
kkkk
cc
cc
ccc xxxxy
113
1
3
1
32
1
2
1
2111
)(
''
''
'''
0lim,,3,2111
k
i
k
i ni
111)( ': xy ckif kk
べき乗法によって求められるベクトルx(k)
の「方向」が最大固有値 に対応する固有ベクトル x1 のそれに収束していく
Eigen
15
べき乗法が最大固有値に収束する理由(3/3)
2
)1(111
1
2
)1(
)1()(
111
1)1( 1''
kk
k
kkkk cc
yx
yyxxy
2
)1(111)()( 1'
kkkk c
yxxΑy
1
2
1111
1
2
1111
1
2
1111
2
1111
1
1',1'
1',1'
,,
kk
kk
kk
kk
kk
kk
cc
cc
yx
yx
yx
yx
xxyx
1,,
,,, )()(
1)()(
)()(
)()(
kkkkkk
kk
xxyxxx
yx
Eigen
16
べき乗法の収束
0lim,,3,2111
k
i
k
i ni
|i/1|が1より充分小さいことが収束に影響,特に
以下の成立が高速な収束に必要
11
2
Eigen
17
べき乗法の例(1/3)
2111
A
の絶対値最大の固有値およびその固有ベクトルをべき乗法により求めよ.
1,1,0,1 000 Axyx
1,1
211,11
2
01
yx
1回目
11,1,01, 00 yx
Eigen
18
べき乗法の例(2/3)
3,2
1313,2
21
1323,2
211
2
12
yx
2回目
500.2253,2
21,11
21, 11
yx
3,22
1,1,12
1 111 Axyx
Eigen
19
べき乗法の例(3/3)
3回目
8,5
8918,5
131
89138,5
1311
2
23
yx
6153.213348,5
131,32
131, 22
yx
8,5131,3,2
131 222 Axyx
前述した厳密解 618034.22
531
逆べき乗法
20Eigen
絶対値「最小」の実固有値とそれに対応する固有ベクトルを求める方法
1'1'
11
,
AAxxAxAx
として xxA '' にべき乗法を適用する
ALU としてLU分解を求めておくと効率が良い
Eigen
21
べき乗法の加速手法:原点移動(Shift)|2/1|の値を小さくすることにより収束を加速する
xIxxBx
xxIBAxIABxAx
ppp
pwherep
constant:,
行列Bの固有値(:行列Aの固有値)
行列Bの固有ベクトル(Aの固有ベクトルに一致)
:
:x
p
適当な定数pを選択することにより行列Bの絶対値最大/2番目に大き
な固有値の比を小さくできれば,行列Bにべき乗法を適用した方が良い
1
2
1
2
pp
行列Bの固有値 行列A
Eigen
22
原点移動の効果
40.0,0,1,2111 )0(
pxA
下記の条件においてAの絶対値最大の固有値およびその固
有ベクトルをべき乗法,原点移動付きべき乗法により求めよ.
原点移動無し 原点移動有り
1 1.000000E+00 1.000000E+00
2 2.500000E+00 2.617647E+00
3 2.615385E+00 2.618034E+00
4 2.617978E+00
5 2.618033E+00
6 2.618034E+00
Eigen
23
べき乗法・原点移動付きべき乗法の例
べき乗法
do iter= 1, 10Y(1)= A(1,1)*X(1) + A(1,2)*X(2)Y(2)= A(2,1)*X(1) + A(2,2)*X(2)
EIGEN= X(1)*Y(1) + X(2)*Y(2)
DL= dsqrt(Y(1)**2+Y(2)**2)X(1)= Y(1)/DLX(2)= Y(2)/DL
enddo
原点移動付きべき乗法
X(1)= 1.d0; X(2)= 0.d0A(1,1)= A(1,1) - SHIFTA(2,2)= A(2,2) - SHIFT
do iter= 1, 10Y(1)= A(1,1)*X(1) + A(1,2)*X(2)Y(2)= A(2,1)*X(1) + A(2,2)*X(2)
EIGEN= X(1)*Y(1) + X(2)*Y(2) + SHIFT
DL= dsqrt(Y(1)**2+Y(2)**2)X(1)= Y(1)/DLX(2)= Y(2)/DL
enddo
Eigen 24
• 行列の固有値問題
• べき乗法
• 対称行列の固有値計算法
対称行列の固有値計算法25Eigen
• 実対称行列の固有値⇒実数
• 弾性振動問題などで工学的に重要な実対称行列の固有値計算法として代表的な手法について紹介する:
– ハウスホルダ変換(Householder)による三重対角化(tridiagonalization)
– 二分法(Bi-Section)による固有値計算
– 逆反復法による固有ベクトル計算
相似変換(Similar Transformation)26Eigen
• N×Nの正方行列A, Bに対して以下を満たすような正則行列Pが存在するとする:
B= P-1A P• このときAとBは相似(similar)であると呼び,BはAを相似変換した行列であると言う。
• AとBが相似であればそれらの固有値は一致する
• 任意の固有値に対するBの固有ベクトルを x とすると,Aの固有ベクトルは Px となる
Householder変換:三重対角化(1/6)27Eigen
N次のベクトルx,yに対して以下の行列Qを定義するとき,行列Qによる相似変換をハウスホルダー変換(Householder)と呼ぶ:
1,2
TT uuyxyxuuuIQ
変換行列Qは対称かつ直交:
IuuuuuuuuIuuIuuIQQQQ
QuuIuuIuuIQ
TTTT
TTT
TTTTTTT
42222
222
Householder変換:三重対角化(2/6)28Eigen
以下に示す対称行列AをQによって三重対角化する:
nn
nn
nnnknn
nkkkkk
nk
nk
aaaa
aaaa
aaaaaaaa
1
11
332
221
11
21
21
222221
112111
00000
0000000
~
AA
Householder変換:三重対角化(3/6)29Eigen
N次のベクトル x,y,u を以下のように置く :
1
31
21
3
2
1
1
31
211
11
1
31
21
11 0
1,
0
0
0,
nnnn a
asa
u
uuu
a
asas
a
a
aaa
yx
uyxyx
21
231
221 naasa yx
Householder変換:三重対角化(4/6)30Eigen
変換行列 Q1 を以下のように置く :
22
22
222
2
1
21220
22120
222100001
2
nknn
nkkk
nk
T
uuuuu
uuuuu
uuuuu
uuIQ
0
0
21220
22120
222100001
1
11
1
31
21
11
22
22
222
2
1
sa
a
aaa
uuuuu
uuuuu
uuuuu
nnknn
nkkk
nk
xQy
Householder変換:三重対角化(5/6)31Eigen
nnnkn
nkkkk
nk
aaa
aaa
aaassa
'''0
'''0
'''00
2
2
22221
111
1111
1
AQQAQQB
n
iinn aaaaaas
2
21
21
21,1
221
221211 sign
s1は以下のようにとられる。桁落ちを防ぐため, a21 とs1の符号は同じになるようにする:
Householder変換:三重対角化(6/6)32Eigen
nnnkn
nkkkk
nk
aaa
aaa
aaassa
'''0
'''0
'''00
2
2
22221
111
1111
1
AQQAQQB
この操作を(n-2)回繰り返すことによって行列Aは三重対角行列 に変換可能されるA~
新たなAとする
Householder変換:非対称行列の場合33Eigen
三重対角行列ではなく,下記に示すような上ヘッセンベルク行列(Hessenberg)となる
**000**00
****0**********
~
A
スツルム列(Sturm Chain/Sequence)34Eigen
実区間[a,b]において,実係数を持つ多項式f(x)が与えられた場合,以下の4条件を満たす実係数多項式の列
f(x), f1(x), f2(x), f3(x), ..., fl(x)は実区間[a,b]においてスツルム列をなすという。但し f0(x)=f(x)
① 実区間[a,b]内の全ての点xに対して,隣り合う2つの多項式fk(x), fk+1(x)は同時に0とならない
② 実区間[a,b]内のある点x0で fk(x0)=0 ならば, fk-1(x0) fk+1(x0)<0③ 列の最後の式fl(x)は実区間[a,b]において一定の符号を持つ
④ ある点x0で f(x0)=0 ならば f’(x0) f1(x0)>0である
スツルムの定理(Sturm’s Theorem)35Eigen
• 多項式の列 f(x), f1(x), f2(x), f3(x), ..., fl(x) が実区間[a,b]においてスツルム列をなし,f(a) f(b)≠0 とする
• xを固定して関数列 f(x), f1(x), f2(x), f3(x), ..., fl(x) を左から右に見ていったときの符号の変化の回数を N(x) とする
• 多項式 f(x) の実区間[a,b]に存在する零点(解)の個数 n0 は以下の式で与えられる(証明略):
n0 = N(a) - N(b)
二分法(1/4)36Eigen
• 三重対角行列 に対して行列 を考え,その第k主小行列を pkと置く:
kk
kk
kp
1
11
332
221
11
00000
0000000
A~ AI ~
• これを最後の行に関して展開すると以下の漸化式を得る:
22
11 kkkkk ppp
• k=2について成立するように下記のように仮定しておく: 10 p
二分法(2/4)37Eigen
• k=n のとき以下のn次多項式の根が の固有値⇒Aの固有値:A~
AI ~ np
• 上記多項式の以下の列はスツルム列を構成する(証明付録)
0121 ,,,,, ppppp nnn
• 対称行列の固有値は全て実数であり,以下を仮定すると:
• 実区間[a,b]に存在する零点(固有値)の個数 n0 は:
n0 = N(a) - N(b), n0 =1なら実区間[a,b]に固有値が1個存在
• より大きい固有値の個数はN()– 証明略,スツルムの定理より導かれる
n 321
二分法(3/4)38Eigen
• 二分法では,スツルムの定理を用いて行列の特性方程式の根の存在範囲を狭めて行くことで固有値の近似解を得る。
• ある適当な実定数[a,b]に関して,もしk (k番目に大きい固有値)が区間[a,b]の間に存在するのであれば,以下が成立:
bNkaNk ,
• 区間[a,b]を半分に狭めるために2点の中点 を考える。
• もしk が区間[a,c]に存在するならば,下記が成立する:
そうでなければ,k は区間[c,b]に存在する。
• kの存在する区間を改めて[a,b]と設定し以上を繰り返す。
• 正の微少量に対して |a-b|<ならば k = (a+b)/2として終了。
2bac
cNkaNk ,
二分法(4/4)39Eigen
• [a,b]の初期値は前述のゲルシュゴリンの定理(次頁)を使用して以下のように設定することができる:
rbra
r niiini
,
0,max 011
• 予めbを固定して絞りこめば最大固有値を最初に求められる
– (k+1)番目に大きい固有値は k を上限値として繰り返し適用することで計算できる
• 逆にaを固定して絞りこめば最小固有値を最初に求めることができ,k番目に小さい固有値を下限として(k+1)番目に小さい固有値を求められる
ゲルシュゴリンの定理(Gershgorin)40Eigen
中心がaii,半径 の円で囲まれた複素平面内の領域をSi
ji
iji ar
このとき,行列A(aij)の全ての固有値 k は和集合 の内部に存在する。すなわち以下を満たす行番号iが存在:
n
iiS
1
ji
ijkii aa
(証明)
xを Ax=kx を満たすAの固有ベクトルとする。 xの絶対値最大の成分をxiとするとき, Ax=kx の第i行を書き下すと以下を得る。
これから直ちに結論を得る。
ji i
jijkii x
xaa
逆反復法による固有ベクトル計算Inverse Iteration
41Eigen
• 二分法によって求めた固有値をk とすると適当な初期ベクトルx(0)について以下の方程式を解いていくと:
• k⇒∞のとき, x(i)は固有値kの固有ベクトルに収束していくことが期待される。
,2,1,01 iiik xxAI
計算例(1/2)42Eigen
294.0416.00000416.398.117.0000117.641.318.0000318.47.125.1002025.12.1242.7000042.700.6
111111122222123333123444123455123456
A
計算例(2/2)43Eigen
1= 1.721E+01 {5.507E-01 5.187E-01 4.565E-01 3.678E-01 2.578E-01 1.327E-01}
2= 1.988E+00 {5.187E-01 2.578E-01 -1.327E-01 -4.565E-01 -5.507E-01 -3.678E-01}
3= 7.747E-01 {4.565E-01 -1.327E-01 -5.507E-01 -2.578E-01 3.678E-01 5.187E-01}
4= 4.462E-01 {3.678E-01 -4.565E-01 -2.578E-01 5.187E-01 1.327E-01 -5.507E-01}
5= 3.189E-01{2.578E-01 -5.507E-01 3.678E-01 1.327E-01 -5.187E-01 4.565E-01}
6= 2.652E-01 {1.327E-01 -3.678E-01 5.187E-01 -5.507E-01 4.565E-01 -2.578E-01}
本講義のまとめ44
• スーパーコンピューティングへの招待
• 連立一次方程式の解法(直接法,反復法)
• 偏微分方程式の数値解法
• 固有値解法
• C言語によるプログラミング(入門編)
– 基礎的な事項(様々な原理)の説明,証明
• 数学的な背景をしっかりと理解した上で自分でプログラムを作って動かして見ることが重要
• 色々なことにチャレンジしてほしい
– 計算機を使いこなせること(数学的背景を理解した上でプログラムを作れること)は,チャレンジ可能性の幅を大きく広げることになる
• もし pk()=pk-1()=0 が成立すると,下記漸化式より, pk-2()=0となる:
• 従って,全ての j についてpj()=0となってしまうため,下記よりこの仮定はあり得ない:
スツルム列を構成することの証明(1/3)45Eigen
① 実区間内の全ての点に対して,隣り合う2つの多項式 pk(), pk+1()は同時に0とならない
22
11 kkkkk ppp
10 p
② 実区間内のある点0で pk(0)=0 ならば, pk-1(0) pk+1(0)<0 0
0if
0101
012
010
12
11
kk
kkkk
kkkkk
ppppp
ppp
0121 ,,,,, ppppp nnn
スツルム列を構成することの証明(2/3)46Eigen
③ 列の最後の式 p0()は実区間において一定の符号を持つ
21
'212
'1
21
'11
'
'2
21
'11
'
22
11
kkkkkk
kkkk
kkkkkkk
kkkkk
ppppp
pppp
ppppp
ppp
④ ある点0で pn (0)=0 ならば pn’(0) pn-1(0)>0である
10 p• これは下記より明らか:
(*1)
0121 ,,,,, ppppp nnn
スツルム列を構成することの証明(3/3)47Eigen
• ここで下記のように qk を定義すると(*1)は(*2)のように表される:
(*2)
nkqpq
ppppq
kkkk
kkkkk
,,3,2,12
12
1
'11
'
• ところで,以下が成立する:
1
01'
11
'1
'010
'11
pp
pppppq
k
• したがって(*2)より以下が成立する:
00
0
,,3,2,0
0010'
0
'11
'
nnnn
nnnnn
k
pppq
ppppq
nkq
0121 ,,,,, ppppp nnn