ルンゲクッタ法(2次)計算ツールとは
本ツールは、\(y' = F(x, y)\) の形をした1階常微分方程式(ODE)を、区間 \([x_0, x_n]\) にわたって数値的に解くものです。初期条件 \(y_0 = f(x_0)\) を出発点として、2次のルンゲクッタ法(中点法)を用いて計算を進め、\((x, y)\) の近似値の数表と、終端での値 \(y_n = f(x_n)\) を出力します。国や制度に依存しない、汎用的な数学ツールです。
使い方
右辺 \(F(x,y)\) を \(x\) と \(y\) を含む数式として入力します(例:1-y^2、x*y、sin(x)+y など)。次に初期点 \(x_0\)・\(y_0\)、計算範囲の終端 \(x_n\)、そして等分割数 \(n\) を指定してください。区間は \(n\) 等分され、各ステップ幅は $$h = \frac{x_n - x_0}{n}$$ となります。\(n\) を大きくするほどステップが細かくなり、精度が向上します。なお「表示桁数」の選択は、結果として表示する有効数字の桁数を変えるだけで、計算精度そのものには影響しません。
計算式の解説
中点法によるルンゲクッタ法は、解を1ステップずつ次のように進めます。
$$\begin{aligned} k_1 &= h \cdot F(x_i, y_i) \\ k_2 &= h \cdot F\left(x_i + \tfrac{h}{2},\; y_i + \tfrac{k_1}{2}\right) \\ y_{i+1} &= y_i + k_2, \quad x_{i+1} = x_i + h \end{aligned}$$ステップの中点で傾きを評価することで、主要な誤差項が打ち消されます。1ステップあたりの局所打ち切り誤差は \(O(h^3)\)、全体の大域誤差は \(O(h^2)\) です。したがって \(h\) を半分にすると、誤差はおおよそ1/4になります。
計算例
\(y' = 1 - y^2\) を \(x_0 = 0\)、\(y_0 = 0\)、\(x_n = 1\)、\(n = 50\)(このとき \(h = 0.02\))で解いてみましょう。厳密解は \(y = \tanh(x)\) です。ステップ1では $$k_1 = 0.02 \cdot (1-0) = 0.02$$ $$k_2 = 0.02 \cdot (1-0.01^2) = 0.019998$$ $$y_1 = 0.019998$$ となります。これを50ステップ続けると \(y(1) \approx 0.76159\) が得られ、\(\tanh(1) \approx 0.7615942\) と小数第5位まで一致します。
よくある質問
精度はどのくらいですか? 大域誤差が \(h^2\) に比例するため、\(n\) を大きくするほど精度は高くなります。ただし、硬い(stiff な)方程式やステップ幅が極端に大きい場合は、結果が発散することがあります。
\(x_n\) を \(x_0\) より小さくできますか? できます。その場合 \(h\) は負となり、\(x\) の負方向(後ろ向き)に積分されますが、計算としては有効です。
どんな関数が使えますか? 一般的な関数が使えます。\(\sin\)、\(\cos\)、\(\tan\)、\(\exp\)、\(\ln\)、\(\log\)、\(\sqrt{\phantom{x}}\) のほか、\(+\)、\(-\)、\(*\)、\(/\)、\(\hat{}\) と括弧、そして定数 \(e\) と \(\pi\) が利用できます。