数値解析 第8回 (5) ルンゲ・クッタ法、クッタの 3/8 公式

次のアイデア

 $(9.9)$ 式の積分を台形公式風に近似したのがホイン法でした。 では、シンプソンの公式 風に区間の中点での関数値も使い、 \begin{align} \require{color} \int_{x_n}^{x_{n+1}} & f(x, y(x))dx \\ & \mbox{≒ } \frac{h}{6}\Bigg\{f(x_n,\,\textcolor{red}{y(x_n)}) + 4 f\left(x_{n}+\frac{h}{2},\, \textcolor{red}{y\left(x_{n}+\frac{h}{2}\right)}\right) + f(x_{n+1},\,\textcolor{red}{y(x_{n+1})})\Bigg\} \\ \end{align} と考えよう、というのが次のアイデアです。
 赤い部分が未知なので、再びここをオイラー法の近似式などで近似しなければなりませんが、単純な式では上手くいきませんでした。 それでもあきらめずに、テイラー展開の高次の項まで徹底的に書き出して作られたのがルンゲ・クッタ法です。

決定版:ルンゲ・クッタ法

公式 $(9.16)$  $$\begin{array}{ll} f = f(x_n,y_n), \\ \hat y = y_n + \frac{h}{2} \times f, \quad &\hat f = f\left(x_n+\frac{h}{2},\, \hat y\right), \\ \tilde y = y_n + \frac{h}{2} \times \hat f, &\tilde f = f\left(x_n+\frac{h}{2},\, \tilde y\right), \\ \bar y = y_n + h \times \tilde f, &\bar f = f\left(x_n+h,\, \bar y\right) \\ \end{array} $$ として
$\dps{y_{n+1}=y_n + \frac{h}{6} \times \left(f+2\hat f+2\tilde f+\bar f\right)}$   $(\,n=0,1,\cdots\,)$
 上述のアイデアの $\dps{4 f(\cdots)}$ のところを $2\hat f+2\tilde f$ で、 $f(x_{n+1},y(x_{n+1}))$ のところを $\bar f$ で近似している感じの公式です。 なお、記号の読み方は、$\hat{f}$ は「$f$ ハット」、$\tilde{f}$ は「$f$ チルダ」、$\bar{f}$ は「$f$ バー」です。

※ 式は、この順番で計算すれば良いようにできています。

Th.5 ルンゲ・クッタ法の誤差は刻み幅 $h$ の 4 次オーダー $O(h^4)$ である。
 証明はプリントを見てください。ものすごく複雑です:

クッタの 3/8 公式

 ルンゲ・クッタ型公式にはいくつもの variation があり、 「シンプソンの 3/8 公式」に似た形の 「クッタの 3/8 公式」というものもあります。
クッタの 3/8 公式  $$\begin{array}{ll} f = f(x_n,y_n), \\ \hat y = y_n + \frac{h}{3} \times f, &\hat f = f\left(x_n+\frac{h}{3},\, \hat y\right), \\ \tilde y = y_n - \frac{h}{3}\times f + h \times \hat f, &\tilde f = f\left(x_n+\frac{2h}{3},\, \tilde y\right), \\ \bar y = y_n + h \times (f - \hat f + \tilde f), \quad &\bar f = f\left(x_n+h,\, \bar y\right) \\ \end{array} $$ として
$\dps{y_{n+1}=y_n + \frac{h}{8} \times \left(f+3\hat f+3\tilde f+\bar f\right)}$   $(\,n=0,1,\cdots\,)$