ルンゲクッタ法 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 ( n1) ( 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 ( n1) ( 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 ), n1 yn hf ( xn 2 h k yn f ( xn , yn ) 2 w2=1の場合、 y 2次のルンゲクッタ公式(修正オイラー法)
© Copyright 2024 ExpyDoc