数値解析 第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\,)$
です。赤い部分がベクトルになることだけが前回との違いです。