ルンゲ・クッタ法
ルンゲ・クッタ法とは、現在の値から次の値を求める過程で、複数の中間的地点における仮の値を利用する手法の総称です。以下の微分方程式について、
$$\frac{dy}{dx}=f(x,y)$$
現在の値($x_n,y_n$)から、次の値($x_{n+1},y_{n+1}$)の値を算出します。尚、$x_{n+1}=x_n+h$ です。
ルンゲ・クッタ法の長所は、比較的簡単な計算式でありながら、回数不定の反復を含まず、離散的誤差の小さいということです。一方で短所は、過去の情報を利用しないため(単段式)、過去の情報を利用する多段式の公式に比べ精度が落ちるとされています。
4次の公式
4次のルンゲ・クッタ法の公式は以下になります。尚、ルンゲ・クッタ法には変数が異なる複数の公式が存在します。
$$y_{n+1}=y_n+\frac{h}{6}(k_1+2k_2+2k_3+k_4)$$$$x_{n+1}=x_n+h$$
このとき $k_1\sim k_4$ は以下で求められます。
$$k_1=f(x_n,y_n)$$$$k_2=f\Big(x_n+\frac{h}{2},y_n+\frac{h}{2}k_1\Big)$$$$k_3=f\Big(x_n+\frac{h}{2},y_n+\frac{h}{2}k_2\Big)$$$$k_4=f(x_n+h,y_n+hk_3)$$
6次の公式
6次のルンゲ・クッタ法の公式は以下になります。こちらも、変数の異なる複数の公式が存在します。
$$y_{n+1}=y_n+\frac{h}{840}\Big(41(k_1+k_8)+216(k_3+k_5)+27k_4\Big)$$$$x_{n+1}=x_n+h$$
このとき $k_1\sim k_8$ は以下で求められます。
$$k_1=f(x_n,y_n)$$$$k_2=f\Big(x_n+\frac{h}{9},y_n+\frac{h}{9}k_1\Big)$$$$k_3=f\Big(x_n+\frac{h}{6},y_n+\frac{h}{24}(k_1+3k_2)\Big)$$$$k_4=f\Big(x_n+\frac{h}{3},y_n+\frac{h}{6}(k_1-3k_2+4k_3)\Big)$$$$k_5=f\Big(x_n+\frac{h}{2},y_n+\frac{h}{8}(k_1+3k_4)\Big)$$$$k_6=f\Big(x_n+\frac{2h}{3},y_n+\frac{h}{3}(-4k_1-21k_2+46k_3-29k_4+10k_5)\Big)$$$$k_7=f\Big(x_n+\frac{5h}{6},y_n+\frac{h}{72}(-8k_1+99k_2-84k_3+44k_5+9k_6)\Big)$$$$k_8=f\Big(x_n+h,y_n+\frac{h}{82}(107k_1-243k_2+354k_4$$$$-172k_5-36k_6+72k_7)\Big)$$
ルンゲ・クッタ・ギル法
ルンゲ・クッタ・ギル法とは、メモリを節約できる手法として改良されました。
4次の公式
4次のルンゲ・クッタ・ギル法の公式は以下になります。尚、初回については $q_0=0$ ですが、次回からは $q_0=q_4$ として計算します。
$$k_1=hf(x_n,y_n) , r_1=\frac{1}{2}(k_1-2q_0)$$$$y_n^{(1)}=y_n+r_1 , q_1=q_0+3r_1-\frac{1}{2}k_1$$
$$k_2=hf\Big(x_n+\frac{h}{2},y_n^{(1)}\Big) , r_2=\Big(1-\sqrt{\frac{1}{2}}\Big)(k_2-q_1)$$$$y_n^{(2)}=y_n^{(1)}+r_2 , q_2=q_1+3r_2-\Big(1-\sqrt{\frac{1}{2}}\Big)k_2$$
$$k_3=hf\Big(x_n+\frac{h}{2},y_n^{(2)}\Big) , r_3=\Big(1+\sqrt{\frac{1}{2}}\Big)(k_3-q_2)$$$$y_n^{(3)}=y_n^{(2)}+r_3 , q_3=q_2+3r_3-\Big(1+\sqrt{\frac{1}{2}}\Big)k_3$$
$$k_4=hf(x_n+h,y_n^{(3)}) , r_4=\frac{1}{6}(k_4-2q_3)$$$$y_{n+1}=y_n^{(3)}+r_4 , q_4=q_3+3r_4-\frac{1}{2}k_4$$
このように、ルンゲ・クッタ法が全ての $k_1\sim k_4$ を計算して最後に $y$ の差分を求めるのに対し、ルンゲ・クッタ・ギル法では最後の $k_4$ のみが利用されます。
尚、ルンゲ・クッタ・ギルの公式を書き換えると、以下のようにまとめることができます。
$$y_{n+1}=y_n+r_1+r_2+r_3+r_4$$$$=\frac{1}{6}k_1+\frac{1}{3}\Big(1-\sqrt{\frac{1}{2}}\Big)k_2+\frac{1}{3}\Big(1+\sqrt{\frac{1}{2}}\Big)k_3+\frac{1}{6}k_4$$