ルンゲ・クッタ法とは

/計算数学

ルンゲ・クッタ法

ルンゲ・クッタ法とは、現在の値から次の値を求める過程で、複数の中間的地点における仮の値を利用する手法の総称です。以下の微分方程式について、

$$\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_4$ は以下で求められます。

$$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$$

 

応用数学
物理数学、計算数学、情報・暗号、機械学習、金融工学、ゲーム理論
散策路TOP
古典物理、量子力学、物性論、数学、応用数学、力学、電磁気学、相対論、熱・統計力学、解析学、代数学、幾何学、統計分析、情報

 

タイトルとURLをコピーしました