47
固有値解析 中島 研吾 東京大学情報基盤センター 大学院情報理工学系研究科数理情報学専攻 数値解析 (科目番号 500080)

中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

固有値解析

中島 研吾東京大学情報基盤センター

同 大学院情報理工学系研究科数理情報学専攻

数値解析 (科目番号 500080)

Page 2: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

Eigen 2

• 行列の固有値問題

• べき乗法

• 対称行列の固有値計算法

Page 3: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

行列の固有値問題3Eigen

0xxAx ,を満足する と x を求める

– : 固有値(eigenvalue)– x : 固有ベクトル(eigenvector)

一般固有値問題(General Eigenvalue Problem)

0xMxAx ,

ここでは標準固有値問題を扱う

固有値• 固有振動数

• 行列の性質に影響:スペクトル半径,条件数

標準固有値問題(Standard Eigenvalue Problem

Page 4: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

固有値問題の例(1/3)4Eigen

2x1x

km mkk

運動方程式

2212

1211

)()(

xmkxxxkxmxxkkx

xx

mkmkmkmk

dtd

/2///2

2

2

1

xx

x

Page 5: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

固有値問題の例(2/3)5Eigen

xx

mkmkmkmk

dtd

/2///2

2

tje

mkmkmkmk

ax

A

/2///2

振動的な解を仮定

aAa 2 ω(固有円振動数)

Page 6: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

固有値問題の例(3/3)6Eigen

固有振動数(Natural Frequency)

(構造物などの)力学システムには,固有振動数が存在する.

固有振動数あるいは,それに近い周波数で力学システムを加振すると,システムは共振を起す.

共振したシステムは,非常に大きな変位,ひずみ,応力を生じて,システムが崩壊,破損する!

共振を避けたり,抑制したりする設計が必要(耐震設計・免振設計など)

Page 7: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

固有値問題の計算(1/3)7Eigen

2111

A の固有値・固有ベクトルを求めよ.

0xxAx , 0x0xIA , 0det IA 特性方程式

01321

11)det( 2

IA

特性方程式=0

253

2

53,2

5321

Page 8: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

固有値問題の計算(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

Page 9: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

固有値問題の計算例(3/3)9Eigen

一般のn元の正方行列Aの固有値,固有ベクトルは,前述したような方法で求めることができる

0)det( IA

特性方程式は固有値λについてのn次の代数方程式(非線形)

大規模な次元(>106)を有する行列の固有値問題も扱える方法が開発されている:実に様々な解法がある

実用上重要なのは(絶対値)最大・最小固有値重根があると特別な扱い必要

- 本講義では基本的に重根は無しとする

Page 10: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

Eigen 10

• 行列の固有値問題

• べき乗法

• 対称行列の固有値計算法

Page 11: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

べき乗法(Power Method)11Eigen

絶対値最大の実固有値とそれに対応する固有ベクトルを求める方法

適当な初期ベクトル x(0) から始めて

)()1(

)1()2(

)0()1(

kk Axx

AxxAxx

Aをどんどん乗じていく

但し,単に乗じていくだけでは、発散したり,原点に収束したりしてしまうので,常に x(k)の大きさを

一定(例えば=1)に保つ必要がある.

x(k)は絶対値最大の固有値に対応する固有ベクトルに収束していく

Page 12: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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 の絶対値最大の実固有値に対応する固有ベクトルに収束

Page 13: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列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

固有値(絶対値の大きさ順)

それに対応する固有ベクトル(一次独立と仮定)

Page 14: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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 のそれに収束していく

Page 15: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 16: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

Eigen

16

べき乗法の収束

0lim,,3,2111

k

i

k

i ni

|i/1|が1より充分小さいことが収束に影響,特に

以下の成立が高速な収束に必要

11

2

Page 17: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 18: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 19: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 20: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

逆べき乗法

20Eigen

絶対値「最小」の実固有値とそれに対応する固有ベクトルを求める方法

1'1'

11

,

AAxxAxAx

として xxA '' にべき乗法を適用する

ALU としてLU分解を求めておくと効率が良い

Page 21: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 22: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列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

Page 23: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 24: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

Eigen 24

• 行列の固有値問題

• べき乗法

• 対称行列の固有値計算法

Page 25: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

対称行列の固有値計算法25Eigen

• 実対称行列の固有値⇒実数

• 弾性振動問題などで工学的に重要な実対称行列の固有値計算法として代表的な手法について紹介する:

– ハウスホルダ変換(Householder)による三重対角化(tridiagonalization)

– 二分法(Bi-Section)による固有値計算

– 逆反復法による固有ベクトル計算

Page 26: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

相似変換(Similar Transformation)26Eigen

• N×Nの正方行列A, Bに対して以下を満たすような正則行列Pが存在するとする:

B= P-1A P• このときAとBは相似(similar)であると呼び,BはAを相似変換した行列であると言う。

• AとBが相似であればそれらの固有値は一致する

• 任意の固有値に対するBの固有ベクトルを x とすると,Aの固有ベクトルは Px となる

Page 27: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

Householder変換:三重対角化(1/6)27Eigen

N次のベクトルx,yに対して以下の行列Qを定義するとき,行列Qによる相似変換をハウスホルダー変換(Householder)と呼ぶ:

1,2

TT uuyxyxuuuIQ

変換行列Qは対称かつ直交:

IuuuuuuuuIuuIuuIQQQQ

QuuIuuIuuIQ

TTTT

TTT

TTTTTTT

42222

222

Page 28: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 29: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 30: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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

Page 31: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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の符号は同じになるようにする:

Page 32: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

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とする

Page 33: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

Householder変換:非対称行列の場合33Eigen

三重対角行列ではなく,下記に示すような上ヘッセンベルク行列(Hessenberg)となる

**000**00

****0**********

~

A

Page 34: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列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である

Page 35: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

スツルムの定理(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)

Page 36: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

二分法(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

Page 37: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

二分法(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

Page 38: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

二分法(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 ,

Page 39: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

二分法(4/4)39Eigen

• [a,b]の初期値は前述のゲルシュゴリンの定理(次頁)を使用して以下のように設定することができる:

rbra

r niiini

,

0,max 011

• 予めbを固定して絞りこめば最大固有値を最初に求められる

– (k+1)番目に大きい固有値は k を上限値として繰り返し適用することで計算できる

• 逆にaを固定して絞りこめば最小固有値を最初に求めることができ,k番目に小さい固有値を下限として(k+1)番目に小さい固有値を求められる

Page 40: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

ゲルシュゴリンの定理(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

Page 41: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

逆反復法による固有ベクトル計算Inverse Iteration

41Eigen

• 二分法によって求めた固有値をk とすると適当な初期ベクトルx(0)について以下の方程式を解いていくと:

• k⇒∞のとき, x(i)は固有値kの固有ベクトルに収束していくことが期待される。

,2,1,01 iiik xxAI

Page 42: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

計算例(1/2)42Eigen

294.0416.00000416.398.117.0000117.641.318.0000318.47.125.1002025.12.1242.7000042.700.6

111111122222123333123444123455123456

A

Page 43: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列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}

Page 44: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

本講義のまとめ44

• スーパーコンピューティングへの招待

• 連立一次方程式の解法(直接法,反復法)

• 偏微分方程式の数値解法

• 固有値解法

• C言語によるプログラミング(入門編)

– 基礎的な事項(様々な原理)の説明,証明

• 数学的な背景をしっかりと理解した上で自分でプログラムを作って動かして見ることが重要

• 色々なことにチャレンジしてほしい

– 計算機を使いこなせること(数学的背景を理解した上でプログラムを作れること)は,チャレンジ可能性の幅を大きく広げることになる

Page 45: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

• もし 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

Page 46: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

スツルム列を構成することの証明(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

Page 47: 中島研吾 - nkl.cc.u-tokyo.ac.jpnkl.cc.u-tokyo.ac.jp/13n/Eigen.pdf · Eigen 9 一般のn元の正方行列Aの固有値,固有ベクトルは,前述した ような方法で求めることができる

スツルム列を構成することの証明(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