数値計算法 第10章数値積分その1 - chiba u2010/12/13  · 数値計算法...

36
数値計算法 10章数値積分その1 12微分方程式その1 第13章 微分方程式その2 千葉大学工学部総合工学科機械工学コース 担当者 武居昌宏 教科書 数値計算入門 (Computer Science Library) 河村 哲也 () 出版社: サイエンス社 (2006/04) ISBN-10: 9784781911267

Upload: others

Post on 23-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

数値計算法第10章数値積分その1

第12章 微分方程式その1第13章 微分方程式その2

千葉大学工学部総合工学科機械工学コース担当者 武居昌宏

教科書数値計算入門 (Computer Science Library)河村哲也 (著) 出版社:サイエンス社 (2006/04) ISBN-10: 9784781911267

Page 2: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

第10章数値積分その1 10.1区分求積法と台形公式

● xj-1のときの短冊面積からの全体体積

●xjのときの短冊面積からの全体体積

…(10.1)

…(10.2)

n

jjjj

b

axxxfxxf

111 ))((d)(

n

jjjj

b

axxxfxxf

11))((d)(

●台形面積からの全体の面積

区間[a,b]をn等分

…(10.4)

…(10.3)

n

jjjjj

b

axxxfxfxxf

111 )()()(

2

1d)(

)()(2)2(2)(2)(2

d)( bfhbfhafhafafh

xxfb

a

初期値S=0, S:=S + f(a + jh)

最初と最後を除いて係数は2

=2S

台形面積

a b

(j=1,2,…..,n-1) 面積S:={f(a) + 2S + f(b)}h/2

h

Page 3: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

10.2 シンプソンの公式 この放物線

ラグランジュ補間

[x2j-2 , x2j]で積分すると

短冊の個数が偶数2M個

●P点通る ● Q点通る

定数

この面積Sj

h h

f(x2j-2)

f(x2j-1)

f(x2j)

x0 x1x2

● R点通る

cbxaxy 2

…(10.6)

Page 4: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

ただしα1,α2,α3は、

h

h2h

上式にhを代入すると、

31

h

3

42

h

33

h

(10.6)式の短冊2個分の面積Sjは

)()(4)(3

21222 jjjj xfxfxfh

S

偶数P点 偶数R点奇数Q点…(10.8)

●短冊の幅が等間隔の場合h= (b-a) / 2M

この面積Sj

h h

f(x2j-2)

f(x2j-1)

f(x2j)

x0 x1 x2

偶数

偶数

奇数

Page 5: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

※教科書ミスプリあり

初期値 j=0, f(x0) 偶数P点S偶数= 0, f(x1)奇数Q点S奇数 = f(a + h)

S奇数:= S奇数 + f(a + (j + 1)h)S偶数 := S偶数+f(a + jh)

短冊2M個とし、x0 = a(最初の点), x2M = b(最後の点)とおく。式(10.8){ }をhとaで表す

aからbまで全体の面積は

※短冊の個数は偶数2M個jは1からMまで

…(10.7)

)(2)(4)(2)(4)(3

d)( 43210 xfxfxfxfxfh

xxfb

a

f(a + h)

最初f(a) f(a + 2h) f(a + 3h) f(a + 4h)

f(b)最後

f(a + (2M - 2)h) f(a + (2M – 1)h)

係数4と2

が繰り返し出現

奇数Q点 PとR点

)()(4)(2 21222 MMM xfxfxf …(10.9)

Q点 偶数PとR点

奇数Q点偶数PとR点

その後jは偶数(2,4,…2M-2)↑f(a)は後でSに入れるのでここでは0

Page 6: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●シンプソンの公式による積分まとめ 教科書ミスプリあり注意

偶数PとR点奇数Q点最初のP点f(x0)ここはS偶数に

入れない

1. 2M, a, b,fを入力← x0 = a, x2M = bとおく2. h = (b - a)/2M S偶数とS奇数の初期値設定

j = 0, f(x0) の偶数P点:S偶数=0 f(x1)の奇数Q点: S奇数=f(a + h),3. j = 2,4,…, 2M-2に対して ← jは2から2M-2までの偶数に注意

奇数S奇数:= S奇数 + f(a + (j + 1)h)偶数S偶数:= S偶数 + f(a + jh)

j = 2,4,…, 2M-2 面積S

h h

←ここは次の

j→

a+jh

偶数

偶数

奇数

j=2を入れるとf(x3)の奇数Q点

j=2を入れるとf(x2)の偶数R点

最後のR点(x2M)ここもS偶数に

入れないj= 2M-2を

入れるとf(a + (2M - 2)h)の偶数P点

j= 2M-2を入れるとf(a + (2M – 1)h)の奇数Q点

f(a)はあとでSに入れる

←S奇数とS偶数の順番注意4. S = { f(a) + 4S奇数 + 2S偶数 + f(b) } h/3

f(a + (j + 1)h)

f(a + jh)

a+(j+1)h

Page 7: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

7

前置き 微分方程式の分類

●線形と非線形

線型微分方程式

●斉次方程式の特徴斉次方程式の解 s(x)の定数倍 cs(x)も解解の線形結合もその斉次方程式の解

●斉次(同次)と非斉次

右辺が関数または定数 α

すべての項が未知関数か 0

非斉次方程式

斉次方程式

非線型微分方程式

)()(d

dxgxf

x

)()(d

d)(

d

dxgxf

xxf

x

0)()(d

d xfxf

x

)()(d

dxfxf

x

Page 8: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

0 x x +Δx

y(x +Δx)

y(x)y(0)=a

傾き: 𝑓 𝑥, 𝑦(𝑥)

y(x)

第12章 微分方程式その1

●1階常微分法方程式

式(12.1)を式(12.3)の左辺に代入して変形

y(Δx)の値が求まる

y(2Δx)の値が求まる

y

…(12.3)

…(12.4)

…(12.1)

…(12.2)

x

xyxxy

x

y

)()(

d

d

)(,)()( xyxxfxyxxy

)(3

d

)(d

tvdgV

t

tvV

ppfp

pp

y(x)

x

ストークス抵抗

浮力

重力

体積

)(3 tvdp

gVpf

gVpp

速度v(t) pV

初期条件

12.1オイラー法(1)

自然落下する物体の速度v(t)

x=0を代入するとΔxきざみでyの値が求まる初期条件より既知

式(12.1)より既知

●差分近似

Page 9: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●例1 1階微分方程式の初期値問題

[0,X]をn等分するとΔx = X/n

X=1にしてΔx -> 0、すなわちn-> ∞のときy(1)=e

この式にx=0を代入

●ネイピア数の定義y = exの x = 0 における微分係数は 1

y = ex

…(12.4))()()( xxyxyxxy

y' = ex

xx1

21 x

31 x

x x

Page 10: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

12.2 オイラー法(2)

刻み幅は、一定である必要はない

式(12.4)を一般化すると

刻み幅が等間隔のとき、

jjjjjj yxfxxyy ,11

図12.2 離散化

jjjj yxxfyy ,1 …(12.6)

1. f(x,y), x0, xn, n, aを入力2. Δx = (xn - x0)/n, y0 = a3. j=0,1,2,……, n-1に対して次の計算を行う

xj+1 = xj + Δx yj+1 = yj + f(xj, yj)Δx

●オイラー法のアルゴリズムのまとめ

Page 11: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●例1 リッカチの微分方程式

(非線形1階常微分方程式)初期条件x0 = 0, y0 = 0.5, Δx = 0.1

厳密解は、

式(12.4)より

表12.1 近似解と厳密解の比較 参照

= f(x,y)

= f(x0,y0)

= f(x1,y1)

2)()()( yxryxqxpdx

dy

Page 12: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

1つの特殊解y1を、y = y1+uとおくとuがベルヌーイ形微分方程式になる KdV方程式

●非線形1階常微分方程式の例リッカチ形

ベルヌーイ形

nyxryxqdx

dy)()(

)1,0( n

ソリトン:非線形方程式に従う孤立波

063

3

x

u

x

uu

t

u

位置座標を

Miura変換(リッカチ形)

2),(),( txvtxux

v

変形KdV方程式

063

32

x

v

x

vv

t

v

)(sech 3txv

2)()()( yxryxqxpdx

dy

https://ja.wikipedia.org/wiki/KdV方程式

葛飾北斎「神奈川沖浪裏」

https://ja.wikipedia.org/wiki/

Page 13: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●ホイン法(2次ルンゲクッタ法)

(はじめ傾き)と (終わりの傾き)を定義

jjjjjj

jj

yxhfyhxfyxfh

yy

,,,2

1

これを正確に求めたい!!𝑦 𝑥𝑗+1= 𝑦𝑗+1

𝑦 𝑥𝑗= 𝑦𝑗

xjの傾きだとこの分が誤差

xjの傾き𝑓 𝑥𝑗 , 𝑦𝑗

𝑥𝑗

𝑥𝑗+1 x

y 𝑦(𝑥)

この高さ𝑦(𝑥𝑗) + ℎ𝑓(𝑥𝑗 , 𝑦𝑗)

をyj+1と仮定している。y(0)=a

xj+1の傾きf●→を

𝑓 𝑥𝑗 + ℎ, 𝑦(𝑥𝑗) + ℎ𝑓(𝑥𝑗, 𝑦𝑗) とおく。

≅ 𝑦𝑗+1 これは既知

= 𝑥𝑗+1

ホイン法のアイデアyの増分をどのように表すか?⇒区間両端の傾きf●→とf●→の傾きの平均値を使う

= 𝑥𝑗+1

≅ 𝑦𝑗+1

12.3 精度の向上

…(12.1)

…(12.2)

𝑑𝑦

𝑑𝑥= 𝑓 𝑥, 𝑦

𝑦 0 = 𝑎

オイラー法: yの増

分をはじめの点の傾きだけで決める。

Page 14: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

微分方程式 (12.1)をテイラー展開式 (12.7)に代入すると、

…(12.8)

…(12.7)

●ホイン法のテイラー展開による考察

f(x,y)はxとy(x)の関数⇒y(x)が不明⇒xで微分できない⇒全微分…(12.9)

第2項まで残すと、

…(12.10)…(12.11)

𝑑𝑓 =𝜕𝑓

𝜕𝑥𝑑𝑥+

𝜕𝑓

𝜕𝑦𝑑𝑦

𝑑𝑓

𝑑𝑥=𝜕𝑓

𝜕𝑥

𝑑𝑥

𝑑𝑥+𝜕𝑓

𝜕𝑦

𝑑𝑦

𝑑𝑥= 𝑓𝑥 + 𝑓𝑓𝑦

この式の意味?𝑦 𝑥 + ℎ = 𝑦 𝑥 + ℎ 𝑓 𝑥, 𝑦 +

1

2ℎ 𝑓𝑥 + 𝑓𝑓𝑦

…(12.1) …(12.2)𝑑𝑦

𝑑𝑥= 𝑓 𝑥, 𝑦 𝑓 0 = 𝑎

Page 15: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

2変数のテイラー展開次ページ参照

両端の傾きf ●→とf ●→の線形和(rとs)で考える

𝑟𝑓 𝑥, 𝑦 + 𝑠𝑓 𝑥 + ℎ, 𝑦 + ℎ𝑓

= 𝑟𝑓 𝑥, 𝑦 + 𝑠 𝑓 𝑥, 𝑦 + ℎ𝑓𝑥 + ℎ𝑓𝑓𝑦= (𝑟 + 𝑠)𝑓 𝑥, 𝑦 + 𝑠ℎ𝑓𝑥 + 𝑠ℎ𝑓𝑓𝑦

※式(12.11) { }内に注目!! 式(12.14)と同じ

はじめのxjのfの値をjで表す 次のxj+1のfの値もjで表す●点の傾き ●点の傾き

…(12.17)

…(12.11)

𝑦 𝑥 + ℎ = 𝑦 𝑥 + ℎ 𝑓 𝑥, 𝑦 +1

2ℎ 𝑓𝑥 + 𝑓𝑓𝑦

第2項までのテイラー展開の式

…(12.14)

r=s=1/2⇒両端の平均値

𝑓 𝑥, 𝑦 +1

2ℎ 𝑓𝑥 + 𝑓𝑓𝑦

※𝑓 = 𝑓(𝑥, 𝑦)と表記

ホイン法

xの傾きf(x,y)

x x+h

x

y

𝑦(𝑥)

x+hの傾きf(x+h,y+hy)𝑦(𝑥 + ℎ)

𝑦(𝑥) + ℎ𝑓(𝑥, 𝑦)

Page 16: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●復習:全微分係数(2変数関数の微分係数)について補足偏微分係数にdxとdyをかけるとわかりやすい!!

𝒙𝟎 ∈ 𝑹𝑛 を考えるのでdfをgrad 𝑓(𝒙𝟎)・(𝒙 − 𝒙𝟎)とも表記する。

ここは内積

dfは各偏導関数にdx,dyをかけた高さ

𝑑𝑓 =𝜕𝑓

𝜕𝑥𝑑𝑥+

𝜕𝑓

𝜕𝑦𝑑𝑦の直観的な意味

f

𝜕𝑓

𝜕𝑦𝑑𝑦

𝜕𝑓

𝜕𝑥𝑑𝑥

𝜕𝑓

𝜕𝑥𝑑𝑥

𝜕𝑓

𝜕𝑦𝑑𝑦

傾き𝜕𝑓

𝜕𝑥

傾き𝜕𝑓

𝜕𝑦

𝒙𝟎

式(12.1)より、(x,y)平面の傾きf(x,y)をz方向にプロットした曲面式(12.10)はそれをさらにxで微分したもの

曲面𝑓(𝑥, 𝑦)

…(12.10)

A

Page 17: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●(12.14)式 復習 2変数のテイラー展開

これ以降の項を省略すると

𝑓 𝑥 + ℎ, 𝑦 + ℎ𝑓 = 𝑓 𝑥, 𝑦 + ℎ𝑓𝑥 + ℎ𝑓𝑓𝑦 …(12.14)

𝑓 𝑥 + ℎ, 𝑦 + ℎ𝑓 = 𝑓 𝑥, 𝑦 +1

1!ℎ𝑓𝑥 + ℎ𝑓𝑓𝑦

+1

2!ℎ2𝑓𝑥𝑥 + 2ℎ ℎ𝑓 𝑓𝑥𝑦 + ℎ𝑓 2𝑓𝑦𝑦 +⋯+

とおくと

𝑓 𝑥 + ℎ, 𝑦 + 𝑘

= 𝑓 𝑥, 𝑦 +1

1!ℎ𝜕

𝜕𝑥+ 𝑘

𝜕

𝜕𝑦𝑓 𝑥, 𝑦 +

1

2!ℎ𝜕

𝜕𝑥+ 𝑘

𝜕

𝜕𝑦

2

𝑓 𝑥, 𝑦

(12.14)式ではkをhfと思い、

yyxyxxyx fkhkffhkfhfyxf

kyhxf

22 2!2

1

!1

1),(

),( この項が出現 注意!!

Page 18: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

12.4 4次のルンゲ・クッタ法

⇐ホイン法のs1と同じ。

⇐ホイン法のs2と似ている。ただしs3を用いる。

⇐s1を使ってs2を表す。

⇐s2を使ってs3を表す。

yj+1をyjと区間内4点の傾き(s1~

s4)の加重平均にh乗じて求める

●ホイン法(2次のルンゲクッタ法)

s1 (はじめ傾き)とs2 (終わりの傾き)を定義

yj+1をyj、s1およびs2から求める

jj yxfs ,1 12 , hsyhxfs jj

2112

ssh

yy jj

●4次のルンゲ・クッタ法●

‥‥(12.18)

s1~s4はyjとxj

で書ける!!

xjの傾きs1

𝑥𝑗

ℎ/2𝑥𝑗+1

x

y

𝑦(𝑥)

ℎ/2

xj+h/2傾きs2

xj+h/2傾きs3 xj+h

傾きs4

Page 19: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

s3 = 0.07502 , s4 = 0.07506

初期条件x0 = 0, y0 = 0.5, h = 0.1

= f(x)

●例1 リッカチの方程式(ルンゲ・クッタ法)

…(12.18)

● ●

Page 20: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

第13章 微分方程式その2 13.1 予測子・修正子法

𝑥𝑗−𝑘, 𝑥𝑗+1 で積分 予測子・修正子法では積分で求める

左辺を積分…(13.1)

オイラー法・ルンゲクッタ法⇒既知の𝑥𝑗、𝑥𝑗+1と𝑦𝑗 から 𝑦𝑗+1を直接求める方法

…(12.1), …(12.2)

式(13.3)はyj+1が含まれているので計算できない。

右辺は台形公式で積分

k=0として 𝑥𝑗 , 𝑥𝑗+1 で積分

𝑥𝑗

𝑥𝑗+1

𝑓 𝑥, 𝑦 𝑑𝑥 ≅ℎ

2𝑓 𝑥𝑗 , 𝑦𝑗 + 𝑓 𝑥𝑗+1, 𝑦𝑗+1

…(13.3)

𝑑𝑦

𝑑𝑥= 𝑓 𝑥, 𝑦

𝑥𝑗−𝑘

𝑥𝑗+1 𝑑𝑦

𝑑𝑥𝑑𝑥 =

𝑥𝑗−𝑘

𝑥𝑗+1

𝑓 𝑥, 𝑦 𝑑𝑥

…(13.2)

𝑥𝑗−𝑘

𝑥𝑗+1 𝑑𝑦

𝑑𝑥𝑑𝑥 = 𝑦 𝑥𝑗−𝑘

𝑥𝑗+1= 𝑦 𝑥𝑗+1 − 𝑦(𝑥𝑗−𝑘) = 𝑦𝑗+1 − 𝑦𝑗−𝑘

𝑦 0 = 𝑎

予測子・修正子法 2段階で計算 予測子(陽的公式)で近似値𝑦 ∗𝑗+1の予測修正子(陰的公式)で𝑦𝑗+1修正

k=0、式(13.2)

=式(13.3)

Page 21: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

予測子: 𝑦 ∗𝑗+1

予測子𝑦 ∗𝑗+1 を例えばオイラー法で予測

修正子(陰的公式):予測した𝑦 ∗𝑗+1から𝑦𝑗+1を台形公式で求める

*11

1

,,2

jjjj

jj

yxfyxfh

yy

jjjj yxhfyy ,*1 …(13.5)𝑦𝑗+1

yj

xj+1の傾き

xjの傾き𝑓 𝑥𝑗 , 𝑦𝑗

𝑥𝑗

𝑥𝑗+1 x

y 𝑦(𝑥)

𝑦𝑗 + ℎ𝑓(𝑥𝑗, 𝑦𝑗)この高さをy*j+1と

してyj+1を予測

𝑓 𝑥𝑗+1, 𝑦𝑗 + ℎ𝑓(𝑥𝑗 , 𝑦𝑗)=y*j+1 ≅ yj+1

…(13.4)

…(13.5)

*𝑦𝑗+1 − 𝑦𝑗 =ℎ

2𝑓 𝑥𝑗 , 𝑦𝑗 + 𝑓 𝑥𝑗+1, 𝑦𝑗+1

予測子(陽的公式):既知xjとxj+1から未知yj+1を予測子yj+1*を用いて予測する

式(13.5)の第1式を第2式に代入してy*j+1を消去して直接求めると、

→ホイン法と一致 既知の𝑥𝑗、𝑥𝑗+1と𝑦𝑗 から 𝑦𝑗+1を直接求めている!!

𝑦𝑗+1 = 𝑦𝑗 +ℎ

2𝑓 𝑥𝑗 , 𝑦𝑗 + 𝑓 𝑥𝑗+1, 𝑦𝑗 + ℎ𝑓 𝑥𝑗 , 𝑦𝑗

●の傾き→

Page 22: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

xj-3の傾きs1

𝑥𝑗−2

ℎ/2 x

y

𝑦(𝑥)

ℎ/2

xj+h/2傾きs2

xj+h/2傾きs3 xj+h

傾きs4

𝑥𝑗−3

1)-①●(xj-3, yj-3)から●(xj-2 , yj-2)を求める

1)-②●(xj-2, yj-2)から●(xj-1 , yj-1)を求める

1)-③●(xj-1, yj-1)から●(xj , yj)を求める

既知(

●ミルン法:高精度予測子 とシンプソン公式(修正子) の組合せによりy*j+1を求める。

yj-3

yj-2

331 , jj yxfs●

2/,2/ 1332 hsyhxfs jj ●

● 2/,2/ 2333 hsyhxfs jj

3334 , hsyhxfs jj ●

432132 226

ssssh

yy jj

𝑦𝑗−1𝑦𝑗

𝑥𝑗−3 𝑥𝑗−2 𝑥𝑗−1 𝑥𝑗 𝑥𝑗+1

𝑦𝑗+1

h hh

𝑦𝑗−3

h

ステップ1) 既知の点●(xj-3,yj-3)から3点●(xj-2,yj-2) 、●(xj-1,yj-1)、および、●(xj,yj)をルンゲ・クッタ法で求める

Page 23: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●ミルン法#2 ステップ2) 高精度予測子によりy*j+1 を求める。

k=1の場合、式(13.1)の右辺の積分は3点●𝑥𝑗−1 、● 𝑥𝑗、● 𝑥𝑗+1を用

いて近似

ステップ3) 修正子としてシンプソンの公式を用いる

…(13.6)

高精度予測子公式 y*j+1

二階微分まで考慮詳細は専門書参照

2231 ,23

4

jjjj yxf

hyy

jjjj yxfyxf ,2, 11

𝑦𝑗−1𝑦𝑗

𝑥𝑗−3 𝑥𝑗−2 𝑥𝑗−1 𝑥𝑗 𝑥𝑗+1

𝑦𝑗+1

h hh

𝑦𝑗−3

h

𝒙𝒋−𝟏

𝒙𝒋+𝟏

𝒇 𝒙, 𝒚(𝒙) 𝒅𝒙

111111 ,,4,

3jjjjjjjj yxfyxfyxf

hyy

シンプソンの公式による修正子

…(13.7)

𝑦𝑗−2

Page 24: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

j-1とjからこの点を外挿⇒2次精度AB法

f(x,y)

𝑓𝑗−1

𝑓 ∗𝑗+1

𝑓𝑗

P(x)

𝑥𝑗−1 𝑥𝑗 𝑥𝑗+1

𝑓𝑗+1

𝑥𝑗

𝑥𝑗+1

𝑓 𝑥, 𝑦(𝑥) 𝑑𝑥

h h

𝑥𝑗−𝑘

𝑥𝑗+1 𝑑𝑦

𝑑𝑥𝑑𝑥 =

𝑥𝑗−𝑘

𝑥𝑗+1

𝑓 𝑥, 𝑦 𝑑𝑥

積分区間 𝑥𝑗 , 𝑥𝑗+1 において、

…(13.1)前述の式(13.1)

𝑃 𝑥 = 𝑓𝑗−1 +𝑓𝑗 − 𝑓𝑗−1

ℎ𝑥 − 𝑥𝑗−1

13.2 アダムス・バッシュフォース(AB)法 ⇒予測子としても使える

f(x,y)を2点● 𝑥𝑗−1, 𝑓𝑗−1 と● 𝑥𝑗 , 𝑓𝑗 を通る直線P(x)で近似

𝑦𝑗+1

傾きfj-1

𝑥𝑗−1ℎ

𝑥𝑗 x

y

𝑦(𝑥)

𝑥𝑗+1

𝑦𝑗𝑦𝑗−1

傾きfj

傾きfj+1

yj+1-yj

𝑦𝑗+1 = 𝑦𝑗 + 𝑥𝑗

𝑥𝑗+1

𝑓 𝑥, 𝑦 𝑑𝑥…(13.8)

Page 25: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

25

同様に3点● 𝑥𝑗−2, 𝑓𝑗−2 ● 𝑥𝑗−1, 𝑓𝑗−1● 𝑥𝑗 , 𝑓𝑗 を通る放物線P(x)で置き換えて積分

→3次精度AB法

…(13.10)

𝑥𝑗−1, 𝑦𝑗−1, 𝑥𝑗 , 𝑦𝑗のみを使って𝑦𝑗+1を計算⇒ 𝑥𝑗+1, 𝑓𝑗+1 を使っていな

い⇒予測子にも使える

𝑥𝑗−2, 𝑦𝑗−2, 𝑥𝑗−1, 𝑦𝑗−1, 𝑥𝑗 , 𝑦𝑗のみを使って𝑦𝑗+1を計算⇒ 𝑥𝑗+1, 𝑓𝑗+1を使っていない⇒予測子にも使える

𝑦𝑗+1 = 𝑦𝑗 +ℎ

1223𝑓(𝑥𝑗 , 𝑦𝑗) − 16𝑓 𝑥𝑗−1, 𝑦𝑗−1 + 5𝑓(𝑥𝑗−2, 𝑦𝑗−2)

P(x)を代入して積分

*

※yj-1,yjはルンゲ・クッタで求めておく

𝑦𝑗+1 = 𝑦𝑗 +ℎ

23𝑓(𝑥𝑗 , 𝑦𝑗) − 𝑓(𝑥𝑗−1, 𝑦𝑗−1)

…(13.9)* →2次精度AB法

j-2、j-1、 jからこの点を外挿⇒3次精度AB法

f(x,y)𝑓𝑗−1

𝑓 ∗𝑗+1

𝑓𝑗

P(x)

𝑥𝑗−2 𝑥𝑗−1 𝑥𝑗 𝑥𝑗+1

𝑓𝑗+1

𝑥𝑗

𝑥𝑗+1

𝑓 𝑥, 𝑦(𝑥) 𝑑𝑥

h hh

𝑓𝑗−2

𝑦𝑗+1 = 𝑦𝑗 + 𝑥𝑗

𝑥𝑗+1

𝑓 𝑥, 𝑦 𝑑𝑥…(13.8)

Page 26: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

𝑦𝑗+1 = 𝑦𝑗 + 𝑥𝑗

𝑥𝑗+1

𝑓 𝑥, 𝑦 𝑑𝑥

𝑓 𝑥, 𝑦 を3点● 𝑥𝑗−1, 𝑓𝑗−1 ● 𝑥𝑗 , 𝑓𝑗● 𝑥𝑗+1, 𝑓𝑗+1 を通る放物線P(x)で近似

●アダムス・ムルトン(AM)法未知● 𝑥𝑗+1, 𝑓𝑗+1 をそのまま積分

未知𝑦𝑗+1が右辺にも存在する⇒修正子として用いる

𝑃(𝑥) = 𝑓𝑗−1(𝑥 − 𝑥𝑗)(𝑥 − 𝑥𝑗+1)

(𝑥𝑗−1 − 𝑥𝑗)(𝑥𝑗−1 − 𝑥𝑗+1)

+𝑓𝑗(𝑥 − 𝑥𝑗−1)(𝑥 − 𝑥𝑗+1)

(𝑥𝑗 − 𝑥𝑗−1)(𝑥𝑗 − 𝑥𝑗+1)+𝑓𝑗+1

(𝑥 − 𝑥𝑗−1)(𝑥 − 𝑥𝑗)

(𝑥𝑗+1 − 𝑥𝑗−1)(𝑥𝑗+1 − 𝑥𝑗)

…(13.11)

※𝑓𝑗+1 = 𝑓 𝑥𝑗+1, 𝑦𝑗+1yJ+1の微分値

区間 𝑥𝑗 , 𝑥𝑗+1 で積分

…(13.8)

*

𝑥𝑗−1 𝑥𝑗 𝑥𝑗+1

f(x,y)

𝑓𝑗−1

𝑓𝑗

P(x)

𝑓𝑗+1

𝒙𝒋

𝒙𝒋+𝟏

𝒇 𝒙, 𝒚(𝒙) 𝒅𝒙

h h

この点は不明!!

Page 27: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●予測子と修正子の組み合わせ公式列挙 𝑓𝑗+1 = 𝑓 𝑥𝑗+1, 𝑦 ∗𝑗+1

⇐アダムス・ムルトン法修正子

⇐アダムス・バッシュフォース法2次精度予測子

⇐アダムス・バッシュフォース法3次精度予測子

⇐台形公式修正子

12

*

*

*

*

*

⇐アダムス・バッシュフォース法4次精度予測子

⇑アダムス・ムルトン法修正子…(13.14)

…(13.15)⇑アダムス・ムルトン法修正子

⇓アダムス・バッシュフォース法5次精度予測子

Page 28: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

1. f(x,y), x0, y0, h, nを入力2. 2次のルンゲ・クッタ法でy1を求める3. j=1,2,……, nに対して次の計算を行う

xj+1 = xj + hyj+1 = yj + h{3f(xj, yj) ー f(xj-1, yj-1) }/2

●2次精度アダムス・バッシュフォース法アルゴリズムまとめ

Page 29: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

13.3 連立微分方程式

微分を前進差分で近似⇒オイラー法

…(13.16)…(13.17)

●3元以上の連立微分方程式への適用

…(13.20)

右辺はxj, yj, zj, uj, xj+1のみ

…(13.21)

pypx

bzxy

tx

tz

x

z

pypx

yrxxz

tx

ty

x

y

d/d

d/d

d

d

d/d

d/d

d

d

http://matome.naver.jp/odai/

ローレンツ方程式

z y

xhttp://www.procreo.jp/labo/labo08.html

),,(d

dzyxg

x

z),,(

d

dzyxf

x

y

ay )0( bz )0(

右辺はxj, yj, zj, xj+1のみ …(13.19)

),,(11 jjjjjjj zyxfxxyy ),,(11 jjjjjjj zyxgxxzz

…(13.18)jj

jj

xx

yy

x

y

1

1

d

d

jj

jj

xx

zz

x

z

1

1

d

d

Page 30: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

(12.18)式の4次のルンゲ・クッタ法を適用すると、s1~s4はxj、yjおよびzjで書ける!!r1~r4も同じ!!

↑s1とr1でs2を表す。

43211 226

rrrrh

zz jj

43211 226

ssssh

yy jj

● jjj zyxfs ,,1

● jjj zyxgr ,,1

● 334 ,, hrzhsyhxgr jjj

● 2/,2/,2/ 112 hrzhsyhxgr jjj

↑ s3とr3でs4 を表す

↑ s2とr2でs3を表す。

…(13.22)

↑ s1とr1でr2を表す。

↑ s2とr2でr3を表す。

↑ s3とr3でr4を表す

334 ,, hrzhsyhxfs jjj ●

2/,2/,2/ 223 hrzhsyhxgr jjj ●

● 2/,2/,2/ 223 hrzhsyhxfs jjj

● 2/,2/,2/ 112 hrzhsyhxfs jjj

𝑥𝑗

ℎ/2𝑥𝑗+1

x

𝑔(𝑥, 𝑦, 𝑧)

ℎ/2

z

傾きr1傾きr2

傾きr3 傾きr4

傾きs1

ℎ/2 x

𝑓(𝑥, 𝑦, 𝑧)

ℎ/2

傾きs2

傾きs3 傾きs4y

xj

y

z y

x

xj+1

x

Page 31: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

●例1 連立微分方程式の初期値問題

式(13.19)の前進差分式より、

初期値より

後は陽的に

したがって𝑦𝑗と𝑧𝑗の一般式は

001 zyhzyj

jj

jjjj zyhzy 111

この例題の場合、

yx

z

d

dz

x

y

d

d 1)0( y

0)0( z

,1 jjj hzyy jjj hyzz 1

,1001 hzyyhhyzz 001

,1 2112 hhzyy

hhyzz 2112

𝑦 = cosh𝑥 =𝑒𝑥 + 𝑒−𝑥

2

𝑧 = sinh𝑥 =𝑒𝑥 − 𝑒−𝑥

2

解析解

,2/11jj

j hhy

2/11jj

j hhz

cosh𝑥 ± sinh𝑥 = 𝑒±𝑥

cosh2𝑥 − sinh2 𝑥 = 1

双曲線関数の性質

※このxは軸

とのなす角には対応しない

cosh𝑥

sinh𝑥tanh𝑥

-5

5

0

0 5-5

10

-10

Page 32: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

13.4 高階微分方程式

●オイラー法を高階微分方程式の初期値問題にも適用

1階微分をzとおくと、

x

yyxf

x

y

d

d,,

d

d2

2

…(13.23)

ay )0( by )0(' …(13.24)

Page 33: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

‥‥(A)

例1 ファン・デル・ポールの方程式

初期値y(0)=0, z(0)=y’(0)=0, h=0.1の場合

𝑥𝑗+1 = 𝑥𝑗 + ℎ 𝑦𝑗+1 = 𝑦𝑗 + ℎ 𝑧𝑗𝑧𝑗+1 = 𝑧𝑗 + ℎ 0.25 1 − 𝑦𝑗

2 𝑧𝑗 − 𝑦𝑗 + sin 𝑥𝑗

(A)式を式(12.6)のオイラー法で解くと、左辺はxj+1, yj+1, zj+1 右辺は

xj, yj, zj

自励振動の例タコマ橋の崩壊

‥‥(13.28)

https://ja.wikipedia.org

減衰力負の1自由度ばね質量ダンパ系の運動方程式

振幅が指数関数的に成長⇒振幅がある値を超えると減衰力の符号を+にする。⇒リミットサイクル

𝑚 𝑦 − 𝑐 𝑦 + 𝑘𝑦 = 0

とおくと

k

c

y

m

Page 34: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

解(x,y)

A

B

C

図13.2 xとyの関係

→時間と思う

→振幅と思う

解(y,z)

AB

C

図13.3 yとz(yの微分値)の関係

→振幅の

微分と思う

→振幅と思う

Page 35: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

1自由度ばね質量ダンパ系の運動方程式の復習

:臨界粘性減衰係数

●ζ = 0のとき

●0 < ζ < 1のとき

●ζ = 1のとき

:減衰比

減衰固有角振動数:

減衰固有振動数:

●ζ > 1のとき 過減衰

https://ja.wikipedia.org/wiki/:固有角振動数

02 2002

2

txdt

tdx

dt

txd

mkcc 2

mk0

cc

c

20 1 xC

1tan

tCtx 0cos

tCetx t 20 1cos0

2

201

1

xC

2

1

1tan

20 1 d

2d

df

11cos 000 textx t

1sinh

11cosh 2

02

200

0

ttextx t

Page 36: 数値計算法 第10章数値積分その1 - Chiba U2010/12/13  · 数値計算法 第10章数値積分その1 第12章微分方程式その1 第13章微分方程式その2 千葉大学工学部総合工学科機械工学コース

36

「見えない」を「視える」にTakei Laboratory

Laboratory on Multiphase Flow and Visualization