この計算ツールでできること
このツールは、\(y'' = F(x, y, y')\) の形で表される2階常微分方程式を、古典的な4次ルンゲ・クッタ法(RK4)を用いて区間 \([x_0, x_n]\) で数値的に解きます。右辺 \(F\) を \(x\)・\(y\)・\(p\)(\(p\) は \(y'\) を表します)の数式として入力し、初期条件 \(y(x_0)\) と \(y'(x_0)\)、区間の端点、そして分割数を指定するだけで、\(x\)・\(y\)・\(y'\) の値の一覧表と端点での値が得られます。純粋な数値解析の手法であり、特定の国や制度に依存せず、どこでもそのまま使えます。
使い方
\(F(x, y, p)\) を入力します。たとえば \(y'' + 4y' + 4y = 0\) なら -4*p - 4*y と入力します。\(x_0\)、\(y_0 = f(x_0)\)、\(p_0 = y'(x_0)\) を設定し、終点 \(x_n\) と分割数 \(n\) を選びます(\(n\) を増やすほど刻み幅 \(h = (x_n - x_0)/n\) が小さくなり、精度が高まります)。表示する有効桁数も指定できます。RK4 の全体誤差は \(O(h^4)\) なので、\(n\) を2倍にすると誤差はおよそ16分の1になります。
計算式の解説
2階常微分方程式は、\(p = y'\) とおくことで2本の1階方程式の連立系に変換できます。すなわち \(y' = p\)、\(p' = F(x, y, p)\) です。RK4 では各ステップで4つの傾き(\(y\) 用の \(k\)、\(p\) 用の \(j\))を重み付きで評価し、\((k_1 + 2k_2 + 2k_3 + k_4)/6\) および \((j_1 + 2j_2 + 2j_3 + j_4)/6\) として組み合わせ、両方の未知数を同時に進めます。
計算例
\(y'' = -4p - 4y\) を、\(x_0 = 0\)、\(y_0 = 0\)、\(p_0 = 1\)、\(x_n = 1\) として、刻みを1ステップだけ(\(n = 1\)、\(h = 1\))で計算してみます。4段階の評価から \(k_1=1\)、\(k_2=-1\)、\(k_3=2\)、\(k_4=-5\)、\(j_1=-4\)、\(j_2=2\)、\(j_3=-6\)、\(j_4=12\) が得られ、 $$y(1) = \frac{1 - 2 + 4 - 5}{6} = -\frac{1}{3} = -0.3333,$$ $$p(1) = 1 + \frac{-4 + 4 - 12 + 12}{6} = 1$$ となります。厳密解は \(y = x e^{-2x}\) なので、\(y(1) = e^{-2} = 0.1353\) です。つまり \(h = 1\) という1回の大きなステップでは粗すぎることが分かります。\(n = 50\) や \(100\) にすれば、厳密解にぴたりと収束します。
よくある質問
逆向き(過去方向)に積分できますか? できます。\(x_n\) を \(x_0\) より小さく設定すれば刻み幅 \(h\) が負になり、\(x_0\) から \(x_n\) へ向かって積分されます。
ステップ数が少ないと答えがおかしいのはなぜ? RK4 の精度は刻み幅の小ささに依存します。結果が変化しなくなるまで \(n\) を増やしてください。
F にはどんな関数が使えますか? + - * / ^、括弧、sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, exp, log/ln, log10, sqrt, abs、および定数 pi と e が使えます。