講義内容 数値解析 - 九州大学(kyushu...

6
1 1 数値解析 22015年4月22日(水) 理学部物理学科情報理学コース 2 講義内容 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.8 ガウス・ザイデル法 2.9 SOR法 3 3. 固有値と固有ベクトルの数値計算 3.1 固有値問題の序論 3.2 ヤコビの方法(対角行列への帰着) 3.3 ギブンスの方法(3重対角行列への帰着) 3.4 DKA法(3重対角行列の固有値の計算) 3.5 ハウスホルダー法(3重対角行列への帰着) 4. その他の数値計算法 内容は変更の可能性があります 4 出席点5割+期末試験5講義資料は毎回配布予定です. 欠席した場合,各自でダウンロードしてください. http://yebisu.cc.kyushu-u.ac.jp/~watanabe PDF版をその週の木曜朝までには公開予定) 講義開始後約30分で出欠を取ります. 研究室: 092-642-2295 E-mail: watanabe@cc.(九州大学のドメイン) Subject に,必ず「数値解析」と記入してください. 成績評価,その他の連絡事項

Upload: others

Post on 20-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

1

1

数値解析 

第2回

2015年4月22日(水)

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

2

講義内容 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.8 ガウス・ザイデル法

2.9 SOR法

3

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

3.1 固有値問題の序論

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

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

3.4 DKA法(3重対角行列の固有値の計算)

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

4. その他の数値計算法

内容は変更の可能性があります

4

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

•  講義資料は毎回配布予定です. 欠席した場合,各自でダウンロードしてください.

  http://yebisu.cc.kyushu-u.ac.jp/~watanabe   (PDF版をその週の木曜朝までには公開予定)

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

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

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

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

2

5

1.4 ニュ-トン (またはNewton-Raphson)法

( ) ( ) ( ) ( ) ( ) ( ) …+−ʹ′ʹ′

+−ʹ′

+= 2

! 2! 1 kk

kk

k xxxfxxxfxfxf

高次の項は無視

( )( )kk

kk xfxfxxʹ′

−=+1

x

y f(x)

xk xk+1

微分係数(勾配)を利用する.

接線の方程式

( ) ( ) ( )( )kkk xxxfxfxf −ʹ′=−x軸との交点を求めると

6

Newton-Raphson法の例題

-2

0 x

y

f(x)=x2-2

をNewton-Raphson法で求める.(初期値 x0=2) 2

( )( )

5.1422

0

001 =−=

ʹ′−=

xfxfxx

( )( )

4147.1325.05.1

1

112 =−=

ʹ′−=

xfxfxx

4142.1829.20014.04147.13 =−=x

たった3回の繰り返しで4ケタの有効桁!

7

...,1,0,sin1cos

)(

)()()()1( =

+

−−=+ k

xxxxx k

kkkk

☆初期値が真の解の近くならば収束は速い (2次収束).

例: xxxf cos)( −=

☆方程式が偶数乗根をもつ場合にも適用可.

【参考】 高次収束の公式

8

一般式

ニュートン法 2次収束

ハレー法 3次収束

4次収束

の近似解 2( ) 0f x x a= − =

1( )( )n

n nn

f xx xf x+ = −ʹ′

2

1 2n

n nn

x ax xx+

−= −

1( )( ) ( )( )2 ( )

nn n

n nn

n

f xx x f x f xf xf x

+ = −ʹ′ʹ′

ʹ′ −ʹ′

2

1 2

2 ( )3n n

n nn

x x ax xx a+

−= −

+

1

2

( )( ){3 ( ) ( ) ( ) ( )}( )3{2 ( ) ( ) ( )}

n n

n

n n n n nn

n n n

x xf x

f x f x f x f x f xf xf x f x f x

+ =

−ʹ′ʹ′ ʹ′ ʹ′ʹ′ʹ′−

ʹ′ −ʹ′ ʹ′ʹ′−

2 2

1 2

( )(3 )4 ( )n n

n nn n

x a x ax xx x a+

− += −

+

3

9

1( )( ) ( )( )2 ( )

nn n

n nn

n

f xx x f x f xf xf x

+ = −ʹ′ʹ′

ʹ′ −ʹ′

( ) ( ) ( ) ( ) ( ) ( ) …+−ʹ′ʹ′

+−ʹ′

+= 2

! 2! 1 kk

kk

k xxxfxxxfxfxf

【参考】 ハレー法(3次収束)の導出

( ) 0f x = を2次の項まで含めて x について解く際に ( )( )k

kk

f xx xf x

− = −ʹ′

2次収束(ニュートン法)の式                を再度使う.

( ) ( ) ( ) ( ) ( )( )01 ! 2 ! ( )

k k kk k k

k

f x f x f xf x x x x xf x

ʹ′ ʹ′ʹ′ ⎛ ⎞= + − + − −⎜ ⎟ʹ′⎝ ⎠

( ) ( ) ( ) ( )( )

0 { }2 ( )

k kk k k

k

f x f xf x f x x x

f xʹ′ʹ′

ʹ′= + − −ʹ′

よって

10

繰り返し 2次(ニュートン法) 3次(ハレー法) 4次の式

1 5.100000000000000000000000 3.509933774834437086092715 2.746078431372549019607843

2 2.746078431372549019607843 1.650475173253007848100583 1.444238094866231938963796

3 1.737194874379598322727878 1.415510038078370553365033 1.414213596802269328471475

4 1.444238094866231938963796 1.414213562645118340447414 1.414213562373095048801689

5 1.414525655148737741224995 1.414213562373095048801689 1.414213562373095048801689

6 1.414213596802269328471475 1.414213562373095048801689 1.414213562373095048801689

7 1.414213562373095467892568 1.414213562373095048801689 1.414213562373095048801689

8 1.414213562373095048801689 1.414213562373095048801689 1.414213562373095048801689

9 1.414213562373095048801689 1.414213562373095048801689 1.414213562373095048801689

【参考】 高次収束の公式を用いた  の計算 2初期値=10.0,4倍精度計算で反復計算 2( ) 2f x x= −

10log | . | 2appx true n− − ∝ 3n 4n繰り返し(n)毎に1桁, 2桁, 4桁, 8桁, 16桁・・ と近似値が真値に近づく.

1桁, 3桁, 9桁, 27桁・・ と近似値が真値に近づく.

2桁, 8桁, 32桁・・ と近似値が真値に近づく.

収束過程で,2分法は誤差が振動するがニュートン法はしない.

x

(k+1) = x

(k) � f

0[x(k)]�1f(x(k))

k = 0, 1, . . .

一般的なNewton-Raphson法の定義

11

X: Banach空間 f : X ! X

f

0[x] : X ! X

fx 2 X

の における Frechet 微分

f

0[x] は線形作用素,可逆性を仮定

Newton-Raphson法

が存在 f

0[x]�1 : X ! X

*用語の詳細は関数解析学の教科書を参照してください.

1変数関数のNewton-Raphspon法

12

f の における 微分 f

0[x]

X = Rx 2 Rは

に を代入したもの f(x) の 微分 x 2 R

f

0(x) と書くことが多い

f(x) = x

3 + 7例: f

0(x) = 3x2

f

0(x(k)) 6= 0 ならば Newton-Raphson法が遂行できる

x

(k+1) = x

(k) � f

0(x(k))�1f(x(k))

4

13

0),(,0),(

=

=

yxgyxf

⎟⎟⎠

⎞⎜⎜⎝

⎟⎟⎟⎟

⎜⎜⎜⎜

∂∂

−⎟⎟⎠

⎞⎜⎜⎝

⎛=⎟

⎟⎠

⎞⎜⎜⎝

+

+

),(),(

),(),(

),(),(

)()(

)()(

1

)()()()(

)()()()(

)(

)(

)1(

)1(

kk

kk

kkkk

kkkk

k

k

k

k

yxgyxf

yxygyx

xg

yxyfyx

xf

yx

yx

2変数非線形連立方程式

の場合,ニュートン法は

となる.

1.4.1 多変数問題への応用

理学工学分野への応用では重要

R2 ! R2

14

( ) ( ) ( ) ( )( , ) ( , )

, ,k k k k

k k k kx y x y

f ff x y f x y x x y yx y∂ ∂

= + − + − +∂ ∂

( ) ( ) ( ) ( )( , ) ( , )

, ,k k k k

k k k kx y x y

g gg x y g x y x x y yx y∂ ∂

= + − + − +∂ ∂

①における接平面・・・ の ),(),( kk yxyxfz =

②における接平面・・・ の ),(),( kk yxyxgz =

),()0( 11 ++= kk yxzxy と交わる点平面平面①②が 求めたい近似値は,接

 となる.れが    について解けばそを  

 ,

次方程式 従って, 連立2元1

),(),(

0)()(),(

0)()(),(

11

),(),(

),(),(

++

=−∂

∂+−

∂+

=−∂

∂+−

∂+

kk

kyx

kyx

kk

kyx

kyx

kk

yxyx

yyygxx

xgyxg

yyyfxx

xfyxf

kkkk

kkkk

【説明】

15

式で書き直すと・・などと略記し,行列形を  ),(),(

kkyx

yxxf

xf

kk∂

⎥⎦

⎤⎢⎣

⎡−=⎥

⎤⎢⎣

⎥⎥⎥⎥

⎢⎢⎢⎢

∂∂

),(),(

)()(

),(),(

),(),(

kk

kk

k

k

kkkk

kkkk

yxgyxf

yyxx

yxygyx

xg

yxyfyx

xf

⎥⎦

⎤⎢⎣

⎥⎥⎥⎥

⎢⎢⎢⎢

∂∂

−⎥⎦

⎤⎢⎣

⎡=⎥

⎤⎢⎣

+

+

),(),(

),(),(

),(),(1

1

1

kk

kk

kkkk

kkkk

k

k

k

k

yxgyxf

yxygyx

xg

yxyfyx

xf

yx

yx

よって,

16

⎟⎟⎠

⎞⎜⎜⎝

⎛−=⎟⎟

⎞⎜⎜⎝

⎟⎟⎟⎟

⎜⎜⎜⎜

∂∂

),(),(

),(),(

),(),(

)()(

)()(

2

1

)()()()(

)()()()(

kk

kk

kkkk

kkkk

yxgyxf

hh

yxygyx

xg

yxyfyx

xf

とおき,連立1次方程式:

を解いて h1, h2 を求め,近似解を更新する.

2)()1(

1)()1( ,

hyyhxx

kk

kk

+=

+=+

+

を行い,これを繰り返す.

∂f∂x(xk , yk )

∂f∂y(xk , yk )

∂g∂x(xk , yk )

∂g∂y(xk , yk )

#

$

%%%%%

&

'

(((((

−1

f (xk , yk )

g(xk , yk )

#

$

%%

&

'

((=

h1h2

#

$

%%

&

'

((

実際には,逆行列の計算は行なわず

5

17

0),...,,(

,0),...,,(,0),...,,(

21

212

211

=

=

=

nn

n

n

xxxf

xxxfxxxf

!

n変数非線形連立方程式

の場合は,簡単のために、記号

),...,,(),,...,,( 2121 nn ffffxxxx ==

を導入し,上の方程式を

0)( =xfと書く.

Rn ! Rn

18

)()( )(1)()()1( kkkk xfxHxx −+ −=

この場合,ニュートン法は

と書ける.ただし,

⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜

=

)()()(

)()()(

)()()(

)(

)()(

2

)(

1

)(2)(

2

2)(

1

2

)(1)(

2

1)(

1

1

)(

k

n

nknkn

k

n

kk

k

n

kk

k

xxfx

xfx

xf

xxfx

xfx

xf

xxfx

xfx

xf

xH

!

!

!

!

はヤコビ行列と呼ばれる.

19

)(,, )()()1( kkk xfxx +

)()( )()( kk xfhxH −=

は n次元ベクトルで

であることに注意.

実際には,連立1次方程式:

を解き,補正:

hxx kk +=+ )()1(

を行い,これを繰り返す.

☆ヤコビ行列が正則であれば,   h(繰り返し毎の補正値)は一意に決まる.

20

【応用例】 ポテンシャル 極値問題

•  ポテンシャルエネルギーが V(x,y,z)で与えられた力学系の平衡点(x,y,z)をニュートン法で求める.

,と書くと・・,,   zVzyxh

yVzyxg

xVzyxfzyxVv

∂=

∂=

∂== ),,(),,(),,(),,(

ある.を求めることと等価で

  の解,, 変数非線形連立方程式

とは,る点を求めるというこ方向への勾配も0とな安定点,すなわちどの

),,(0),,(0),,(0),,(3

zyxzyxhzyxgzyxf ===

ポテンシャル極値問題としての分子の「かたち」

V(r):2次元の場合の概念図

6

21

2 2( , ) 1 0f x y x y= + − =

( , ) log 0g x y y x= − =

2 21/ 1

f fx yx y

g g xx y

∂ ∂⎛ ⎞⎜ ⎟∂ ∂ ⎡ ⎤⎜ ⎟ = ⎢ ⎥∂ ∂ −⎜ ⎟ ⎣ ⎦⎜ ⎟∂ ∂⎝ ⎠

1

1

2 21 2 111/ 22 2 / log

k k

k k

k k k

k kk k k k x

x xy y

y x yx xx y x y x

+

+

⎛ ⎞ ⎛ ⎞=⎜ ⎟ ⎜ ⎟

⎝ ⎠ ⎝ ⎠

− ⎛ ⎞+ −⎡ ⎤− ⎜ ⎟⎢ ⎥+ −⎣ ⎦ ⎝ ⎠

12

1

2 2

2

*2 2

2 log 1/ 1/ 2 2 log

k k k

k k k k

k k k x

k k k k k k k k

x x xy y x y

x y y xx y x x x y x x

+

+

⎛ ⎞ ⎛ ⎞= −⎜ ⎟ ⎜ ⎟ +⎝ ⎠ ⎝ ⎠

⎛ ⎞− + −⎜ ⎟

+ − + −⎝ ⎠

【参考】 ニュートン法による      2変数非線形方程式の解

ヤコビ行列

(注) 3変数以上の場合は逆行列を陽に計算せず,   h1,h2に関する連立1次方程式に帰着させる.

22

k x(k) y(k) 0 2.0 1.0 1 1.322741127776021876233107 0.354517744447956247533785 2 1.064284918683261654353981 0.084311795314389315085823 3 1.004774993859574039770422 0.006387728384462191814087 4 1.000031380124353998641094 0.000042559085930531164122 5 1.000000001397869690994187 0.000000001890161329748385 6 1.000000000000000002763375 0.000000000000000003740395 7 1.000000000000000000000000 0.000000000000000000000000

k x(k) y(k) 0 0.5 -2.0 1 0.217512674605683033952704 -1.258121831348579241511824 2 0.334546588495381930754363 -0.987442550368535001013803 3 0.391736549572473208323678 -0.924031457310753608044831 4 0.399759801392593015457672 -0.916684488637724314036686 5 0.399891239618968075442867 -0.916562615757925859136199 6 0.399891274286659502524560 -0.916562583105700384883487 7 0.399891274286661922160776 -0.916562583105698091968876 8 0.399891274286661922160776 -0.916562583105698091968876

【計算結果】    初期値 x = 0.5, y = −2.0

初期値 2.0, 1.0x y= =

23

図.  ニュートン法で求解できる初期値分布 二つある解のうち (1,0) に収束する初期点を赤で, (0.399..,-0.916...) に収束する点を青で、それ以外の点を黒で示した.

【参考】 前記の問題で,ニュートン法により解が求まる「初期値」の分布

この領域に初期値を設定すると収

束しない

24

【余談】 ニュートン法の初期値依存性とフラクタル

ニュートン法は,初期値によって収束が悪くなる場合がある.

1( )( )n

n nn

f xx xf x+ = −ʹ′

x0,x1,x2,...において数列 を考えるとき

xn→c

n→∞ で であれば OK!

ニュートンフラクタル (ニュートン法の繰り返しで生ずる自己相似形) Wikipediaより

複素力学系とマンデルブロ集合,ジュリア集合(逐次反復) Fc : z! z2 + c

Wikipediaより

(z, c は複素数)

による力学系:                 を考え, zn+1 = Fc (zn ) = zn2 + c

z0 = 0 からの数列が発散しない        の集合

c = a+ ib(マンデルブロ集合)[右上図]

c を固定したときに数列が発散しない初期値 zn の集合 (ジュリア集合)[右下図]