本文へスキップ

オイラー法計算ツール

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 に比例します。

ステップ表

nxₙyₙk1厳密解 y(xₙ)誤差
001110
10.11.11.21.1103418-0.0103
20.21.221.421.2428055-0.0228
30.31.3621.6621.3997176-0.0377
40.41.52821.92821.5836494-0.0554
50.51.721022.221021.7974425-0.0764
60.61.9431222.5431222.0442376-0.101
70.72.19743422.89743422.3275054-0.13
80.82.48717763.28717762.6510819-0.164
90.92.81589543.71589543.0192062-0.203
1013.18748493.4365637-0.249

同じステップ幅での3つの方法

方法終点の y誤差
オイラー法3.1874849-0.249
改良オイラー法(ホイン法)3.4281617-0.0084
ルンゲ=クッタ法4次3.4365595-0.00000417

ステップ幅を半分にする(オイラー法)

nh終点の y誤差
100.13.1874849-0.249
200.053.3065954-0.13
400.0253.3701277-0.0664
800.01253.4029699-0.0336

オイラー法では h を半分にすると誤差はおよそ半分に、ホイン法では4分の1に、RK4では16分の1になります。

グラフ

  • 厳密解
  • オイラー法
dy/dx = f(x, y) の方向場と、x = 0 から x = 1 までのオイラー法の解00.20.40.60.81123xy

オイラー法計算ツールの使い方

  1. 1. 方程式を入力します。 dy/dx = f(x, y) の右辺を、x と y を使って書きます。例:x + y、y*(1 - y)、sin(x) - y。
  2. 2. 初期条件と終了点を入力します。 x₀、y₀ = y(x₀)、そして解を求めるxの値を入力します。終了点はx₀より左にあってもかまいません。
  3. 3. ステップを選びます。 ステップ幅hを入力するか、ステップ数nに切り替えます。hで区間を等分できない場合、ツールが値を調整してその旨を表示します。
  4. 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でのオイラー法の最初のステップは次のとおりです:

nxₙyₙ傾き f(xₙ, yₙ)厳密解 y(xₙ)
00111
10.11.11.21.1103418
20.21.221.421.2428055
30.31.3621.6621.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の値が示されます。

関連ツール

数学の計算ツールのその他のツール