数値解析 - 九州大学(kyushu...

Post on 19-Jun-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

数値解析 第12回

2015年7月8日(水)

理学部物理学科情報理学コース

1

1.非線形方程式の数値解法

1.1 はじめに

1.2 2分法  

1.3 補間法

1.4 ニュートン法 

1.4.1 多変数問題への応用

1.4.2 ニュートン法の収束性

2.連立1次方程式の解法

2.1 序論と行列計算の基礎 

2.2 ガウスの消去法 

2.3 3重対角行列の場合の解法

2.4 LU分解法 

2.5 特異値分解法

2.6 共役勾配法

2.7 反復法 2.7.1 ヤコビ法 2.7.2 ガウス・ザイデル法

2.7.3 SOR法

講義内容

2

3. 固有値と固有ベクトルの数値計算

3.1 固有値問題の序論

3.2 ヤコビの方法(対角行列への帰着)

3.3 ギブンスの方法(3重対角行列への帰着)

3.4 ハウスホルダー法(3重対角行列への帰着)

3.5 DKA法(3重対角行列の固有値の計算) 3.6 バイセクション法(3重対角行列の固有値の計算)

 

4. その他の数値計算法

3

•  出席点5割+期末試験5割

•  講義資料は毎回配布予定です. 欠席した場合,各自でダウンロードしてください.   http://yebisu.cc.kyushu-u.ac.jp/~watanabe   (PDF版をその週の木曜朝までには公開予定)

•  講義開始後約30分で出欠を取ります.

•  研究室: 092-642-2295 •  E-mail: watanabe@cc.(九州大学のドメイン)

Subject に,必ず「数値解析」と記入してください.

成績評価,その他の連絡事項

4

5

•  7月8日(水) 講義

•  7月15日(水) 休講

•  7月22日(水) 講義

•  7月29日(水) 講義  

•  8月5日(水) 3限目(13:00〜14:30) 定期試験

•  8月末日成績締切

今後の予定

相似変換の繰り返し

A1 ≡ A

A2 = P1−1A1P1

A3 = P2−1A2P2

!

#

$

%%

&

%%

*

* 0*!

0 **

!

"

########

$

%

&&&&&&&&

対角行列 3重対角行列

* *

* * * 0* * !! ! !

0 ! * ** *

!

"

########

$

%

&&&&&&&&

対角要素→固有値

対角形に収束するまで繰り返す

固有値は3重対角行列に適した別の反復法により求める

一旦,3重対角形に変換する

3.2 ヤコビ法

3.3 ギブンス法

3.4 ハウスホルダー法

3.5 DKA法 3.6 バイセクション法

固有値問題の数値解法

6

3.4 Householder法   

3重対角行列

* *

* * * 0* * !! ! !

0 ! * ** *

!

"

########

$

%

&&&&&&&&

変換 :A n n× 対称行列

Givens法にならぶ3重対角化の代表的な方法で,演算回数が 行列の次数(n)と明確に関係付けられる.

3重対角化のプロセスは固有値問題以外にも有効に使われ, 「Householder変換」とも呼ばれる.

Alston S. Householder, Unitary triangularization of a nonsymmetric matrix, Journal of the ACM (JACM) , Volume 5, Issue 4 (Oct. 1958) Pages: 339-342

《論文》

7

2 tP I= − u u

2 22

11

nt

iiu

=

= = =∑u uu

変換行列に次の形を仮定する

u = t(u1,u2 ,!,un ) : 次元ベクトル n

: 正規化

B =

* * 0 ! 0* * * ! *0 * * ! *! ! ! " !0 * * ! *

!

"

######

$

%

&&&&&&

1B P AP−= を考える 相似変換

最初のステップ

行または列を一括で0になるようにする

《参考》Givens法は要素毎

8

1B P AP−=

1P P−= および A は対称だから

も対称

1 1 1 1( ) ( )t t t tB P AP PA P PAP P AP B− − − −= = = = =

よって

P= tP = P−1

P

( 2 ) 2 ( ) 2t t t t t t tP I I I P= − = − = − =u u u u u u

( 2 )( 2 )2 2 42 2 4 ( )2 2 4

t t t

t t t t

t t t t

t t t

PP PP I IIII I

= = − −

= − − +

= − − +

= − − + =

u u u uu u u u u uu uu u u u u uu uu u u u u u

は対称な直交行列 《証明》

à ▪

9

u

u =

0*!*

!

"

####

$

%

&&&&

P = P−1 =

1 0 ! 00 * ! *! ! " !0 * ! *

"

#

$$$$

%

&

''''

として

の形のものを選ぶことができたと仮定すると,

第1成分が0

の形は, このとき P 2 tP I= − u u

10

ここで,任意の行列

GP =

g11 g12 … g1ng21 g22 … g2n! ! " !gn1 gn2 ! gnn

!

"

#####

$

%

&&&&&

1 0 ! 00 * ! *! ! " !0 * ! *

!

"

####

$

%

&&&&

=

g11 * … *

g21 * … *

! ! " !gn1 * ! *

!

"

#####

$

%

&&&&&

G に対して

の1列目は G の1列目と同じとなることがわかる. GP1B P AP−= では 相似変換

の1列目は の1列目と同じであるから, 1P A−1( )B P A P−=

1 ( 2 )tP P I− = = − =a a u u a b

::AB

abの第1列目のベクトル

の第1列目のベクトルとすると

11

b =

**0!0

!

"

######

$

%

&&&&&&

=

b11b210!0

!

"

#######

$

%

&&&&&&&

となるための B =

* * 0 ! 0* * * ! *0 * * ! *! ! ! " !0 * * ! *

!

"

######

$

%

&&&&&&

bの形は

a = t a11,a21,!,an1( ) と上の形の

( 2 )tI − =u u a b

となる

に対して b

uがあればよい.

u =

0*!*

!

"

####

$

%

&&&&

かつ

したがって,

12

2 2=x y

( 2 )tI − =u u x y

21=u

2

−=

x yux y

次元ベクトル n任意の 次元ベクトル に対し,ベクトル ,x yであるような

2x(注)行列式と区別するためベクトルノルムを と表記.

をみたす.

13

ベクトル u の取り方

(I − 2utu)x = (I − 2(x − y)t(x − y)

t (x − y)(x − y))x

= x − 2(x − y)(txx − tyx)

txx −tyx −txy+tyy

= x − 2(txx −tyx)

2(txx −tyx)x − y( )

= y

の証明

1

nt t

i iix y

=

= =∑xy yx

2 2

2 2t t= = =xx x y yyと

を用いると

( 2 )tI − =u u x y

14

2 22 2 21 11 212 2

1

n

jja b b

=

= = + =∑a b

2

−=

a bua b

において

b212 = a j1

2

j=2

n

とすれば

u =

0*!*

!

"

####

$

%

&&&&

( 2 )tI − =u u a bかつ

b = t b11,b21,0,!,0( )

が満たされるので

となる.

b11 = a11 とすれば

15

2 2 221 1

2,

n

jj

s b a=

= =∑

2 2 2 2 2 221 21 1 212 2

32 2 2

n

jj

a a s s a a s s=

= − = + + + = +∑w a b

w ≡ a−b =

a11a21a31!an1

#

$

%%%%%%%

&

'

(((((((

b11b210!0

#

$

%%%%%%%

&

'

(((((((

=

0a21 + sa31!an1

#

$

%%%%%%%

&

'

(((((((

11 21,b b を前ページのように選ぶと,

と同符合になるようにとる sの符号は 21a(桁落ちを避けるため)

( 2 )tP I= − u u具体的な の形は,以下のようになる.

まず

2

, −=

a bua b

16

221

1s a s

α =+

1B P AP−= は次のようにして効率的に計算できる

2 t tP I I α= − = −u u w w

( ) ( )

( )

1

2

t t

t t t t

t t

B P AP

I A I

A A A A

A

α α

α α α

−=

= − −

= − − +

= − +

w w w w

w w w w w w w w

w q q w

Aα=p w2

tα= −q p w pw

Pwを用いると は次のように表せる

ここで,p, q はそれぞれ

17

1B P AP−=

は対称だから次の形になる

B =

* * 0 ! 0* * * ! *0 * * ! *! ! ! " !0 * * ! *

!

"

######

$

%

&&&&&&

以上から

B

の1列目は b =

**0!0

!

"

######

$

%

&&&&&&

の形になり

18

A2 =

a11(2) a12

(2) 0 0 ! 0

a21(2) a22

(2) a23(2) a24

(2) ! a2n(2)

0 a32(2) a33

(2) a34(2) ! a3n

(2)

0 a42(2) a43

(2) ! "

" " " ! "0 an2

(2) an3(2) ! ! a11

(2)

!

"

#########

$

%

&&&&&&&&&

2A B≡ と書くことにしてさらに変換することを考える

(2)ijaの要素を 2A とすると

13 2 2 2A P A P−=

この部分はそのままにして

ここを0にしたい

19

次のステップ

P2 = P2−1 =

1 0 0 ! 00 1 0 ! 00 0 * ! *! ! ! " !0 0 * ! *

"

#

$$$$$$

%

&

''''''

の形は

の形は 2u

u2 =

00*!*

!

"

######

$

%

&&&&&&

したがって

第1, 第2成分が0

2 2 22 tP I= − u uそのための変換行列

20

とすると 2 3,A A の第2列目のベクトルを (2) (3)2 2,a a

a2

(3) = t a12(3) ,a22

(3) ,a32(3) ,0,!,0( )

の形になるようにしたい

u2 =t 0,0,*,!,*( )

そのためには

( )2(3) (2) (3) (2) (3) (2)12 12 22 22 32 2 2 2

3, , ,

n

jj

a a a a a s s a=

= = = − = ± ∑とすればよい

(2) (3)(2) (3) 2 22 2 2 (2) (3)2 2

2 2 2

−= =

a aa a ua a

かつ

において

( )(2)32a と同符合になるようにする

21

( )22 (2)2 2

3

n

jj

s a=

=∑

22 (2) (3) 2 (2)2 2 3 2 32 22 2

2 2s a s= − = +w a a

w2 ≡ a2(2) −a2

(3) =

00

a32(2) + s2a42(2)

!an2(2)

#

$

%%%%%%%%

&

'

((((((((

そのとき

2 2 2 2 2 22 t tP I I α= − = −u u w w 2 2 (2)2 32 2

1s a s

α =+

等となる 22

A3 = P2−1A2P2 =

* * 0 0 ! 0* * * 0 ! 00 * * * ! *0 0 * * ! *! ! ! ! " !0 0 * * ! *

"

#

$$$$$$$

%

&

'''''''

変換後の は下のような形になる 3A

【Householder変換の図形的な意味】

Householder変換は「鏡映」変換 Jacobi,Givensは「回転」 23

2 t tk k k k k kP I I α= − = −u u w w

11k k k kA P A P−+ =

2n − 回の変換で3重対角行列に変換される

以下同様の変換を繰り返すと

( )22 ( )

1

nk

k jkj k

s a= +

= ∑wk ≡ ak(k ) −ak

(k+1) =

0!0

ak+1,k(k ) + skak+2,k(k )

!ank(k )

#

$

%%%%%%%%%%%

&

'

(((((((((((

2 ( )1,

1k k

k k k ks a sα

+

=+

24

! =========================================================================== !! THIS SUBROUTINE TRIDIAGONARIZES THE GIVEN SYMMETRIC MATRIX BY !! HOUSEHOLDER'S METHODS. !! ------------------------------------------------------------------------ !! A ... MATRIX TO BE TRIDIAGONARIZED (USED LOWER LEFT TRIANGULAR PART) !! N ... SYSTEM DIMENSION !! AL .. DIAGONAL ARRAY OF TRIDIAGONARIZED MATRIX !! BE .. SUBDIAGONAL ARRAY OF TRIDIAGONARIZED MATRIX !! CO .. NORMALIZATION FACTOR !! ------------------------------------------------------------------------ !! =========================================================================== !SUBROUTINE TRIDIAGONARIZATION(A,N,AL,BE,CO) IMPLICIT NONE

INTEGER,INTENT(IN) :: N REAL(KIND(1D0)),DIMENSION(N,N),INTENT(INOUT) :: A REAL(KIND(1D0)),DIMENSION(N),INTENT(OUT) :: AL,CO REAL(KIND(1D0)),DIMENSION(N-1),INTENT(OUT) :: BE REAL(KIND(1D0)),DIMENSION(:),ALLOCATABLE :: W,P,Q INTEGER :: I,J,K REAL(KIND(1D0)) :: S,T,EPS INTRINSIC SQRT

IF(N<=2) RETURN ! PARAMETER CHECK ALLOCATE(W(N),P(N),Q(N)) ! ALLOCATE WORK ARRAYS EPS=1.0D-25 ! COLUMN THRESHOLD

Householder変換のFortranコード例(1/3)

25

DO K=1,N-2 ! K-TH HOUSEHOLDER TRANSFOMATION T=0 DO I=K+1,N T=T+A(I,K)**2 END DO S=SQRT(T) IF(A(K+1,K)<0.0D0) S=-S ! TO AVOID ROUNDING ERROR AL(K)=A(K,K) BE(K)=-S IF(T<EPS) CYCLE CO(K)=1.0D0/(T+A(K+1,K)*S) W(K+1)=A(K+1,K)+S DO I=K+2,N W(I)=A(I,K) END DO A(K+1,K)=W(K+1)

DO I=K+1,N T=0.0D0 DO J=K+1,I T=T+A(I,J)*W(J) END DO DO J=I+1,N T=T+A(J,I)*W(J) END DO

P(I)=CO(K)*T END DO

Householder変換のFortranコード例(2/3) 26

T=0.0D0 DO I=K+1,N T=T+P(I)*W(I) END DO

S=0.5D0*CO(K)*T DO I=K+1,N Q(I)=P(I)-S*W(I) END DO

DO J=K+1,N DO I=J,N A(I,J)=A(I,J)-W(I)*Q(J)-Q(I)*W(J) END DO END DO

END DO

AL(N-1)=A(N-1,N-1) AL(N)=A(N,N) BE(N-1)=A(N,N-1)

DEALLOCATE(W,P,Q)END SUBROUTINE TRIDIAGONARIZATION

Householder変換のFortranコード例(3/3)

前ページのループの終了

27

top related