ルンゲクッタ法

ルンゲクッタ法
dy
 f ( x, y)
dx
となる微分方程式の解を数値的に
解く方法
ルンゲクッタ法
x=x0におけるyの値y0がわかっているとき
y(x0+h)のx0におけるテイラー展開は
次のようになる。
1
1
(n)
y( x  h)  y( x )  hy' ( x )  h2 y' ' ( x )   hn y ( x )  
0
0
0 2
0
0
n!
1
1
(n 1)
 y( x )  hf ( x , y( x ))  h2 f ' ( x , y( x ))   hn f
( x , y( x ))  O(hn  1)
0
0
0
0
0
0
0
2
n!
ルンゲクッタ法
hのn次の項まで打ち切ると、
1
1
y( x0  h)  y( x0 )  hf ( x0 , y( x0 ))  h2 f ' ( x0 , y( x0 ))   hn f ( n1) ( x0 , y( x0 ))
2
n!
x1=x0+hのときのy1を求めることができる。
このときの誤差は、 O(hn+1) となり、hのn+1
乗に比例した誤差となる。
hが小さいほど、誤差も小さくなる。
ルンゲクッタ法
n=1のとき、オイラー法になる。
1
1
y( x0  h)  y( x0 )  hf ( x0 , y( x0 ))  h2 f ' ( x0 , y( x0 ))   hn f ( n1) ( x0 , y( x0 ))
2
n!
y( x0  h)  y( x0 )  hf ( x0 , y( x0 ))
hの値が大きいと誤差も大きくなる。
できるだけ小さいhを求めた方が
精度よく計算できる。
そのときには計算回数が大きくなる。
ルンゲクッタ法
大きいn次まで採用→誤差は小さくなる
一回の計算に必要な処理が大きくなってしまう。
n次の導関数の算出が出来ない場合もある。
↓
x0とx1の中間のxにおける値を計算し、
それらの重み付き平均を用いることで、
テイラー展開した場合とおなじ次数までをカバーする
→ルンゲクッタ法
ルンゲクッタ法
ルンゲクッタ法
2次の場合
y( x0  h)  y( x0 )  h ,
  w1k1  w2 k2 ,
k1  f ( x0 , y0 ),
k2  f ( x0  ah, y0  bhk1 )
式(1)
が成り立つとする。
ここで、φはx0とx1の中間のxにおける
f(x)の値k1とk2の重み付き平均
ルンゲクッタ法
ルンゲクッタ法
2次の場合
k2に2変数関数のテイラー展開をして2次以上を無視すると、
k 2  f ( x0  ah, y0  bhk1 )
 f ( x0  ah, y0  bhf ( x0 , y0 ))
 f ( x0 , y0 )  ahf x ( x0 , y0 )  bhf y ( x0 , y0 ) f ( x0 , y0 )  O(h 2 )
これを式(1)に代入すると
y( x0  h)  y( x0 )  h
 y( x0 )  h(w1  w2 ) f ( x0 , y0 )  h2 w2[afx ( x0 , y0 )  bf y ( x0 , y0 ) f ( x0 , y0 )]  O(h3 )
式(2)
ルンゲクッタ法
ルンゲクッタ法
2次の場合
2次までのテイラー展開の式
1 2
y( x0  h)  y( x0 )  hf ( x0 , y( x0 ))  h f ' ( x0 , y( x0 ))  O(h3 )
2
1
 y( x0 )  hf ( x0 , y( x0 ))  h2[ f x ( x0 , y( x0 ))  f y ( x0 , y( x0 )) f ( x0 , y( x0 ))]  O(h3 )
2
式(3)
ルンゲクッタ法
ルンゲクッタ法
2次の場合
y( x0  h)  y( x0 )  h
 y( x0 )  h(w1  w2 ) f ( x0 , y0 )  h2 w2[afx ( x0 , y0 )  bf y ( x0 , y0 ) f ( x0 , y0 )]  O(h3 )
式(2)
1 2
y( x0  h)  y( x0 )  hf ( x0 , y( x0 ))  h f ' ( x0 , y( x0 ))  O(h3 )
2
1
 y( x0 )  hf ( x0 , y( x0 ))  h2[ f x ( x0 , y( x0 ))  f y ( x0 , y( x0 )) f ( x0 , y( x0 ))]  O(h3 )
2
式(3)
式(2)と式(3)が等しく条件は、w1+w2=1, w2a=w2b=1/2
ルンゲクッタ法
ルンゲクッタ法
2次の場合
数値計算的な f(x,y) の2変数導関数 fx(x,y) 、
fy(x,y)を直接算出する代わりに
f(x,y)の重み付き平均で求めることができる。
h
, k ),
n1  yn  hf ( xn 
2
h
k  yn  f ( xn , yn )
2
w2=1の場合、 y
2次のルンゲクッタ公式(修正オイラー法)