線型多段法 (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 .