next up previous
: 修正オイラー法の誤差 : 常微分方程式の数値解法 2 : 修正 Euler 法

連立常微分方程式

一般には(多変数、高階の)常微分方程式は $m$ 元連立1階常微分方程式

\begin{displaymath}
\frac{d y^i(x)}{dx} = f^i (x,y^1,y^2,\ldots,y^m), \qquad i=1,\ldots, m
\end{displaymath} (6)

になる が、その場合も $y,f$ をベクトル(配列)の形にすれば良い。 この場合修正オイラー法の手続きは次のようになる。パラメーター $x_n=a+nh$ に対して、求めるべき値の $y^i(x_n)$ の近似値を $y^i_n$ で表す。

ステップ 0

$x,y^i$ の組が与えられた時、

\begin{displaymath}
f^i (x,y^1,y^2,\ldots,y^m)
\end{displaymath} (7)

$i=1,\cdots m$ まで1次元配列として出すサブルーチンを作成する(これは問 題ごとに異なる)。

ステップ 1


\begin{displaymath}
\tilde{y}^{i} = y^{i}_n + h f^i (x_n,y^{i}_n)
\end{displaymath} (8)

$i=1,\cdots m$ まで1次元配列として出す。

ステップ 2


\begin{displaymath}
y^{i}_{n+1} = y^{i}_n
+ \frac{h}{2} [ f^{i}(x_n,y^{i}_n)+ f^{i} (x_{n+1},\tilde{y^{i}})]
\end{displaymath} (9)

で、次のステップの $y^i$ を出す。

ステップ 3

$x_{n+1}$ と、求めた $y^{i}_{n+1}$ を 新たにステップ 1,2 での $x_n,y^{i}_n$ に置き換える。すると次に $y^{i}_{n+2}$ が求まる。以下順次これを繰り返す。



Kiyohide Nomura 平成17年6月6日