線型多段法

線型多段法(linear multistep method)は、常微分方程式の数値解法の一つである[1][2]

概要[編集]

常微分方程式の数値解法では、初期値から始めて微小な刻み幅の分だけ時間を進め、次の点での解を求める。このステップを繰り返せば解曲線が得られる。

過去の個の時刻における値を用いて次の値を算出する方法を、段法または次の多段法という。特にが1の場合は1段法または単段法と呼ばれる[1][2]

1段法(single-step method)の例として、オイラー法ルンゲ=クッタ法が挙げられる[1][2]オイラー法では、過去の1時刻での値のみを用いて最新の値を決定する。ルンゲ=クッタ法では、間にある複数のステップ(例えば中点)の値を用いることで良い近似値を得ているが、2番目のステップの値を得る前に過去の情報を全て捨てている。

多段法では、過去の情報を捨てずに保持して用いることで有効な値を得る。すなわち、多段法では過去の複数の時刻での値を用いる。線型多段法の場合は、それらの線型結合が用いられる。

定義[編集]

常微分方程式とその初期値問題を次のように定める。

離散的な時間におけるの値は次のようになる。

ここでは時間の刻み幅であり、とも書かれる。

線型多段法では、求めるの値を計算するためにの線型結合を用いる。段法では次の値を計算するため、過去の個の値を用いる。そのため、求める最新の値はとなる。

線型多段法は次の形で表される。

個の係数がこの方法を定める。各係数は使用者が決めるが、多くの係数がゼロとされることがよくある。次の多項式であれば、使用者はこれを厳密に補間するように係数を選ぶのが一般的である。

特徴[編集]

準備[編集]

上記のように、段法では過去の個の時刻における値が必要となる。初期値として1時刻の値のみが与えられている場合は、1段法を回実行するなどして必要な値を用意しておく。

陽公式と陰公式[編集]

であればこの方法は陽公式と呼ばれる。陽公式はを直接算出できる。

の値がゼロでなければ、の値はの値に依存する。この方法は陰公式と呼ばれ、を求めるための式があらかじめ解かれていなければならない。陰公式を解くためにはニュートン法のような反復法がよく用いられる。

陽公式はの値を「予測」するために用いられることがある。陽公式から求めたの値(予測子)を陰公式のに代入すれば、より正確なに「修正」できる。これが予測子修正子法である[1][2]

収束性[編集]

出発値を一定の誤差以内に選べば次の安定な線形多段法は次収束することが知られている[1][3](ただし次のルンゲ=クッタ法は出発値に関係なく次収束する[1])。

Dahlquist barrier[編集]

次の安定な次多段法において、が偶数の時が偶数の時である[1][4][5]。よって次より高次の安定な線形段法は存在しない[1]

[編集]

2次のアダムス・バッシュフォース(Adams-Bashforth)法[編集]

これは簡単な線型2段法の一つである。

この方法では2つの値を用いてを計算する。しかし初期値問題ではだけが与えられていて、はこの公式では求められない。そこで計算の開始にあたってだけは、別の方法たとえば2次のルンゲクッタ法などで求める必要がある。

脚注[編集]

  1. ^ a b c d e f g h 山本哲朗『数値解析入門』(増訂版)サイエンス社〈サイエンスライブラリ 現代数学への入門 14〉、2003年6月。ISBN 4-7819-1038-6 
  2. ^ a b c d 森正武『数値解析』共立出版、2002年2月。ISBN 4-320-01701-3 
  3. ^ Ortega, J. M. (1990). Numerical analysis: a second course. Society for Industrial and Applied Mathematics.
  4. ^ Dahlquist, Germund (1956), "Convergence and stability in the numerical integration of ordinary differential equations", Mathematica Scandinavica, 4: 33--53.
  5. ^ Hairer, Ernst; Nørsett, Syvert Paul; Wanner, Gerhard (1993), Solving ordinary differential equations I: Nonstiff problems (2nd ed.), Berlin: Springer Verlag, ISBN 978-3-540-56670-0.

外部リンク[編集]