オイラー法計算ツール
dy/dx = f(x, y)、初期点、終了のx値を入力すると、オイラー法、改良オイラー法(ホイン法)、4次のルンゲ=クッタ法による近似解が得られます。各ステップのすべての傾きを含むステップ表、厳密解(またはより精度の高い基準値)との誤差、ステップ幅を半分にしたときの変化、解曲線を重ねた方向場のグラフを表示します。無料で、登録は不要です。
独立変数にはx、未知数にはyを使い、+ − * / ^ と括弧で書きます:x + y、x*y、y*(1 − y)、sin(x) − y。関数:sin、cos、tan、exp、ln、sqrt など。
厳密解がわかっている場合はxの式で入力すると、真の誤差が表示されます。そうでなければ、非常に精度の高いRK4の基準値が使われます。
結果
3.1874849
y(1)の近似値
3.4365637
y(1)の厳密値
-0.249
誤差
0.1
ステップ幅 h
10
ステップ数 n
方法
yₙ₊₁ = yₙ + h·f(xₙ, yₙ):各ステップの始点での傾きに従います。大域誤差は h に比例します。
ステップ表
| n | xₙ | yₙ | k1 | 厳密解 y(xₙ) | 誤差 |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0.1 | 1.1 | 1.2 | 1.1103418 | -0.0103 |
| 2 | 0.2 | 1.22 | 1.42 | 1.2428055 | -0.0228 |
| 3 | 0.3 | 1.362 | 1.662 | 1.3997176 | -0.0377 |
| 4 | 0.4 | 1.5282 | 1.9282 | 1.5836494 | -0.0554 |
| 5 | 0.5 | 1.72102 | 2.22102 | 1.7974425 | -0.0764 |
| 6 | 0.6 | 1.943122 | 2.543122 | 2.0442376 | -0.101 |
| 7 | 0.7 | 2.1974342 | 2.8974342 | 2.3275054 | -0.13 |
| 8 | 0.8 | 2.4871776 | 3.2871776 | 2.6510819 | -0.164 |
| 9 | 0.9 | 2.8158954 | 3.7158954 | 3.0192062 | -0.203 |
| 10 | 1 | 3.1874849 | 3.4365637 | -0.249 |
同じステップ幅での3つの方法
| 方法 | 終点の y | 誤差 |
|---|---|---|
| オイラー法 | 3.1874849 | -0.249 |
| 改良オイラー法(ホイン法) | 3.4281617 | -0.0084 |
| ルンゲ=クッタ法4次 | 3.4365595 | -0.00000417 |
ステップ幅を半分にする(オイラー法)
| n | h | 終点の y | 誤差 |
|---|---|---|---|
| 10 | 0.1 | 3.1874849 | -0.249 |
| 20 | 0.05 | 3.3065954 | -0.13 |
| 40 | 0.025 | 3.3701277 | -0.0664 |
| 80 | 0.0125 | 3.4029699 | -0.0336 |
オイラー法では h を半分にすると誤差はおよそ半分に、ホイン法では4分の1に、RK4では16分の1になります。
グラフ
- 厳密解
- オイラー法
オイラー法計算ツールの使い方
- 1. 方程式を入力します。 dy/dx = f(x, y) の右辺を、x と y を使って書きます。例:
x + y、y*(1 - y)、sin(x) - y。 - 2. 初期条件と終了点を入力します。 x₀、y₀ = y(x₀)、そして解を求めるxの値を入力します。終了点はx₀より左にあってもかまいません。
- 3. ステップを選びます。 ステップ幅hを入力するか、ステップ数nに切り替えます。hで区間を等分できない場合、ツールが値を調整してその旨を表示します。
- 4. 方法を選び、表を読みます。 各行にxₙ、yₙ、使われた傾きが表示されます。厳密解がわかっている場合は入力すると、真の誤差が表示されます。
3つの方法
| 方法 | ステップ | 大域誤差 |
|---|---|---|
| オイラー法 | yₙ₊₁ = yₙ + h·f(xₙ, yₙ) | hに比例 |
| 改良オイラー法(ホイン法) | yₙ₊₁ = yₙ + (h/2)(k₁ + k₂)、ただし k₁ = f(xₙ, yₙ)、k₂ = f(xₙ + h, yₙ + h·k₁) | h²に比例 |
| ルンゲ=クッタ法4次 | yₙ₊₁ = yₙ + (h/6)(k₁ + 2k₂ + 2k₃ + k₄) | h⁴に比例 |
オイラー法は、各ステップの始点での接線に沿って進みます。ホイン法は、始点の傾きと予測した終点の傾きを平均するため、明示的な台形則とも呼ばれます。ルンゲ=クッタ法4次は、1ステップあたり傾きを4回求め、重み1、2、2、1で組み合わせます。これらはBurden and Faires, Numerical Analysis(第5章)の方法です。
具体例:y′ = x + y、y(0) = 1
厳密解は y = 2eˣ − x − 1 なので、y(1) = 2e − 2 ≈ 3.4365637 です。ステップ幅h = 0.1でのオイラー法の最初のステップは次のとおりです:
| n | xₙ | yₙ | 傾き f(xₙ, yₙ) | 厳密解 y(xₙ) |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 |
| 1 | 0.1 | 1.1 | 1.2 | 1.1103418 |
| 2 | 0.2 | 1.22 | 1.42 | 1.2428055 |
| 3 | 0.3 | 1.362 | 1.662 | 1.3997176 |
例えば、y₁ = 1 + 0.1 × (0 + 1) = 1.1、y₂ = 1.1 + 0.1 × (0.1 + 1.1) = 1.22 です。10ステップ後、オイラー法は y(1) ≈ 3.1874849 に到達し、誤差は −0.2491 となります。真の解は下に凸(y″ > 0)なので、接線は解曲線の下側にあり、オイラー法は過小に見積もります。
| ステップ数 n(h) | x = 1でのオイラー法の誤差 | ホイン法の誤差 | RK4の誤差 |
|---|---|---|---|
| 10(0.1) | −0.2491 | −0.0084 | −0.0000042 |
| 20(0.05) | −0.1300 | −0.0022 | −0.00000027 |
| 40(0.025) | −0.0664 | −0.00056 | −0.000000017 |
| 80(0.0125) | −0.0336 | −0.00014 | −0.0000000011 |
hを半分にするたびに、オイラー法の誤差はおよそ半分に、ホイン法は4分の1に、RK4は16分の1になります。これは表に示した次数どおりです。RK4でn = 10のときの誤差に合わせるには、オイラー法は数十万ステップが必要です。
方向場と誤差の読み方
グラフの短い線分は、格子点ごとの傾き f(x, y) を示しています。真の解は、どこでもその線分に接する曲線です。数値解は、その上に折れ線として描かれます。厳密解を入力すると、それは破線で隣に描かれます。厳密解がない場合、誤差の列は、少なくとも2,000ステップのRK4で求めた基準値と比較されます。これは、ここで選べるどの方法よりもはるかに正確です。y′ = y² で y(0) = 1 の場合のように、有限の時間で発散する方程式もあります。その場合、値が無限大になった時点で表は止まります。
よくある質問
- オイラー法はどのように働きますか?
- ステップごとに解を作っていきます。点 (xₙ, yₙ) から、微分方程式により傾き f(xₙ, yₙ) を計算し、その接線に沿って水平方向に距離 h だけ進みます。これにより yₙ₊₁ = yₙ + h·f(xₙ, yₙ) が得られます。新しい点が次のステップの出発点になります。
- オイラー法はどのくらい正確ですか?
- 1ステップあたりの局所誤差は h² に比例しますが、誤差は約 1/h 回のステップにわたって蓄積するため、大域誤差は h に比例します。ステップ幅を半分にすると誤差も半分になります。学習には適していますが、精度が必要な計算には向きません。
- 改良オイラー法とは何ですか?
- 改良オイラー法(ホイン法)は、まずオイラーの1ステップで区間の終点を予測し、その点での傾きと始点での傾きを平均します。この2次の補正により、大域誤差は h ではなく h² に比例するようになります。そのかわり、1ステップごとに傾きを2回計算します。
- ステップ幅はどのように選べばよいですか?
- 半分にしていく表を使います。答えの必要な桁が変わらなくなるまで h を小さくしてください。オイラー法は小さな h が必要ですが、RK4はずっと大きな h で同じ精度に達します。急速に減衰する成分をもつスティフ方程式では、どの方法でも小さな h が必要になることがあります。
- 二階の微分方程式や連立方程式も解けますか?
- いいえ。このツールは一つの一階方程式 dy/dx = f(x, y) だけを解きます。二階方程式は一階の連立系に書き換えられますが、このツールは連立方程式には対応していません。
- 解の途中で止まるのはなぜですか?
- 値が無限大になったためです。真の解が有限の時間で発散する場合、または不安定な方程式でステップが大きすぎる場合に起こります。表は最後の有限の行で終わり、メッセージにその近くのxの値が示されます。