三井 斌友:微分方程式の数値解法 I |
作成日:2013-02-12 最終更新日: |
常微分方程式の数値解法である。
この著者は「線形」ではなく「線型」を、「関数」ではなく「函数」を用いているのでそれに従う。 常微分方程式の初期値問題を考える。以下、同書の記法に沿いつつ、 他の文献も参照しながらまとめていく。
`dy/(dx) = f(x, y) (a < x < b), y(a) = y_0`
この微分方程式を解くもっとも簡便な方法はオイラー法 (Euler's method) である。 これは、分割数である大きな自然数 `N` を決め、 `N` によって定まるステップ数 `h` ( `h = (b-a)/N` ) から `x_n = a + nh` に対する `y(x_n)` の近似値 `y_n` を次の式で与える方法である。
`y_(n+1) = y_n + h f(x_n, y_n)`
言い換えれば、`y_(n+1)` を `y_n` と `x_n` の値によって決めているが、
それより前に得た `y_i` や `x_i` の値も使えばいいのではないかという考えがある。
一つの案として、適当な係数 `alpha_i` や `beta_i` を使って、
`alpha_0 y_n + alpha_1 y_(n+1) + cdots + alpha_k y_(n+k) =
h(beta_0 f_n + beta_1 f_(n+1) + cdots + beta_(k-1) f_(n+k-1))`
の式から `y_(n+k)` を決めるという方法が考えられる。
ここで、`f_j = f(x_j, y_j)` という省略記法を使った。以下も同様。
上記式の右辺に項を一つ付け加えることもできる。
`alpha_0 y_n + alpha_1 y_(n+1) + cdots + alpha_k y_(n+k) =
h(beta_0 f_n + beta_1 f_(n+1) + cdots + beta_(k-1) f_(n+k-1) + beta_k f_(n+k))`
こちらの式は、単純な式変形では `y_(n+k)` を直接求めることはできない。
なぜなら、`f_(n+k) = f(x_(n+k), y_(n+k))` であり、 `y_(n+k)` を右辺にも含んでいるからである。
両者をまとめて、
`sum_(j=0)^k alpha_j y_(n+j) = h sum_(j=0)^k beta_j f_(n+j)`
とかける。これを線型多段法または線型多段階法という。
`k` を強調するときは、`k` 段 あるいは `k` 次の線型多段階法ともいう。
`k = 1` のときは 1 段法、1段階法、単段法、単段階法などと呼ばれる。なお、以下 `alpha_k = 1`
としても一般性を失わない。
`k = 2` のとき、すなわち二次の解法を二種類紹介する。 二次のアダムス・バッシュフォース法(two-step Adams–Bashforth method)は次の通りである。
`y_(n+2) = y_(n+1) + 3/2 h f_(n+1) - 1/2 h f_n`
また、二次のアダムス・ムルトン法あるいはアダムス・モルトン法(two-step Adams-Moulton method) は次の通りである。
`y_(n+2) = y_(n+1) + 5/12 h f_(n+2) - 2/3 h f_(n+1) -1/12 h f_n`
どちらも、一般の `k` に関する公式は同書を見てほしい。 そのほか、後退微分公式(backward differentiation method, BDF)や予測子・修正子法もある。ここでは省略する。
各種の領域をハッチの濃さで表した図が、いい味を出している。
数式記法には ASCIIMathML 形式を、 数式表示には MathJax を使っている。
発行日 | 1993 年 5月 14日 |
発行元 | 岩波書店 |
定 価 | 3495円(税別) |
サイズ | |
ISBN | 4-00-010512-4 |
備 考 | 3分冊合計の金額 |
NDC |
まりんきょ学問所 > 数学の部屋 > 数学の本 > 三井 斌友:微分方程式の数値解法 I