logo

ルンゲ-クッタ法で係数を決定する方法 📂数値解析

ルンゲ-クッタ法で係数を決定する方法

概要1

次のように与えられた常微分方程式について考える。yyttに対する関数であり、プライム()(^{\prime})ttに対する微分を意味する。

y=f(t,y),tt0,y(t0)=y0,tn+1=tn+h y^{\prime} = f(t,y),\quad t \ge t_{0},\quad y(t_{0}) = y_{0}, \quad t_{n+1} = t_{n} + h

明示的ルンゲ・クッタ法とは、与えられたyn=y(tn)y_{n} = y(t_{n})に対してyn+1=y(tn+1)y_{n+1} = y(t_{n+1})を次のように近似する方法である。

yn+1=yn+hj=1νbjf(tn+cjh,ξj),n=0,1,2, y_{n+1} = y_{n} + h\sum_{j=1}^{\nu} b_{j} f(t_{n} + c_{j}h, \xi_{j}),\quad n=0,1,2,\cdots

ここでそれぞれのξj\xi_{j}は、

ξ1=ynξ2=yn+ha2,1f(tn,ξ1)ξ3=yn+ha3,1f(tn,ξ1)+ha3,2f(tn+c2h,ξ2)ξν=yn+hi=1ν1aν,if(tn+cih,ξi) \begin{align*} \xi_{1} &= y_{n} \\ \xi_{2} &= y_{n} + ha_{2,1}f(t_{n}, \xi_{1}) \\ \xi_{3} &= y_{n} + ha_{3,1}f(t_{n}, \xi_{1}) + ha_{3,2}f(t_{n} + c_{2}h, \xi_{2}) \\ \vdots & \\ \xi_{\nu} &= y_{n} + h\sum_{i=1}^{\nu-1}a_{\nu, i}f(t_{n} + c_{i}h, \xi_{i}) \end{align*}

RK法では以下の係数は選択して使用するものである。適切な係数を選択する方法について調べる。 A=[aj,i]=[a2,1a3,1a3,2aν,1aν,2aν,ν1]andb=[b1b2bν]andc=[c1c2cν] A = [a_{j,i}] = \begin{bmatrix} \\ a_{2,1} & \\ a_{3,1} & a_{3,2} \\ \vdots & \\ a_{\nu,1} & a_{\nu,2} & \cdots & a_{\nu,\nu-1} & \end{bmatrix} \quad \text{and} \quad \mathbf{b} = \begin{bmatrix} b_{1} \\ b_{2} \\ \vdots \\ b_{\nu} \end{bmatrix} \quad \text{and} \quad \mathbf{c} = \begin{bmatrix} c_{1} \\ c_{2} \\ \vdots \\ c_{\nu} \end{bmatrix}

ν=2\nu = 2の場合

まず最も簡単なν=2\nu = 2の場合について見てみよう。するとξ1=yn\xi_{1} = y_{n}でありξ2=yn+ha2,1f(tn,yn)\xi_{2} = y_{n} + ha_{2,1}f(t_{n}, y_{n})である。従ってyn+1y_{n+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))] \begin{align} y_{n+1} &= y_{n} + h \Big[ b_{1}f(t_{n} + c_{1}h, \xi_{1}) + b_{2}f(t_{n} + c_{2}h, \xi_{2}) \Big] \nonumber \\ &= y_{n} + h \Big[ b_{1}f(t_{n}, y_{n}) + b_{2}f(t_{n} + c_{2}h, y_{n} + ha_{2,1}f(t_{n}, y_{n}) )\Big] \end{align}

ここでc1=0c_{1} = 0である。ベクトル値関数ffが十分にスムースであると仮定しよう。すると、f(tn+c2h,yn+ha2,1f(tn,yn))f(t_{n} + c_{2}h, y_{n} + ha_{2,1}f(t_{n}, y_{n}) )の点(tn,yn)(t_{n}, y_{n})でのテイラー展開は次の通りである。

f(tn+c2h,yn+ha2,1f(tn,yn))=f(tn,yn)+(c2h,ha2,1f(tn,yn))Tf(tn,yn)+O(h2)=f(tn,yn)+h[c2f(tn,yn)t+a2,1f(tn,yn)yf(tn,yn)]+O(h2) \begin{align*} & f(t_{n} + c_{2}h, y_{n} + ha_{2,1}f(t_{n}, y_{n}) ) \\ &= f(t_{n}, y_{n}) + (c_{2}h, ha_{2,1}f(t_{n}, y_{n}))^{T} \nabla f(t_{n}, y_{n}) + \mathcal{O}(h^{2}) \\ &= f(t_{n}, y_{n}) + h\left[c_{2} \dfrac{\partial f(t_{n}, y_{n})}{\partial t} + a_{2,1}\dfrac{\partial f(t_{n}, y_{n})}{\partial y}f(t_{n}, y_{n}) \right] + \mathcal{O}(h^{2}) \\ \end{align*}

f\nabla fff勾配を意味する。これを(1)(1)に代入すると、

yn+1=yn+h[b1f(tn,yn)+b2f(tn,yn)+hb2c2f(tn,yn)t+hb2a2,1f(tn,yn)yf(tn,yn)+O(h2)]=yn+h(b1+b2)f(tn,yn)+h2b2[c2f(tn,yn)t+a2,1f(tn,yn)yf(tn,yn)]+O(h3) \begin{align*} y_{n+1} &= y_{n} + h \bigg[ b_{1}f(t_{n}, y_{n}) + b_{2}f(t_{n}, y_{n}) \\ & \qquad + hb_{2}c_{2} \dfrac{\partial f(t_{n}, y_{n})}{\partial t} + hb_{2}a_{2,1}\dfrac{\partial f(t_{n}, y_{n})}{\partial y}f(t_{n}, y_{n}) + \mathcal{O}(h^{2}) \bigg] \\ &= y_{n} + h (b_{1} + b_{2})f(t_{n}, y_{n}) \\ & \qquad + h^{2}b_{2} \left[ c_{2} \dfrac{\partial f(t_{n}, y_{n})}{\partial t} + a_{2,1}\dfrac{\partial f(t_{n}, y_{n})}{\partial y}f(t_{n}, y_{n}) \right] + \mathcal{O}(h^{3}) \tag{2} \end{align*}

ところで、y=f(t,y)y^{\prime} = f(t, y)全微分d(y)=f(t,y)tdt+f(t,y)ydyd (y^{\prime}) = \dfrac{\partial f(t, y)}{\partial t}dt + \dfrac{\partial f(t, y)}{\partial y}dyであり、=ddt^{\prime} = \dfrac{d}{dt}なので、yy^{\prime \prime}は次の通りである。

y=f(t,y)t+f(t,y)ydydt=f(t,y)t+f(t,y)yf(t,y) y^{\prime \prime} = \dfrac{\partial f(t, y)}{\partial t} + \dfrac{\partial f(t, y)}{\partial y}\dfrac{dy}{dt} = \dfrac{\partial f(t, y)}{\partial t} + \dfrac{\partial f(t, y)}{\partial y}f(t, y)

テイラーの定理により次を得る。

yn+1=yn+hy+h22y+O(h3)=yn+hf(tn,yn)+h22(f(t,y)t+f(t,y)yf(t,y))+O(h3) \begin{align*} y_{n+1} &= y_{n} + hy^{\prime} + \dfrac{h^{2}}{2}y^{\prime \prime} + \mathcal{O}(h^{3}) \\ &= y_{n} + hf(t_{n},y_{n}) + \dfrac{h^{2}}{2}\left( \dfrac{\partial f(t, y)}{\partial t} + \dfrac{\partial f(t, y)}{\partial y}f(t, y) \right) + \mathcal{O}(h^{3}) \tag{3} \\ \end{align*}

(2)(2)(3)(3)を比較すると次の関係式を得る。

b1+b2=1,b2c2=12,a2,1=c2 b_{1} + b_{2} = 1, \qquad b_{2}c_{2} = \dfrac{1}{2}, \qquad a_{2,1} = c_{2}

これを満足するRKテーブルとしては、以下のものがある。

cAbt0121201,02323121434,011121212, \begin{array}{c|c} \mathbf{c} & A \\ \hline & \mathbf{b}^{t} \end{array} \qquad \begin{array}{c|c} 0 \\ \frac{1}{2} & \frac{1}{2} \\[0.5em] \hline & 0 & 1 \end{array}, \qquad \begin{array}{c|c} 0 \\ \frac{2}{3} & \frac{2}{3} \\[0.5em] \hline \phantom{\dfrac{1}{2}} & \frac{1}{4} & \frac{3}{4} \end{array}, \qquad \begin{array}{c|c} 0 \\ 1 & 1 \\[0.5em] \hline \phantom{\dfrac{1}{2}} & \frac{1}{2} & \frac{1}{2} \end{array}, \qquad

ν=3\nu = 3の場合

まずテイラーの定理により次を得る。

yn+1=yn+hy+h22y+h36y+O(h4)=yn+hfn+h22(ft+fyf)+h36(2ft2+2fy2f2+ftfy)+O(h4)(4) \begin{aligned} y_{n+1} &= y_{n} + hy^{\prime} + \dfrac{h^{2}}{2}y^{\prime \prime} + \dfrac{h^{3}}{6}y^{\prime \prime \prime} + \mathcal{O}(h^{4}) \\ &= y_{n} + hf_{n} + \dfrac{h^{2}}{2}\left( \dfrac{\partial f}{\partial t} + \dfrac{\partial f}{\partial y}f \right) + \dfrac{h^{3}}{6}\left( \dfrac{\partial^{2} f}{\partial t^{2}} + \dfrac{\partial^{2} f}{\partial y^{2}}f^{2} + \dfrac{\partial f}{\partial t}\dfrac{\partial f}{\partial y} \right) + \mathcal{O}(h^{4}) \tag{4} \end{aligned}

そしてi=1j1aj,i=cj\sum\limits_{i=1}^{j-1} a_{j,i} = c_{j}と仮定しよう。するとν=3\nu = 3の場合には、

c1=0,c2=a2,1,c3=a3,1+a3,2 c_{1} = 0,\qquad c_{2} = a_{2,1},\qquad c_{3} = a_{3,1} + a_{3,2}

fn=f(tn,yn)f_{n} = f(t_{n}, y_{n})と表記すると、

ξ1=yn,ξ2=yn+hc2fn,ξ3=yn+ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn) \xi_{1} = y_{n}, \quad \xi_{2} = y_{n} + hc_{2} f_{n}, \\[1em] \xi_{3} = y_{n} + ha_{3,1}f_{n} + ha_{3,2}f(t_{n} + c_{2}h, y_{n} + hc_{2} f_{n})

従ってyn+1y_{n+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)) \begin{align*} y_{n+1} &= y_{n} + hb_{1}f_{n} + hb_{2}f(t_{n} + c_{2}h, \xi_{2}) + hb_{3}f(t_{n} + c_{3}h, \xi_{3}) \\ &= y_{n} + hb_{1}f_{n} + hb_{2}f(t_{n} + c_{2}h, y_{n} + hc_{2} f_{n}) \\ & \qquad + hb_{3}f(t_{n} + c_{3}h, y_{n} + ha_{3,1}f_{n} + ha_{3,2}f(t_{n} + c_{2}h, y_{n} + hc_{2} f_{n})) \tag{5} \end{align*}

b2b_{2}が含まれる項は次の通りである。

f(tn+c2h,yn+hc2f(tn,yn))=fn+(hc2)ft+(hc2fn)fy+(c2h)222ft2+(c2hfn)222fy2+O(h3) \begin{align*} & f(t_{n} + c_{2}h, y_{n} + hc_{2}f(t_{n}, y_{n}) ) \\ &= f_{n} + (hc_{2}) \dfrac{\partial f}{\partial t} + (hc_{2}f_{n})\dfrac{\partial f}{\partial y} + \dfrac{(c_{2}h)^{2}}{2} \dfrac{\partial^{2} f}{\partial t^{2}} + \dfrac{(c_{2}h f_{n})^{2}}{2} \dfrac{\partial^{2} f}{\partial y^{2}} + \mathcal{O}(h^{3}) \\ \end{align*}

これを(5)(5)に代入すると、

yn+1=yn+h(b1+b2)fn+h2b2c2ft+h2b2c2fyfn+h3c22b222ft2+h3c22b222fy2fn2+hb3f(tn+c3h,yn+ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))+O(h4)(6) \begin{aligned} y_{n+1} &= y_{n} + h(b_{1} + b_{2})f_{n} + h^{2}b_{2}c_{2} \dfrac{\partial f}{\partial t} + h^{2}b_{2}c_{2} \dfrac{\partial f}{\partial y}f_{n} \\ & \qquad + \dfrac{h^{3}c_{2}^{2}b_{2}}{2} \dfrac{\partial^{2} f}{\partial t^{2}} + \dfrac{h^{3}c_{2}^{2}b_{2}}{2} \dfrac{\partial^{2} f}{\partial y^{2}}f_{n}^{2} \\ & \qquad + hb_{3}f(t_{n} + c_{3}h, y_{n} + ha_{3,1}f_{n} + ha_{3,2}f(t_{n} + c_{2}h, y_{n} + hc_{2} f_{n})) + \mathcal{O}(h^{4}) \tag{6} \end{aligned}

今度はb3b_{3}が含まれる項を計算してみよう(係数比較に必要ない項は省略する)。

f(tn+c3h,yn+ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))=fn+c3hft+(ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))fy+h2c3222ft2+(ha3,1fn+ha3,2f(tn+c2h,yn+hc2fn))222fy2+O(h3)=fn+c3hft+ha3,1fnfy+ha3,2[fn+hc2ft+O(h2)]fy+h2c3222ft2+(ha3,1fn+ha3,2fn)222fy2+O(h3)=fn+c3hft+hc3fnfy+h2c2a3,2ftfy+h2c3222ft2+(hc3fn)222fy2+O(h3) \begin{align*} & f(t_{n} + c_{3}h, y_{n} + ha_{3,1}f_{n} + ha_{3,2}f(t_{n} + c_{2}h, y_{n} + hc_{2} f_{n})) \\ &= f_{n} + c_{3}h \dfrac{\partial f}{\partial t} + \left( ha_{3,1}f_{n} + ha_{3,2}f(t_{n} + c_{2}h, y_{n} + hc_{2} f_{n}) \right) \dfrac{\partial f}{\partial y} \\ & \qquad + \dfrac{h^{2}c_{3}^{2}}{2} \dfrac{\partial^{2} f}{\partial t^{2}} + \dfrac{\left( ha_{3,1}f_{n} + ha_{3,2}f(t_{n} + c_{2}h, y_{n} + hc_{2} f_{n}) \right)^{2}}{2} \dfrac{\partial^{2} f}{\partial y^{2}} + \mathcal{O}(h^{3}) \\ &= f_{n} + c_{3}h \dfrac{\partial f}{\partial t} + ha_{3,1}f_{n}\dfrac{\partial f}{\partial y} + ha_{3,2} \left[ f_{n} + hc_{2}\dfrac{\partial f}{\partial t} + \mathcal{O}(h^{2}) \right] \dfrac{\partial f}{\partial y} \\ & \qquad + \dfrac{h^{2}c_{3}^{2}}{2} \dfrac{\partial^{2} f}{\partial t^{2}} + \dfrac{(ha_{3,1}f_{n} + ha_{3,2}f_{n})^{2}}{2} \dfrac{\partial^{2} f}{\partial y^{2}} + \mathcal{O}(h^{3}) \\ &= f_{n} + c_{3}h\dfrac{\partial f}{\partial t} + hc_{3}f_{n}\dfrac{\partial f}{\partial y} + h^{2}c_{2}a_{3,2}\dfrac{\partial f}{\partial t} \dfrac{\partial f}{\partial y} \\ & \qquad + \dfrac{h^{2}c_{3}^{2}}{2} \dfrac{\partial^{2} f}{\partial t^{2}} + \dfrac{(hc_{3}f_{n})^{2}}{2} \dfrac{\partial^{2} f}{\partial y^{2}} + \mathcal{O}(h^{3}) \\ \end{align*}

これを(6)(6)に代入し整理すると次の通りである。

yn+1=yn+h(b1+b2)fn+h2b2c2ft+h2b2c2fyfn+h3c22b222ft2+h3c22b222fy2fn2+hb3[fn+c3hft+hc3fnfy+h2c2a3,2ftfy+h2c3222ft2+(hc3fn)222fy2]+O(h4)=yn+h(b1+b2+b3)fn+h2(b2c2+b3c3)ft+h2(b2c2+b3c3)fyfn+h3(b2c22+b3c32)22ft2+h3b3c2a3,2ftfy+h3(b2c22+b3c32)2fn22fy2+O(h4) \begin{align*} y_{n+1} &= y_{n} + h(b_{1} + b_{2})f_{n} + h^{2}b_{2}c_{2} \dfrac{\partial f}{\partial t} + h^{2}b_{2}c_{2} \dfrac{\partial f}{\partial y}f_{n} \\ & \qquad + \dfrac{h^{3}c_{2}^{2}b_{2}}{2} \dfrac{\partial^{2} f}{\partial t^{2}} + \dfrac{h^{3}c_{2}^{2}b_{2}}{2} \dfrac{\partial^{2} f}{\partial y^{2}}f_{n}^{2} \\ & \qquad + hb_{3} \left[ f_{n} + c_{3}h\dfrac{\partial f}{\partial t} + hc_{3}f_{n}\dfrac{\partial f}{\partial y} + h^{2}c_{2}a_{3,2}\dfrac{\partial f}{\partial t} \dfrac{\partial f}{\partial y} \right. \\ & \qquad + \left. \dfrac{h^{2}c_{3}^{2}}{2} \dfrac{\partial^{2} f}{\partial t^{2}} + \dfrac{(hc_{3}f_{n})^{2}}{2} \dfrac{\partial^{2} f}{\partial y^{2}} \right] + \mathcal{O}(h^{4}) \\ &= y_{n} + h(b_{1} + b_{2} + b_{3})f_{n} + h^{2}(b_{2}c_{2} + b_{3}c_{3}) \dfrac{\partial f}{\partial t} + h^{2}(b_{2}c_{2} + b_{3}c_{3}) \dfrac{\partial f}{\partial y}f_{n} \\ & \qquad + \dfrac{h^{3}(b_{2}c_{2}^{2} + b_{3}c_{3}^{2})}{2} \dfrac{\partial^{2} f}{\partial t^{2}} + h^{3}b_{3}c_{2}a_{3,2}\dfrac{\partial f}{\partial t} \dfrac{\partial f}{\partial y} + \dfrac{h^{3}(b_{2}c_{2}^{2} + b_{3}c_{3}^{2})}{2} f_{n}^{2}\dfrac{\partial^{2} f}{\partial y^{2}} + \mathcal{O}(h^{4}) \end{align*}

上記の式と(4)(4)の係数を比較すると、次の関係式を得る。

b1+b2+b3=1,b2c2+b3c3=12,b2c22+b3c32=13,b3c2a3,2=16 b_{1} + b_{2} + b_{3} = 1, \quad b_{2}c_{2} + b_{3}c_{3} = \dfrac{1}{2}, \quad b_{2}c_{2}^{2} + b_{3}c_{3}^{2} = \dfrac{1}{3}, \quad b_{3}c_{2}a_{3,2} = \dfrac{1}{6}

これを満足するRKテーブルとしては、以下のものがある。

0121211212162316(classical RK method) \begin{array}{c|c} 0 \\ \frac{1}{2} & \frac{1}{2} \\[0.5em] 1 & -1 & 2 \\[0.5em] \hline \phantom{\dfrac{1}{2}} & \frac{1}{6} & \frac{2}{3} & \frac{1}{6} \end{array} \quad (\text{classical RK method}) 023232302312143838(Nystrom scheme) \begin{array}{c|c} 0 \\ \frac{2}{3} & \frac{2}{3} \\[0.5em] \frac{2}{3} & 0 & \frac{2}{3} \\[0.5em] \hline \phantom{\dfrac{1}{2}} & \frac{1}{4} & \frac{3}{8} & \frac{3}{8} \end{array} \quad (\text{Nystrom scheme})

ν=4\nu = 4の場合

同様の方法により係数に関する条件を求めることができ、上記で見た規則によれば次の通りであると推測できる。

b1+b2+b3+b4=1,b2c2+b3c3+b4c4=12,b2c22+b3c32+b4c42=13,b2c23+b3c33+b4c43=14 b_{1} + b_{2} + b_{3} + b_{4} = 1, \quad b_{2}c_{2} + b_{3}c_{3} + b_{4}c_{4} = \dfrac{1}{2}, \\[1em] b_{2}c_{2}^{2} + b_{3}c_{3}^{2} + b_{4}c_{4}^{2} = \dfrac{1}{3}, \quad b_{2}c_{2}^{3} + b_{3}c_{3}^{3} + b_{4}c_{4}^{3} = \dfrac{1}{4}

RK4で最も有名な係数は次の通りである。以下のテーブルは実際に上記の条件を満たしている。

012121201210010016131316 \begin{array}{c|cccc} 0 & \\[0.5em] \frac{1}{2} & \frac{1}{2} \\[0.5em] \frac{1}{2} & 0 & \frac{1}{2} \\[0.5em] 1 & 0 & 0 & 1 \\[0.5em] \hline {\displaystyle {\color{white}\dfrac{0}{0}}} & \frac{1}{6} & \frac{1}{3} & \frac{1}{3} & \frac{1}{6} \end{array}

参照


  1. Arieh Iserles, A First Course in the Numerical Analysis of Differential Equations (2nd Edition, 2009), p38-41 ↩︎