数値解析 第9回 (2) 連立1階微分方程式
状況設定
- $x$ : 変数
- $y=y(x)$ : $x$ の、未知の $N$ 次元ベクトル値関数
- $f(x,\vvv)$ : $x$ と $N$ 次元ベクトル $\vvv$ の関数
( プログラミング言語のライブラリで計算できるもの )
とするとき、次の形の微分方程式の数値解を求めましょう :
$$
y'(x) = f(x, y(x)),\qquad
y(x_0) = y_0
$$
たとえば $N=2$ で
$\dps{f\left(x,
\left(
\begin{array}{c}
v_1 \\ v_2 \\
\end{array}
\right)
\right)
=
\left(
\begin{array}{c}
x+v_1+v_2 \\ x\times v_1\times v_2 \\
\end{array}
\right)
}$
であれば
$\dps{
\left\{
\begin{array}{l}
v_1' = x + v_1 + v_2 \\
v_2' = x \times v_1 \times v_2 \\
\end{array}
\right.
}$
という連立1階微分方程式を表します。
解法
実は「見た目」は前回と全く同じで、
- オイラー法
- ホイン法
- ルンゲ・クッタ法
- クッタの 3/8 公式
等が使えます。
たとえばオイラー法は
公式 $(9.10)$
$\require{color}
\dps{\textcolor{red}{y_{n+1}}
=
\textcolor{red}{y_n}
+ h \times \textcolor{red}{f}(x_n,\textcolor{red}{y_n})}$
$(\,n=0,1,\cdots\,)$
です。赤い部分がベクトルになることだけが前回との違いです。