ルンゲ・クッタ法
ルンゲ・クッタ法とは、常微分方程式の数値解法としてよく使われる方法である。
`y'=f(x,y)` の形の微分方程式に対して、刻み幅を `h` とするとき、
`f_1 = hf(x,y), f_2 = h(x+1/2h, y+1/2f_1),
f_3=h(x+1/2h,y+1/2f_2), f_4=h(x+h,y+f_3)`
を計算して、
`f(x+h) ~= f(x) + 1/6(f_1+2f_2+2f_3+f_4)`
として求める方法をいう。
例1 解析解が求められない場合
例 1 は小林 幹雄ほか:新装版 数学公式集 p.202 から引用した。微分方程式は次で与えられる :
`y'=x+y^2, y(0)=0`
この微分方程式は解析解を持たない。刻み幅 `h=0.2` で、`y(0.4)` の値を求める。
以下は JavaScript の計算である。
| `x=0.2` | `x=0.4` | |
| `f_1` | ||
| `f_2` | ||
| `f_3` | ||
| `f_4` | ||
| `y(x)` |
同書では `y(0.4)=0.080524` が与えられている。JavaScript の計算と合っている。
例2 解析解が求められる場合
例 2 は 奥村晴彦:C言語による標準アルゴリズム事典 pp.125-127 から引用した。 常微分方程式 `y' = 1- y^2` を `0 le x le 1` の範囲で初期条件 `f(0) = 0` のもとに解くものである。 厳密解は `y = tanh x` である。
| `x=0.25` | `x=0.50` | `x=0.75` | `x=0.10` | |
| RG | ||||
| 真値 |
ルンゲ・クッタ法を計算する JavaScript のソフトウェア
math.js はルンゲ・クッタ法による数値解を得る関数を有しているが、`y = 1 - y^2` を初期条件 `y(0)=0` で解くことができない。