この計算ツールでできること
このツールは、初期条件 \(y(x_0) = y_0\) が与えられた \(y' = F(x, y)\) 形式の1階常微分方程式を、\(x_0\) から \(x_n\) までの区間で数値的に解きます。用いるのは古典的な4次ルンゲクッタ法(RK4)で、数値解析の分野でもっとも広く使われ、信頼性の高い1段階法の一つです。計算結果は、真の解を近似する点 \((x_i, y_i)\) の数表と、終点での値 \(y(x_n)\) として得られます。本ツールは純粋に数学的なもので、特定の国や単位系に依存しません。
使い方
右辺 \(F(x,y)\) を x と y の式として入力します(例:1-y^2、x+y、x*y、sin(x)+y など)。使用できる演算子は + - * / ^、関数は sin, cos, tan, exp, log, ln, sqrt, abs, tanh など、定数は pi と e です。始点 \(x_0\)、初期値 \(y_0\)、終点 \(x_n\) を設定し、区間を何等分するか(分割数 \(n\))を選びます。RK4 の全体誤差は \(h^4\) のオーダーで小さくなるため、分割数を増やすほど精度が高まります。
公式の解説
区間は幅 \(h = (x_n - x_0)/n\) の \(n\) 等分に分けられます。各ステップで RK4 は傾きを4回求めます。すなわち、区間の始点で1回(\(k_1\))、中点で2回(\(k_2, k_3\))、終点で1回(\(k_4\))です。次の値はこれらの重み付き平均として $$y_{n+1} = y_n + \frac{k_1 + 2k_2 + 2k_3 + k_4}{6}$$ で計算されます。これにより4次までの誤差項が打ち消され、局所打ち切り誤差は \(O(h^5)\)、全体誤差は \(O(h^4)\) となります。
計算例
\(x_0 = 0\)、\(y_0 = 0\)、\(x_n = 1\)、\(n = 10\)(\(h = 0.1\))として \(y' = 1 - y^2\) を解きます。厳密解は \(y = \tanh(x)\) です。最初の RK4 ステップでは \(y_1 = 0.0996679\) となり、\(\tanh(0.1) = 0.0996680\) とよく一致します。10 ステップすべてを終えると \(y(1) = 0.7615942\) となり、\(\tanh(1) = 0.7615942\) と小数点以下7桁まで一致します。
よくある質問
RK4 はオイラー法よりなぜ優れているのですか? オイラー法は1ステップにつき傾きを1回しか使わず、誤差は \(O(h)\) です。RK4 は4回求めて平均するため、同じステップ幅で \(O(h^4)\) の精度が得られ、目標精度に必要なステップ数がはるかに少なくて済みます。
分割数はいくつにすればよいですか? まずは 50 から始めてください。解が滑らかであれば、たいていそれで十分です。急激に変化する問題やスティッフに近い問題では、100、200、500 と増やしてください。
NaN や Infinity が出てしまうのはなぜですか? 解が発散したか、\(F(x,y)\) が無効な演算(負の数の対数やゼロ除算など)に達した可能性があります。式を見直し、区間を狭くするかステップ数を増やして試してください。