📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の2版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
オイラー法は、常微分方程式の数値解法における最も基本的な手法の1つである。<br> | |||
<br> | |||
オイラー法の考え方は、微分方程式を差分方程式で近似することである。<br> | |||
与えられた微分方程式 <math>\dfrac{dy}{dx} = f(x, y)</math> において、各点での関数の傾き <math>f(x, y)</math> を用いて、次の点での関数値を予測する。<br> | |||
<br> | |||
<math>y(n + 1) = y(n) + h \times f(x(n), y(n))</math><br> | |||
ここで、hは刻み幅、nは現在のステップ数を表す。<br> | |||
<br> | |||
オイラー法の特徴として、実装が簡単で直感的に理解しやすいというメリットがある。<br> | |||
<br> | |||
しかし、精度の面では課題があり、刻み幅hに比例する大きさの局所打ち切り誤差が生じる。<br> | |||
また、各ステップでの誤差が蓄積されていくため、長い区間での計算には向いていない。<br> | |||
<br> | |||
より高精度な計算が必要な場合は、ルンゲ・クッタ法等の改良された方法を使用することが推奨される。<br> | |||
<br><br> | <br><br> | ||
| 7行目: | 20行目: | ||
<br> | <br> | ||
これは、<math>\dfrac{df(x)}{dx} = \dfrac{f(x + h) - f(x)}{h}</math> に基づいている。<br> | これは、<math>\dfrac{df(x)}{dx} = \dfrac{f(x + h) - f(x)}{h}</math> に基づいている。<br> | ||
<br> | |||
<math>\dfrac{dy}{dx_i} = f(x_i, y_i)</math> より、<br> | |||
<math>f(x_i, y_i) \approx \dfrac{y_{i+1} - y_i}{h} \qquad (1)</math><br> | |||
<br> | |||
上記の(1)式を変形して、<math>y_{i+1} = y_i + h f(x_i, y_i)</math> となる。<br> | |||
<br> | <br> | ||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
| 205行目: | 223行目: | ||
<math>\dfrac{df(x)}{dx} = \dfrac{f(x) - f(x - h)}{h}</math> に基づいている。<br> | <math>\dfrac{df(x)}{dx} = \dfrac{f(x) - f(x - h)}{h}</math> に基づいている。<br> | ||
<br> | <br> | ||
<math>\dfrac{dy}{dx_i} = f(x_i, y_i)</math> より、<br> | |||
<math>f(x_i, y_i) \approx \dfrac{y_i - y_{i-1}}{h} \qquad (1)</math><br> | |||
<br> | |||
上記の(1)式を変形して、<math>y_{i+1} = y_i + h f(x_{i+1}, y_{i+1})</math> となる。<br> | |||
<br> | |||
後退差分法の式では、左辺と右辺の両方に <math>y_{i+1}</math> が含まれているため、今求まっている <math>f(x, y)</math> から単純な計算でを求めることはできない。<br> | |||
ただし、<math>f(x, y)</math> に具体的な関数を代入することにより、上記の方程式を代数的あるいは数値的に解くことで <math>y_{i+1}</math> を求めることできる。<br> | |||
<br> | |||
例えば、<math>f(x, y) = x + y</math> の場合の後退差分法の式は <math>y_{i+1} = \frac{y_i + h (x_{i} + h)}{(1 - h)}</math> となるため、<br> | |||
現在の <math>y_i, x_i</math> のみから計算可能である。<br> | |||
<br> | |||
後退差分法では、現在の値を使用して次のステップを1回で計算する。<br> | |||
ニュートン法を用いない後退差分法は、計算が単純で高速となり、メモリ使用量が少ない。<br> | ニュートン法を用いない後退差分法は、計算が単純で高速となり、メモリ使用量が少ない。<br> | ||
ただし、ニュートン法を用いる後退差分法と比較して、精度は低く安定性も劣る。<br> | ただし、ニュートン法を用いる後退差分法と比較して、精度は低く安定性も劣る。<br> | ||