線型多段法 (linear multistep method)は、常微分方程式の数値解法 の一つである[ 1] [ 2] 。
常微分方程式 の数値解法では、初期値から始めて微小な刻み幅の分だけ時間を進め、次の点での解を求める。このステップを繰り返せば解曲線 が得られる。
過去の s {\displaystyle s} 個の時刻における値を用いて次の値を算出する方法を、 s {\displaystyle s} 段法または s {\displaystyle s} 次の多段法という。特に s {\displaystyle s} が1の場合は1段法または単段法と呼ばれる[ 1] [ 2] 。
1段法(single-step method)の例として、オイラー法 やルンゲ=クッタ法 が挙げられる[ 1] [ 2] 。オイラー法 では、過去の1時刻での値のみを用いて最新の値を決定する。ルンゲ=クッタ法 では、間にある複数のステップ(例えば中点)の値を用いることで良い近似値を得ているが、2番目のステップの値を得る前に過去の情報を全て捨てている。
多段法では、過去の情報を捨てずに保持して用いることで有効な値を得る。すなわち、多段法では過去の複数の時刻での値を用いる。線型多段法の場合は、それらの線型結合 が用いられる。
常微分方程式 とその初期値問題 を次のように定める。
y ′ = f ( t , y ) , y ( t 0 ) = y 0 . {\displaystyle y'=f(t,y),\quad y(t_{0})=y_{0}.} 離散的な時間 t i {\displaystyle t_{i}} における y ( t ) {\displaystyle y(t)} の値は次のようになる。
t i = t 0 + i h {\displaystyle t_{i}=t_{0}+ih} y i = y ( t i ) = y ( t 0 + i h ) {\displaystyle y_{i}=y(t_{i})=y(t_{0}+ih)} y i ′ = f ( t i , y i ) {\displaystyle y_{i}'=f(t_{i},y_{i})} ここで h {\displaystyle h} は時間の刻み幅であり、 Δ t {\displaystyle \Delta t} とも書かれる。
線型多段法では、求める y {\displaystyle y} の値を計算するために y i {\displaystyle y_{i}} と y i ′ {\displaystyle y_{i}'} の線型結合を用いる。 s {\displaystyle s} 段法では次の値を計算するため、過去の s {\displaystyle s} 個の値 y n , … , y n + s − 1 {\displaystyle y_{n},\ldots ,y_{n+s-1}} を用いる。そのため、求める最新の値は y n + s {\displaystyle y_{n+s}} となる。
線型多段法は次の形で表される。
y n + s + a s − 1 y n + s − 1 + a s − 2 y n + s − 2 + ⋯ + a 0 y n = h ( b s f ( t n + s , y n + s ) + b s − 1 f ( t n + s − 1 , y n + s − 1 ) + ⋯ + b 0 f ( t n , y n ) ) , {\displaystyle {\begin{aligned}&y_{n+s}+a_{s-1}y_{n+s-1}+a_{s-2}y_{n+s-2}+\cdots +a_{0}y_{n}\\&\qquad {}=h{\bigl (}b_{s}f(t_{n+s},y_{n+s})+b_{s-1}f(t_{n+s-1},y_{n+s-1})+\cdots +b_{0}f(t_{n},y_{n}){\bigr )},\end{aligned}}} 2 s + 1 {\displaystyle 2s+1} 個の係数 a 0 , … , a s − 1 {\displaystyle a_{0},\ldots ,a_{s-1}} と b 0 , … , b s {\displaystyle b_{0},\ldots ,b_{s}} がこの方法を定める。各係数は使用者が決めるが、多くの係数がゼロとされることがよくある。 y ( t ) {\displaystyle y(t)} が n {\displaystyle n} 次の多項式 であれば、使用者はこれを厳密に補間 するように係数を選ぶのが一般的である。
上記のように、 s {\displaystyle s} 段法では過去の s {\displaystyle s} 個の時刻における値が必要となる。初期値として1時刻の値のみが与えられている場合は、1段法を s − 1 {\displaystyle s-1} 回実行するなどして必要な値を用意しておく。
b s = 0 {\displaystyle b_{s}=0} であればこの方法は陽公式 と呼ばれる。陽公式は y n + s {\displaystyle y_{n+s}} を直接算出できる。
b s {\displaystyle b_{s}} の値がゼロでなければ、 y n + s {\displaystyle y_{n+s}} の値は f ( t n + s , y n + s ) {\displaystyle f(t_{n+s},y_{n+s})} の値に依存する。この方法は陰公式 と呼ばれ、 y n + s {\displaystyle y_{n+s}} を求めるための式があらかじめ解かれていなければならない。陰公式を解くためにはニュートン法 のような反復法 がよく用いられる。
陽公式は y n + s {\displaystyle y_{n+s}} の値を「予測」するために用いられることがある。陽公式から求めた y n + s {\displaystyle y_{n+s}} の値(予測子)を陰公式の f ( t n + s , y n + s ) {\displaystyle f(t_{n+s},y_{n+s})} に代入すれば、より正確な y n + s {\displaystyle y_{n+s}} に「修正」できる。これが予測子修正子法 である[ 1] [ 2] 。
出発値を一定の誤差以内に選べば m {\displaystyle m} 次の安定な線形多段法は m {\displaystyle m} 次収束することが知られている[ 1] [ 3] (ただし m {\displaystyle m} 次のルンゲ=クッタ法 は出発値に関係なく m {\displaystyle m} 次収束する[ 1] )。
m {\displaystyle m} 次の安定な N {\displaystyle N} 次多段法において、 N {\displaystyle N} が偶数の時 m ≤ N + 2 {\displaystyle m\leq N+2} 、 N {\displaystyle N} が奇数の時 m ≤ N + 1 {\displaystyle m\leq N+1} である[ 1] [ 4] [ 5] 。よって N + 2 {\displaystyle N+2} 次より高次の安定な線形 N {\displaystyle N} 段法は存在しない[ 1] 。
2次のアダムス・バッシュフォース(Adams-Bashforth)法[ 編集 ] これは簡単な線型2段法の一つである。
y n + 2 = y n + 1 + 3 2 h f ( t n + 1 , y n + 1 ) − 1 2 h f ( t n , y n ) . {\displaystyle y_{n+2}=y_{n+1}+{\tfrac {3}{2}}hf(t_{n+1},y_{n+1})-{\tfrac {1}{2}}hf(t_{n},y_{n}).} この方法では2つの値 y n {\displaystyle y_{n}} と y n + 1 {\displaystyle y_{n+1}} を用いて y n + 2 {\displaystyle y_{n+2}} を計算する。しかし初期値問題 では y 0 {\displaystyle y_{0}} だけが与えられていて、 y 1 {\displaystyle y_{1}} はこの公式では求められない。そこで計算の開始にあたって y 1 {\displaystyle y_{1}} だけは、別の方法たとえば2次のルンゲクッタ法 などで求める必要がある。
^ a b c d e f g h 山本哲朗『数値解析入門』(増訂版)サイエンス社 〈サイエンスライブラリ 現代数学への入門 14〉、2003年6月。ISBN 4-7819-1038-6 。 ^ a b c d 森正武 『数値解析』共立出版、2002年2月。ISBN 4-320-01701-3 。 ^ Ortega, J. M. (1990). Numerical analysis: a second course. Society for Industrial and Applied Mathematics. ^ Dahlquist, Germund (1956), "Convergence and stability in the numerical integration of ordinary differential equations", Mathematica Scandinavica, 4: 33--53. ^ 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 .