三井 斌友:微分方程式の数値解法 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円(税別)
サイズ
ISBN4-00-010512-4
備 考3分冊合計の金額
NDC

まりんきょ学問所数学の部屋数学の本 > 三井 斌友:微分方程式の数値解法 I


MARUYAMA Satosi