ここでは1階正規系の常微分方程式の初期値問題
(2.7) | ||
(2.8) |
このうち実用性があるのは Runge-Kutta法である。 Euler法は効率が良くないが (普通にやると精度が低く、 精度を上げようとすると必要な計算量が爆上がりになる) 、 原理が理解しやすいため説明されることが多い。 一方、Runge-Kutta 法は原理が分かりにくい。 ここでは、Euler法を効率が良くなるように改良したものである、 ということを理解してもらえれば良い。
について、有限の範囲 で解くことにする (, は適当に定めた実数である)。
以下に提示するサンプル・プログラム (euler.c, euler.py, runge-kutta.c) は、 Malthus の方程式で , , の場合を、 について の範囲で解くことにしている。つまり
() | (2.9) | |
(2.10) |
注: 数値計算をする場合に得られるのは近似解であるが、 そのときもとの微分方程式の解のことを(誤解のないように) 厳密解 (exact solution) と呼んで区別することがある 7。
これは簡単で特殊な問題であるが、 ここで説明する計算手順自体はより一般の問題にそのまま適用できる。
常微分方程式の数値解法の理論的なことは、 まずは桂田 [2] を見よ。