オイラー法計算ツール

オイラー法による近似

方程式と初期点を入力

dy/dx = f(x,y)の右辺f(x,y)だけを入力します。掛け算には*、累乗には^を使います。使用可能な関数:sin、cos、tan、exp、log、sqrt、abs。関数の引数は括弧で囲み、式内の小数点にはピリオドを使ってください。

初期のxに対するyが分かっている一次の初期値問題 dy/dx = f(x,y) を近似します。方程式の右辺、初期点、正の刻み幅、目標のxを入力してください。計算ツールは目標に向かって前進オイラー法を適用し、途中の値をすべて表示します。得られるのは数値的な近似であり、厳密解ではありません。

オイラー法の使い方

  1. 1

    微分方程式を入力

    `dy/dx = x + y` なら、f(x,y)には `x + y` と入力します。続けて分かっている初期のx座標とy座標を入力します。

  2. 2

    計算区間を設定

    正の刻み幅hと目標のxを入力します。初期のxより大きい方向にも小さい方向にも計算できます。

  3. 3

    近似値を確認

    目標のxにおけるyの近似値と、x、y、傾き、実際の刻み幅を示す最大200ステップの表を確認します。

このツールが計算するもの

初期点 (x₀, y₀) から、前進オイラー法の更新式 yₙ₊₁ = yₙ + hₙ f(xₙ, yₙ) と xₙ₊₁ = xₙ + hₙ を繰り返します。傾きは各ステップの開始点で評価します。入力する刻み幅は正の値で、1ステップの長さの上限です。目標が初期点の左にある場合は、ツールが進む方向に合わせて刻み幅に負の符号を付けます。残りの距離が指定した刻み幅より短ければ、最後のステップを短くして目標のxに到達します。

例えば dy/dx = x + y、y(0) = 1、h = 0.1、目標 x = 0.3 なら、次のように進みます。

ステップ x yの近似値 次のステップに使う傾き
0 0 1 1
1 0.1 1.1 1.2
2 0.2 1.22 1.42
3 0.3 1.362 終了

ツール内の表では、更新時に使った傾きを更新後の行に「直前の傾き」として表示します。このため、傾き1.42はステップ3の行に載ります。この例の厳密解は y = 2eˣ - x - 1 で、x = 0.3では約1.3997です。オイラー法の結果1.362がこれより小さいのは、各ステップの開始点での接線に沿って進むためです。滑らかな問題ではhを小さくすると誤差が減ることが多いものの、誤差は方程式と区間にも左右されます。このツールは誤差の上限を推定しません。

掛け算は 2*x、x*y、2*sin(x) のように明示してください。式にはx、y、括弧、+、-、*、/、^、定数 pi と e、関数 sin、cos、tan、exp、log、sqrt、abs を使えます。式内の小数は 0.5*y のようにピリオドで書きます。別々の数値入力欄では、言語設定の小数点記号または誤解のないピリオドを使用でき、桁区切りは使いません。

オイラー法とその更新式についてはOpenStax Calculus Volume 2で説明されています。LibreTextsの数値計算の章では、刻み幅が近似誤差にどう影響するかを解説しています。

よくある質問

入力する刻み幅は正の値にしてください。目標のxが初期のxより小さい場合は、ツールが自動で負の方向へ進みます。表には実際に使った符号付きの刻み幅が表示されます。

最後の1ステップを残りの距離に合わせて短くします。例えばx = 0からx = 1までh = 0.4で進む場合、実際の刻み幅は0.4、0.4、0.2となり、x = 1で終わります。

いいえ。前進オイラー法は各点の接線の傾きに沿って進むため、近似誤差が蓄積します。表示されるのは目標のxでの推定値であり、記号的な厳密解や誤差の保証ではありません。

初期のyが1つ分かっており、dy/dx = f(x,y) と明示的に書ける一次方程式に対応します。高階の方程式、連立方程式、陰的に解く必要のある方程式、指定した経路上で式が定義されない方程式には対応しません。

表を読みやすく保ち、ブラウザーで大量の計算を行わないためです。200ステップを超える場合は、刻み幅を大きくするか目標を初期点に近づけてください。

はい。CSVには丸める前のxとyの数値、各行に到達するために使った傾き、その行の符号付き刻み幅が含まれます。画面上の表では読みやすいよう数値を丸めて表示します。

計算はブラウザー内で行われます。ステップ形式では入力値をこのタブだけに保存し、URLには式や値ではなくランダムなジョブIDを入れます。

関連ツール

このツールは他の言語でも利用できます