ルンゲクッタ法(RK4)の精度確認

Last updated:
シェア: X LinkedIn

ルンゲクッタ法の更新式

常微分方程式(1)の時間発展を計算したい場合、手軽に使用できるのが古典的なルンゲクッタ法だ。

dxdt=f(x,t)\begin{equation} % \label{eq:differential} \frac{dx}{dt} = f(x, t) \end{equation}

これを用いると、hhを時間ステップ幅として次のように計算を進めることができる。

k1=f(x,t)k2=f(x+h2k1, t+h2)k3=f(x+h2k2, t+h2)k4=f(x+hk3, t+h)\begin{align} % \label{eq:runge_kutta} &k_1 = f(x, t) \\ &k_2 = f(x + \frac{h}{2} k_1,~ t + \frac{h}{2}) \\ &k_3 = f(x + \frac{h}{2} k_2,~ t + \frac{h}{2}) \\ &k_4 = f(x + h k_3,~ t + h) \\ \end{align} Δx=h6(k1+2k2+2k3+k4)\begin{equation} \Delta x = \frac{h}{6} (k_1 + 2k_2 + 2k_3 + k_4) \end{equation}

ルンゲクッタ法の利点は、4次精度の近似を行いつつも更新式が非常にシンプルに表されている点だ。4次精度を得たいだけであれば、それを実現するようなスキームはいくらでも作り出すことが出来るので、ルンゲクッタ法の重要なポイントは手順のシンプルさにあると言ってもいいだろう。 今回は、(2)の表記は与えられているものとして、これが4次精度を実現出来ているということを確認してみたい。

4次精度の意味

まず4次精度ということの意味はなんだろうか。ある点(x0,t0)(x_0, t_0)の周りで(3)と近似したとき、そのままの形で、点(x0,t0)(x_0, t_0)でのテイラー展開(4)と4次の項まで一致すれば文句なしだが、そんなことはない。 (3)のhhについての微係数が4次まで一致するのである。(あるいは(3)をhhについてテイラー展開し直したものが(4)と4次の項まで一致するといってもいい。)

x~=x0+h6(k1+2k2+2k3+k4)\begin{equation} % \label{eq:x0} \tilde{x} = x_0 + \frac{h}{6} (k_1 + 2k_2 + 2k_3 + k_4) \end{equation} x=x0+dxdth+12d2xdt2h2+16d3xdt3h3+124d4xdt4h4+O(h5)\begin{equation} % \label{eq:taylor} x = x_0 + \frac{dx}{dt} h + \frac{1}{2} \frac{d^2x}{dt^2} h^2 + \frac{1}{6} \frac{d^3x}{dt^3} h^3 + \frac{1}{24} \frac{d^4x}{dt^4} h^4 + O(h^5) \end{equation}

x~\tilde{x}のhhに関する微分を見てみよう。

dx~dh=16(k1+2k2+2k3+k4)+h6[dk1dh+2dk2dh+2dk3dh+dk4dh]d2x~dh2=13[dk1dh+2dk2dh+2dk3dh+dk4dh]+h6[d2k1dh2+2d2k2dh2+2d2k3dh2+d2k4dh2]d3x~dh3=12[d2k1dh2+2d2k2dh2+2d2k3dh2+d2k4dh2]+h6[d3k1dh3+2d3k2dh3+2d3k3dh3+d3k4dh3]d4x~dh4=23[d3k1dh3+2d3k2dh3+2d3k3dh3+d3k4dh3]+h6[d4k1dh4+2d4k2dh4+2d4k3dh4+d4k4dh4]\begin{align} \frac{d\tilde{x}}{dh} &= \frac{1}{6} (k_1 + 2k_2 + 2k_3 + k_4) + \frac{h}{6} \left[ \frac{dk_1}{dh} + 2\frac{dk_2}{dh} + 2\frac{dk_3}{dh} + \frac{dk_4}{dh}\right] \\ \frac{d^2\tilde{x}}{dh^2} &= \frac{1}{3} \left[ \frac{dk_1}{dh} + 2\frac{dk_2}{dh} + 2\frac{dk_3}{dh} + \frac{dk_4}{dh}\right] + \frac{h}{6} \left[ \frac{d^2k_1}{dh^2} + 2\frac{d^2k_2}{dh^2} + 2\frac{d^2k_3}{dh^2} + \frac{d^2k_4}{dh^2}\right] \\ \frac{d^3\tilde{x}}{dh^3} &= \frac{1}{2} \left[ \frac{d^2k_1}{dh^2} + 2\frac{d^2k_2}{dh^2} + 2\frac{d^2k_3}{dh^2} + \frac{d^2k_4}{dh^2}\right] + \frac{h}{6} \left[ \frac{d^3k_1}{dh^3} + 2\frac{d^3k_2}{dh^3} + 2\frac{d^3k_3}{dh^3} + \frac{d^3k_4}{dh^3}\right] \\ \frac{d^4\tilde{x}}{dh^4} &= \frac{2}{3} \left[ \frac{d^3k_1}{dh^3} + 2\frac{d^3k_2}{dh^3} + 2\frac{d^3k_3}{dh^3} + \frac{d^3k_4}{dh^3}\right] + \frac{h}{6} \left[ \frac{d^4k_1}{dh^4} + 2\frac{d^4k_2}{dh^4} + 2\frac{d^4k_3}{dh^4} + \frac{d^4k_4}{dh^4}\right] \end{align}

h=0h=0での微係数についてのみ考えたいので、いずれの場合もhhの1次の項になっている部分は無視してしまってよい。 これらが、dxdt,d2xdt2,d3xdt3,d4xdt4\frac{dx}{dt}, \frac{d^2x}{dt^2}, \frac{d^3x}{dt^3}, \frac{d^4x}{dt^4}と一致することを示せば、4次精度(ルンゲクッタ法1ステップの誤差がO(h5)O(h^5)オーダーであるということ)が確認できたことになる。

ルンゲクッタ法の精度確認

ここからは、地道に4次精度となっていることを確認していこう。 まず、実現するべき1~4次の微係数を求めておく。

dxdt=f\begin{equation} \frac{dx}{dt} = f \end{equation} d2xdt2=∂f∂t+∂f∂xdxdt=∂f∂t+∂f∂xf\begin{equation} \frac{d^2x}{dt^2} = \frac{\partial f}{\partial t} + \frac{\partial f}{\partial x} \frac{dx}{dt} = \frac{\partial f}{\partial t} + \frac{\partial f}{\partial x} f \end{equation} d3xdt3=∂∂t(∂f∂t+∂f∂xf)+∂∂x(∂f∂t+∂f∂xf)f=∂2f∂t2+∂2f∂t∂xf+∂f∂x∂f∂t+∂2f∂x∂tf+∂2f∂x2f2+(∂f∂x)2f=∂2f∂t2+2∂2f∂t∂xf+∂f∂x∂f∂t+∂2f∂x2f2+(∂f∂x)2f\begin{align} \frac{d^3x}{dt^3} &= \frac{\partial}{\partial t} \left( \frac{\partial f}{\partial t} + \frac{\partial f}{\partial x} f \right)+ \frac{\partial}{\partial x} \left( \frac{\partial f}{\partial t} + \frac{\partial f}{\partial x} f \right) f \notag \\ &= \frac{\partial^2 f}{\partial t^2} + \frac{\partial^2 f}{\partial t \partial x} f + \frac{\partial f}{\partial x} \frac{\partial f}{\partial t} + \frac{\partial^2 f}{\partial x \partial t} f + \frac{\partial^2 f}{\partial x^2} f^2 + \left( \frac{\partial f}{\partial x} \right)^2 f \notag \\ &= \frac{\partial^2 f}{\partial t^2} + 2\frac{\partial^2 f}{\partial t \partial x} f + \frac{\partial f}{\partial x} \frac{\partial f}{\partial t} + \frac{\partial^2 f}{\partial x^2} f^2 + \left( \frac{\partial f}{\partial x} \right)^2 f \end{align} d4xdt4=∂∂t(d3xdt3)+∂∂x(d3xdt3)f=∂3f∂t3+2∂3f∂t2∂xf+2∂2f∂t∂x∂f∂t+∂2f∂t∂x∂f∂t+∂f∂x∂2f∂t2   +∂3f∂t∂x2f2+2∂2f∂x2∂f∂tf+2∂2f∂t∂x∂f∂xf+(∂f∂x)2∂f∂t   +∂3f∂x∂t2f+2∂3f∂t∂x2f2+2∂2f∂t∂x∂f∂xf+∂2f∂x2∂f∂tf+∂f∂x∂2f∂x∂tf   +∂3f∂x3f3+2∂2f∂x2∂f∂xf2+2∂2f∂x2∂f∂xf2+(∂f∂x)3f=∂3f∂t3+3∂3f∂t2∂xf+3∂3f∂t∂x2f2+∂3f∂x3f3   +3∂2f∂t∂x∂f∂t+5∂2f∂t∂x∂f∂xf+3∂2f∂x2∂f∂tf+∂f∂x∂2f∂t2+4∂2f∂x2∂f∂xf2   +(∂f∂x)2∂f∂t+(∂f∂x)3f\begin{align} \frac{d^4x}{dt^4} &= \frac{\partial}{\partial t} \left( \frac{d^3x}{dt^3} \right)+ \frac{\partial}{\partial x} \left( \frac{d^3x}{dt^3} \right) f \notag \\ &= \frac{\partial^3 f}{\partial t^3} + 2 \frac{\partial^3 f}{\partial t^2 \partial x} f + 2 \frac{\partial^2 f}{\partial t \partial x} \frac{\partial f}{\partial t} + \frac{\partial^2 f}{\partial t \partial x} \frac{\partial f}{\partial t} + \frac{\partial f}{\partial x} \frac{\partial^2 f}{\partial t^2} \notag \\ &~~~+ \frac{\partial^3 f}{\partial t \partial x^2} f^2 + 2 \frac{\partial^2 f}{\partial x^2} \frac{\partial f}{\partial t} f + 2 \frac{\partial^2 f}{\partial t \partial x} \frac{\partial f}{\partial x} f + \left( \frac{\partial f}{\partial x} \right)^2 \frac{\partial f}{\partial t} \notag \\ &~~~+ \frac{\partial^3 f}{\partial x \partial t^2} f + 2 \frac{\partial^3 f}{\partial t \partial x^2} f^2 + 2 \frac{\partial^2 f}{\partial t \partial x} \frac{\partial f}{\partial x} f + \frac{\partial^2 f}{\partial x^2} \frac{\partial f}{\partial t} f + \frac{\partial f}{\partial x} \frac{\partial^2 f}{\partial x \partial t} f \notag \\ &~~~+ \frac{\partial^3 f}{\partial x^3} f^3 + 2 \frac{\partial^2 f}{\partial x^2} \frac{\partial f}{\partial x} f^2 + 2 \frac{\partial^2 f}{\partial x^2} \frac{\partial f}{\partial x} f^2 + \left( \frac{\partial f}{\partial x} \right)^3 f \notag \\ &= \frac{\partial^3 f}{\partial t^3} + 3 \frac{\partial^3 f}{\partial t^2 \partial x} f + 3 \frac{\partial^3 f}{\partial t \partial x^2} f^2 + \frac{\partial^3 f}{\partial x^3} f^3 \notag \\ &~~~+ 3\frac{\partial^2 f}{\partial t \partial x} \frac{\partial f}{\partial t} + 5 \frac{\partial^2 f}{\partial t \partial x} \frac{\partial f}{\partial x}f + 3 \frac{\partial^2 f}{\partial x^2} \frac{\partial f}{\partial t} f + \frac{\partial f}{\partial x} \frac{\partial^2 f}{\partial t^2} + 4 \frac{\partial^2 f}{\partial x^2} \frac{\partial f}{\partial x} f^2 \notag \\ &~~~+ \left( \frac{\partial f}{\partial x} \right)^2 \frac{\partial f}{\partial t} + \left( \frac{\partial f}{\partial x} \right)^3 f \end{align}

次に、k1,k2,k3,k4k_1, k_2, k_3, k_4のhhに関する微分を求めていきたいのだが、まず準備としてf(X(h),T(h))f(X(h), T(h))の微分を求めておく。

dfdh=(dXdh∂∂X+dTdh∂∂T+∂∂h)f=∂f∂XdXdh+∂f∂TdTdh\begin{equation} % \label{eq:f'} \frac{df}{dh} = \left( \frac{dX}{dh} \frac{\partial}{\partial X} + \frac{dT}{dh} \frac{\partial}{\partial T} + \frac{\partial}{\partial h} \right) f = \frac{\partial f}{\partial X} \frac{dX}{dh} + \frac{\partial f}{\partial T} \frac{dT}{dh} \end{equation} d2fdh2=(dXdh∂∂X+dTdh∂∂T+∂∂h)2f=[(dXdh)2∂2∂X2+2dXdhdTdh∂2∂X∂T+(dTdh)2∂2∂T2+∂∂h(dXdh∂∂X)+∂∂h(dTdh∂∂T)]f=[(dXdh)2∂2∂X2+2dXdhdTdh∂2∂X∂T+(dTdh)2∂2∂T2+d2Xdh2∂∂X+d2Tdh2∂∂T]f\begin{align} % \label{eq:f''} \frac{d^2f}{dh^2} &= \left( \frac{dX}{dh} \frac{\partial}{\partial X} + \frac{dT}{dh} \frac{\partial}{\partial T} + \frac{\partial}{\partial h} \right)^2 f \notag \\ &= \left[ \left( \frac{dX}{dh} \right)^2 \frac{\partial^2}{\partial X^2} + 2 \frac{dX}{dh} \frac{dT}{dh} \frac{\partial^2}{\partial X \partial T} + \left( \frac{dT}{dh} \right)^2 \frac{\partial^2}{\partial T^2} + \frac{\partial}{\partial h} \left( \frac{dX}{dh} \frac{\partial}{\partial X} \right) +\frac{\partial}{\partial h} \left( \frac{dT}{dh} \frac{\partial}{\partial T} \right) \right] f \notag \\ &= \left[ \left( \frac{dX}{dh} \right)^2 \frac{\partial^2}{\partial X^2} + 2 \frac{dX}{dh} \frac{dT}{dh} \frac{\partial^2}{\partial X \partial T} + \left( \frac{dT}{dh} \right)^2 \frac{\partial^2}{\partial T^2} + \frac{d^2X}{dh^2} \frac{\partial}{\partial X} + \frac{d^2T}{dh^2} \frac{\partial}{\partial T} \right] f \end{align} d3fdh3=(dXdh∂∂X+dTdh∂∂T+∂∂h)3f=[(dXdh)3∂3∂X3+3(dXdh)2dTdh∂3∂X2∂T+3dXdh(dTdh)2∂3∂X∂T2+(dTdh)3∂3∂T3+3dXdhd2Xdh2∂2∂X2+3(dXdhd2Tdh2+dTdhd2Xdh2)∂2∂X∂T+3dTdhd2Tdh2∂2∂T2+d3Xdh3∂∂X+d3Tdh3∂∂T]f\begin{align} % \label{eq:f'''} \frac{d^3f}{dh^3} &= \left( \frac{dX}{dh} \frac{\partial}{\partial X} + \frac{dT}{dh} \frac{\partial}{\partial T} + \frac{\partial}{\partial h} \right)^3 f \notag \\ &= \left[ \left( \frac{dX}{dh} \right)^3 \frac{\partial^3}{\partial X^3} + 3 \left( \frac{dX}{dh} \right)^2 \frac{dT}{dh} \frac{\partial^3}{\partial X^2 \partial T}+ 3 \frac{dX}{dh} \left( \frac{dT}{dh} \right)^2 \frac{\partial^3}{\partial X \partial T^2} + \left( \frac{dT}{dh} \right)^3 \frac{\partial^3}{\partial T^3} \right. \notag \\ &\hspace{12pt}+ 3 \frac{dX}{dh} \frac{d^2X}{dh^2} \frac{\partial^2}{\partial X^2} + 3\left( \frac{dX}{dh} \frac{d^2T}{dh^2} + \frac{dT}{dh} \frac{d^2X}{dh^2} \right) \frac{\partial^2}{\partial X \partial T} + 3 \frac{dT}{dh} \frac{d^2T}{dh^2} \frac{\partial^2}{\partial T^2} \notag \\ &\hspace{12pt} \left.+ \frac{d^3X}{dh^3} \frac{\partial}{\partial X} + \frac{d^3T}{dh^3} \frac{\partial}{\partial T} \right] f \end{align}

k1k_1はhhに依らないので、次の関係が成り立つ。

dk1dh=0\begin{equation} \frac{dk_1}{dh} = 0 \end{equation}

k2k_2に関しては、X=x+h2k1, T=t+h2X=x+\frac{h}{2} k_1,~ T=t+\frac{h}{2}より、dXdh,dTdh\frac{dX}{dh}, \frac{dT}{dh}は次のように表される。

dXdh=k12+h2dk1dh=f2,dTdh=12\begin{equation} \frac{dX}{dh} = \frac{k_1}{2} + \frac{h}{2}\frac{dk_1}{dh} = \frac{f}{2}, \quad \frac{dT}{dh} = \frac{1}{2} \end{equation}

これをdfdh\frac{df}{dh}, d2fdh2\frac{d^2f}{dh^2}, d3fdh3\frac{d^3f}{dh^3}に代入すれば、k2k_2の微分が得られる。

dk2dh=f2∂f∂x+12∂f∂t\begin{equation} \frac{dk_2}{dh} = \frac{f}{2} \frac{\partial f}{\partial x} + \frac{1}{2} \frac{\partial f}{\partial t} \end{equation} d2k2dh2=f24∂2f∂x2+f2∂2f∂x∂t+14∂2f∂t2\begin{equation} \frac{d^2 k_2}{dh^2} = \frac{f^2}{4} \frac{\partial^2 f}{\partial x^2} + \frac{f}{2} \frac{\partial^2 f}{\partial x \partial t} + \frac{1}{4} \frac{\partial^2 f}{\partial t^2} \end{equation} d3k2dh3=f38∂3f∂x3+3f28∂3f∂x2∂t+3f8∂3f∂x∂t2+18∂3f∂t3\begin{equation} \frac{d^3 k_2}{dh^3} = \frac{f^3}{8} \frac{\partial^3 f}{\partial x^3} + \frac{3f^2}{8} \frac{\partial^3 f}{\partial x^2 \partial t} + \frac{3f}{8} \frac{\partial^3 f}{\partial x \partial t^2} + \frac{1}{8} \frac{\partial^3 f}{\partial t^3} \end{equation}

次にk3k_3に関しては、X=x+h2k2, T=t+h2X=x+\frac{h}{2} k_2,~ T=t+\frac{h}{2}より、それぞれの微分は次のように表される。

dXdh=k22+h2dk2dh,dTdh=12\begin{equation} \frac{dX}{dh} = \frac{k_2}{2} + \frac{h}{2}\frac{dk_2}{dh}, \quad \frac{dT}{dh} = \frac{1}{2} \end{equation} d2Xdh2=dk2dh+h2d2k2dh2,d2Tdh2=0\begin{equation} \frac{d^2X}{dh^2} = \frac{dk_2}{dh} + \frac{h}{2}\frac{d^2k_2}{dh^2}, \quad \frac{d^2T}{dh^2} = 0 \end{equation} d3Xdh3=32d2k2dh2+h2d3k2dh3\begin{equation} \frac{d^3X}{dh^3} = \frac{3}{2} \frac{d^2k_2}{dh^2} + \frac{h}{2}\frac{d^3k_2}{dh^3} \end{equation}

最終的に必要なのはh=0h=0の時の値なので、その場合に限ってのみk3k_3の微分を求める。

dk3dh∣h=0=k22∂f∂x+12∂f∂t\begin{equation} \left. \frac{dk_3}{dh} \right|_{h=0} = \frac{k_2}{2} \frac{\partial f}{\partial x} + \frac{1}{2} \frac{\partial f}{\partial t} \end{equation} d2k3dh2∣h=0=k224∂2f∂x2+k22∂2f∂x∂t+14∂2f∂t2+dk2dh∂f∂x\begin{align} \left. \frac{d^2k_3}{dh^2} \right|_{h=0} = \frac{k_2^2}{4} \frac{\partial^2 f}{\partial x^2} + \frac{k_2}{2} \frac{\partial^2 f}{\partial x \partial t}+ \frac{1}{4} \frac{\partial^2 f}{\partial t^2} + \frac{dk_2}{dh} \frac{\partial f}{\partial x} \end{align} d3k3dh3∣h=0=k238∂3f∂x3+3k228∂3f∂x2∂t+3k28∂3f∂x∂t2+18∂3f∂t3+3k22dk2dh∂2f∂x2+32dk2dh∂2f∂x∂t+32d2k2dh2∂f∂x\begin{align} \left. \frac{d^3k_3}{dh^3} \right|_{h=0} =&\frac{k_2^3}{8} \frac{\partial^3 f}{\partial x^3} + \frac{3k_2^2}{8} \frac{\partial^3 f}{\partial x^2 \partial t} + \frac{3 k_2}{8} \frac{\partial^3 f}{\partial x \partial t^2} \notag \\ &+ \frac{1}{8} \frac{\partial^3 f}{\partial t^3} + \frac{3 k_2}{2} \frac{dk_2}{dh} \frac{\partial^2 f}{\partial x^2} + \frac{3}{2} \frac{dk_2}{dh} \frac{\partial^2 f}{\partial x \partial t} + \frac{3}{2} \frac{d^2 k_2}{dh^2} \frac{\partial f}{\partial x} \end{align}

同様にk4k_4に関しては、次のように求めることが出来る。

dXdh=k3+hdk3dh,dTdh=1\begin{equation} \frac{dX}{dh} = k_3 + h \frac{dk_3}{dh}, \quad \frac{dT}{dh} = 1 \end{equation} d2Xdh2=2dk3dh+hd2k3dh2,   d2Tdh2=0\begin{equation} \frac{d^2X}{dh^2} = 2 \frac{dk_3}{dh} +h \frac{d^2k_3}{dh^2}, ~~~ \frac{d^2T}{dh^2} = 0 \end{equation} d3Xdh3=3d2k3dh2+hd3k3dh3\begin{equation} \frac{d^3X}{dh^3} = 3 \frac{d^2k_3}{dh^2} +h \frac{d^3k_3}{dh^3} \end{equation}

h=0h=0でのk4k_4の微分は次のように表される。

dk4dh∣h=0=k3∂f∂x+∂f∂t\begin{equation} \left. \frac{dk_4}{dh} \right|_{h=0} = k_3 \frac{\partial f}{\partial x} + \frac{\partial f}{\partial t} \end{equation} d2k4dh2∣h=0=k32∂2f∂x2+2k3∂2f∂x∂t+∂2f∂t2+2dk3dh∂f∂x\begin{align} \left.\frac{d^2k_4}{dh^2} \right|_{h=0} = k_3^2 \frac{\partial^2 f}{\partial x^2} + 2 k_3 \frac{\partial^2 f}{\partial x \partial t} + \frac{\partial^2 f}{\partial t^2} + 2\frac{dk_3}{dh} \frac{\partial f}{\partial x} \end{align} d3k4dh3∣h=0=k33∂3f∂x3+3k32∂3f∂x2∂t+3k3∂3f∂x∂t2+∂3f∂t3+6k3dk3dh∂2f∂x2+6dk3dh∂2f∂x∂t+3d2k3dh2∂f∂x\begin{align} \left.\frac{d^3k_4}{dh^3} \right|_{h=0} =& k_3^3 \frac{\partial^3 f}{\partial x^3} + 3k_3^2 \frac{\partial^3 f}{\partial x^2 \partial t} + 3k_3 \frac{\partial^3 f}{\partial x \partial t^2} + \frac{\partial^3 f}{\partial t^3} \notag \\ &+ 6 k_3 \frac{dk_3}{dh} \frac{\partial^2 f}{\partial x^2} + 6 \frac{dk_3}{dh} \frac{\partial^2 f}{\partial x \partial t} + 3 \frac{d^2 k_3}{dh^2} \frac{\partial f}{\partial x} \end{align}

これで(やっと)準備が整ったので、係数比較を行っていこう。

1次:

16(k1+2k2+2k3+k4)∣h=0=f\begin{equation} \left. \frac{1}{6} (k_1 + 2k_2 + 2k_3 + k_4) \right|_{h=0} = f \end{equation}

2次:

13[dk1dh+2dk2dh+2dk3dh+dk4dh]h=0=13[2(f2∂f∂x+12∂f∂t)+2(f2∂f∂x+12∂f∂t)+f∂f∂x+∂f∂t]=f∂f∂x+∂f∂t\begin{align} &\frac{1}{3} \left[ \frac{dk_1}{dh} + 2\frac{dk_2}{dh} + 2\frac{dk_3}{dh} + \frac{dk_4}{dh} \right]_{h=0} \notag \\ &= \frac{1}{3} \left[ 2\left( \frac{f}{2} \frac{\partial f}{\partial x} + \frac{1}{2} \frac{\partial f}{\partial t} \right) + 2\left( \frac{f}{2} \frac{\partial f}{\partial x} + \frac{1}{2} \frac{\partial f}{\partial t} \right) + f \frac{\partial f}{\partial x} + \frac{\partial f}{\partial t} \right] \notag \\ &= f \frac{\partial f}{\partial x} +\frac{\partial f}{\partial t} \end{align}

3次:

12[d2k1dh2+2d2k2dh2+2d2k3dh2+d2k4dh2]h=0=12[2(f24∂2f∂x2+f2∂2f∂x∂t+14∂2f∂t2)+2(f24∂2f∂x2+f2∂2f∂x∂t+14∂2f∂t2+(f2∂f∂x+12∂f∂t)∂f∂x)+(f2∂2f∂x2+2f∂2f∂x∂t+∂2f∂t2+2(f2∂f∂x+12∂f∂t)∂f∂x)]=∂2f∂x2+2f∂2f∂x∂t+∂2f∂t2+f(∂f∂x)2+∂f∂t∂f∂x\begin{align} &\frac{1}{2} \left[ \frac{d^2k_1}{dh^2} + 2\frac{d^2k_2}{dh^2} + 2\frac{d^2k_3}{dh^2} + \frac{d^2k_4}{dh^2}\right] _{h=0} \notag \\ &= \frac{1}{2} \left[ 2\left( \frac{f^2}{4} \frac{\partial^2 f}{\partial x^2} + \frac{f}{2} \frac{\partial^2 f}{\partial x \partial t} + \frac{1}{4} \frac{\partial^2 f}{\partial t^2} \right) \right. \notag \\ &\hspace{20pt}\left. + 2 \left( \frac{f^2}{4} \frac{\partial^2 f}{\partial x^2} + \frac{f}{2} \frac{\partial^2 f}{\partial x \partial t} + \frac{1}{4} \frac{\partial^2 f}{\partial t^2} + \left( \frac{f}{2} \frac{\partial f}{\partial x} + \frac{1}{2} \frac{\partial f}{\partial t} \right) \frac{\partial f}{\partial x} \right) \right. \notag\\ &\hspace{20pt}\left. + \left( f^2 \frac{\partial^2 f}{\partial x^2} + 2f \frac{\partial^2 f}{\partial x \partial t} + \frac{\partial^2 f}{\partial t^2} + 2 \left( \frac{f}{2} \frac{\partial f}{\partial x} + \frac{1}{2} \frac{\partial f}{\partial t} \right) \frac{\partial f}{\partial x} \right) \right] \notag \\ &= \frac{\partial^2 f}{\partial x^2} + 2f \frac{\partial^2 f}{\partial x \partial t} + \frac{\partial^2 f}{\partial t^2} + f \left( \frac{\partial f}{\partial x} \right)^2 + \frac{\partial f}{\partial t} \frac{\partial f}{\partial x} \end{align}

4次:

23[d3k1dh3+2d3k2dh3+2d3k3dh3+d3k4dh3]h=0=23[2(f38∂3f∂x3+3f28∂3f∂x2∂t+3f8∂3f∂x∂t2+18∂3f∂t3)+2(k238∂3f∂x3+3k228∂3f∂x2∂t+3k28∂3f∂x∂t2+18∂3f∂t3+3k22dk2dh∂2f∂x2+32dk2dh∂2f∂x∂t+32d2k2dh2∂f∂x)+(k33∂3f∂x3+3k32∂3f∂x2∂t+3k3∂3f∂x∂t2+∂3f∂t3+6k3dk3dh∂2f∂x2+6dk3dh∂2f∂x∂t+3d2k3dh2∂f∂x)]=∂3f∂t3+3∂3f∂t2∂xf+3∂3f∂t∂x2f2+∂3f∂x3f3+3∂2f∂t∂x∂f∂t+5∂2f∂t∂x∂f∂xf+3∂2f∂x2∂f∂tf+∂f∂x∂2f∂t2+4∂2f∂x2∂f∂xf2+(∂f∂x)2∂f∂t+(∂f∂x)3f\begin{align} &\frac{2}{3} \left[ \frac{d^3k_1}{dh^3} + 2\frac{d^3k_2}{dh^3} + 2\frac{d^3k_3}{dh^3} + \frac{d^3k_4}{dh^3}\right]_{h=0} \notag \\ &= \frac{2}{3} \left[ 2\left( \frac{f^3}{8} \frac{\partial^3 f}{\partial x^3} + \frac{3f^2}{8} \frac{\partial^3 f}{\partial x^2 \partial t} + \frac{3f}{8} \frac{\partial^3 f}{\partial x \partial t^2} + \frac{1}{8} \frac{\partial^3 f}{\partial t^3} \right) \right. \notag \\ &\hspace{11pt}+ 2 \left( \frac{k_2^3}{8} \frac{\partial^3 f}{\partial x^3} + \frac{3k_2^2}{8} \frac{\partial^3 f}{\partial x^2 \partial t} + \frac{3 k_2}{8} \frac{\partial^3 f}{\partial x \partial t^2} + \frac{1}{8} \frac{\partial^3 f}{\partial t^3} + \frac{3 k_2}{2} \frac{dk_2}{dh} \frac{\partial^2 f}{\partial x^2} + \frac{3}{2} \frac{dk_2}{dh} \frac{\partial^2 f}{\partial x \partial t} + \frac{3}{2} \frac{d^2 k_2}{dh^2} \frac{\partial f}{\partial x} \right) \notag \\ &\hspace{11pt}+ \left( k_3^3 \frac{\partial^3 f}{\partial x^3} + 3k_3^2 \frac{\partial^3 f}{\partial x^2 \partial t} + 3k_3 \frac{\partial^3 f}{\partial x \partial t^2} + \frac{\partial^3 f}{\partial t^3} \left.+ 6 k_3 \frac{dk_3}{dh} \frac{\partial^2 f}{\partial x^2} + 6 \frac{dk_3}{dh} \frac{\partial^2 f}{\partial x \partial t} + 3 \frac{d^2 k_3}{dh^2} \frac{\partial f}{\partial x} \right) \right] \notag \\ &= \frac{\partial^3 f}{\partial t^3} + 3 \frac{\partial^3 f}{\partial t^2 \partial x} f + 3 \frac{\partial^3 f}{\partial t \partial x^2} f^2 + \frac{\partial^3 f}{\partial x^3} f^3 \notag \\ &\hspace{11pt}+ 3\frac{\partial^2 f}{\partial t \partial x} \frac{\partial f}{\partial t} + 5 \frac{\partial^2 f}{\partial t \partial x} \frac{\partial f}{\partial x}f + 3 \frac{\partial^2 f}{\partial x^2} \frac{\partial f}{\partial t} f + \frac{\partial f}{\partial x} \frac{\partial^2 f}{\partial t^2} + 4 \frac{\partial^2 f}{\partial x^2} \frac{\partial f}{\partial x} f^2 \notag \\ &\hspace{11pt}+ \left( \frac{\partial f}{\partial x} \right)^2 \frac{\partial f}{\partial t} + \left( \frac{\partial f}{\partial x} \right)^3 f \end{align}

以上で各微係数が一致することが確認できた。途中の式変形をほぼ省略せずに書いているので、何かの参考になれば幸いだ。

Notation Table

SymbolDefinition
f(x,t)f(x,t)Function of ODE
hhStep size
kik_iRunge-Kutta intermediate values
∂nf∂xn\frac{\partial^n f}{\partial x^n}n-th partial derivative with respect to xx

関連記事

Xorshiftによる擬似乱数生成

Xorshiftはシンプルで高速な擬似乱数生成器(RNG)アルゴリズムです。本記事では、Xorshiftの基本的なコンセプトについて解説し、有効なXorshiftパラメータを見つけるためのRustコードを実装します。