ルンゲ-クッタ法で係数を決定する方法
📂数値解析ルンゲ-クッタ法で係数を決定する方法
概要
次のように与えられた常微分方程式について考える。yはtに対する関数であり、プライム(′)はtに対する微分を意味する。
y′=f(t,y),t≥t0,y(t0)=y0,tn+1=tn+h
明示的ルンゲ・クッタ法とは、与えられたyn=y(tn)に対してyn+1=y(tn+1)を次のように近似する方法である。
yn+1=yn+hj=1∑νbjf(tn+cjh,ξj),n=0,1,2,⋯
ここでそれぞれのξjは、
ξ1ξ2ξ3⋮ξν=yn=yn+ha2,1f(tn,ξ1)=yn+ha3,1f(tn,ξ1)+ha3,2f(tn+c2h,ξ2)=yn+hi=1∑ν−1aν,if(tn+cih,ξi)
RK法では以下の係数は選択して使用するものである。適切な係数を選択する方法について調べる。
A=[aj,i]=a2,1a3,1⋮aν,1a3,2aν,2⋯aν,ν−1andb=b1b2⋮bνandc=c1c2⋮cν
ν=2の場合
まず最も簡単なν=2の場合について見てみよう。するとξ1=ynでありξ2=yn+ha2,1f(tn,yn)である。従ってyn+1は次の通りである。
yn+1=yn+h[b1f(tn+c1h,ξ1)+b2f(tn+c2h,ξ2)]=yn+h[b1f(tn,yn)+b2f(tn+c2h,yn+ha2,1f(tn,yn))]
ここでc1=0である。ベクトル値関数fが十分にスムースであると仮定しよう。すると、f(tn+c2h,yn+ha2,1f(tn,yn))の点(tn,yn)でのテイラー展開は次の通りである。
f(tn+c2h,yn+ha2,1f(tn,yn))=f(tn,yn)+(c2h,ha2,1f(tn,yn))T∇f(tn,yn)+O(h2)=f(tn,yn)+h[c2∂t∂f(tn,yn)+a2,1∂y∂f(tn,yn)f(tn,yn)]+O(h2)
∇fはfの勾配を意味する。これを(1)に代入すると、
yn+1=yn+h[b1f(tn,yn)+b2f(tn,yn)+hb2c2∂t∂f(tn,yn)+hb2a2,1∂y∂f(tn,yn)f(tn,yn)+O(h2)]=yn+h(b1+b2)f(tn,yn)+h2b2[c2∂t∂f(tn,yn)+a2,1∂y∂f(tn,yn)f(tn,yn)]+O(h3)(2)
ところで、y′=f(t,y)の全微分はd(y′)=∂t∂f(t,y)dt+∂y∂f(t,y)dyであり、′=dtdなので、y′′は次の通りである。
y′′=∂t∂f(t,y)+∂y∂f(t,y)dtdy=∂t∂f(t,y)+∂y∂f(t,y)f(t,y)
テイラーの定理により次を得る。
yn+1=yn+hy′+2h2y′′+O(h3)=yn+hf(tn,yn)+2h2(∂t∂f(t,y)+∂y∂f(t,y)f(t,y))+O(h3)(3)
(2)と(3)を比較すると次の関係式を得る。
b1+b2=1,b2c2=21,a2,1=c2
これを満足するRKテーブルとしては、以下のものがある。
cAbt0212101,03221324143,012112121,
ν=3の場合
まずテイラーの定理により次を得る。
yn+1=yn+hy′+2h2y′′+6h3y′′′+O(h4)=yn+hfn+2h2(∂t∂f+∂y∂ff)+6h3(∂t2∂2f+∂y2∂2ff2+∂t∂f∂y∂f)+O(h4)(4)
そしてi=1∑j−1aj,i=cjと仮定しよう。するとν=3の場合には、
c1=0,c2=a2,1,c3=a3,1+a3,2
fn=f(tn,yn)と表記すると、
ξ1=yn,ξ2=yn+hc2fn,ξ3=yn+ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn)
従ってyn+1は次の通りである。
yn+1=yn+hb1fn+hb2f(tn+c2h,ξ2)+hb3f(tn+c3h,ξ3)=yn+hb1fn+hb2f(tn+c2h,yn+hc2fn)+hb3f(tn+c3h,yn+ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))(5)
b2が含まれる項は次の通りである。
f(tn+c2h,yn+hc2f(tn,yn))=fn+(hc2)∂t∂f+(hc2fn)∂y∂f+2(c2h)2∂t2∂2f+2(c2hfn)2∂y2∂2f+O(h3)
これを(5)に代入すると、
yn+1=yn+h(b1+b2)fn+h2b2c2∂t∂f+h2b2c2∂y∂ffn+2h3c22b2∂t2∂2f+2h3c22b2∂y2∂2ffn2+hb3f(tn+c3h,yn+ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))+O(h4)(6)
今度はb3が含まれる項を計算してみよう(係数比較に必要ない項は省略する)。
f(tn+c3h,yn+ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))=fn+c3h∂t∂f+(ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))∂y∂f+2h2c32∂t2∂2f+2(ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))2∂y2∂2f+O(h3)=fn+c3h∂t∂f+ha3,1fn∂y∂f+ha3,2[fn+hc2∂t∂f+O(h2)]∂y∂f+2h2c32∂t2∂2f+2(ha3,1fn+ha3,2fn)2∂y2∂2f+O(h3)=fn+c3h∂t∂f+hc3fn∂y∂f+h2c2a3,2∂t∂f∂y∂f+2h2c32∂t2∂2f+2(hc3fn)2∂y2∂2f+O(h3)
これを(6)に代入し整理すると次の通りである。
yn+1=yn+h(b1+b2)fn+h2b2c2∂t∂f+h2b2c2∂y∂ffn+2h3c22b2∂t2∂2f+2h3c22b2∂y2∂2ffn2+hb3[fn+c3h∂t∂f+hc3fn∂y∂f+h2c2a3,2∂t∂f∂y∂f+2h2c32∂t2∂2f+2(hc3fn)2∂y2∂2f]+O(h4)=yn+h(b1+b2+b3)fn+h2(b2c2+b3c3)∂t∂f+h2(b2c2+b3c3)∂y∂ffn+2h3(b2c22+b3c32)∂t2∂2f+h3b3c2a3,2∂t∂f∂y∂f+2h3(b2c22+b3c32)fn2∂y2∂2f+O(h4)
上記の式と(4)の係数を比較すると、次の関係式を得る。
b1+b2+b3=1,b2c2+b3c3=21,b2c22+b3c32=31,b3c2a3,2=61
これを満足するRKテーブルとしては、以下のものがある。
02112121−16123261(classical RK method)
032322132041328383(Nystrom scheme)
ν=4の場合
同様の方法により係数に関する条件を求めることができ、上記で見た規則によれば次の通りであると推測できる。
b1+b2+b3+b4=1,b2c2+b3c3+b4c4=21,b2c22+b3c32+b4c42=31,b2c23+b3c33+b4c43=41
RK4で最も有名な係数は次の通りである。以下のテーブルは実際に上記の条件を満たしている。
021211002100612103113161
参照