next up previous contents
Next: 5.5.2 線形多段法 Up: 5.5.1 Runge-Kutta 法とその一族 Previous: 5.5.1.0.2 後退Euler法

5.5.1.0.3 埋め込み型の公式

E. Fehlberg (1970) は次の公式 RKF45 を提案した5.4
(5.4) \begin{displaymath}
x_{j+1} = x_j
+ h\left(
\frac{16}{135}k_1
+\frac{6656}{...
...28561}{56430}k_4
-\frac{9}{50}k_5
+\frac{2}{55}k_6
\right),
\end{displaymath}

ただし

\begin{eqnarray*}
k_1 &=& f(t_j,x_j) \\
k_2 &=& f\left(t_j+\frac14 h, x_j+\frac...
...65}k_3
+\frac{1859}{4104}k_4-\frac{11}{40}k_5
\right)
\right)
\end{eqnarray*}

これは $6$$5$ 次の公式であるが、それだけでなく
(5.5) \begin{displaymath}
x_{j+1}^\ast=x_j+h
\left(
\frac{25}{216}k_1+\frac{1408}{2565}k_3+\frac{2197}{4104}k_4-\frac15k_5
\right)
\end{displaymath}

という値を作ると、$x_{j+1}^\ast$$x(t_{j+1})$ に対して $4$ 次の近似 値となる。この次数の差を利用してステップ幅の自動調節をしよう、というア イディア。

いま (5.4), (5.5) の局所離散化誤差 をそれぞれ $\tau$, $\tau^\ast$ とおくと

(5.6) $\displaystyle \tau(t,h)$ $\textstyle =$ $\displaystyle C(t)h^5+O(h^6)$
  $\displaystyle \tau^\ast(t,h)$ $\textstyle =$ $\displaystyle C^\ast(t)h^4+O(h^5)$

である。あらかじめ許容誤差限界 $\eps_{\rm TOL}$ を決めておき、第 $j$ ステップでは

\begin{displaymath}
\Vert x_{j+1}^\ast-x_{j+1}\Vert\le \eps_{\rm TOL}
\end{displaymath}

が成り立ったとする。これは (5.6) より高次項を無視して

\begin{displaymath}
\Vert C^\ast(t_j)h^5\Vert\le \eps_{\rm TOL}
\end{displaymath}

が成り立つことを意味する。そのとき、次のステップにおけるステップ幅 $\hat h$ は、やはり

\begin{displaymath}
\Vert C^\ast(t_{j+1})\hat h^5\Vert= \eps_{\rm TOL}
\end{displaymath}

となるように選ぶべきであろう。ステップ幅が小さいときにはもっともである と思われる $C^\ast(t_j)=C^\ast(t_{j+1})$ を仮定して

\begin{displaymath}
\Vert C^\ast(t_{j})\hat h^5\Vert= \eps_{\rm TOL}.
\end{displaymath}

ところで近似的に

\begin{displaymath}
\Vert C^\ast(t_j)\Vert=\frac{\Vert x_{j+1}^\ast-x_{j+1}\Vert}{h^5}
\end{displaymath}

とみなせるから、これを代入して

\begin{displaymath}
\frac{\Vert x_{j+1}^\ast-x_{j+1}\Vert}{h^5} \hat h^5= \eps_{\rm TOL}.
\end{displaymath}

すなわち
(5.7) \begin{displaymath}
\hat h=h\sqrt[5]{\frac{\eps_{\rm TOL}}{\Vert x_{j+1}^\ast-x_{j+1}\Vert}}.
\end{displaymath}

すなわち第 $j+1$ ステップでは、(5.7) で定められ る ステップ幅 $\hat h$ で公式を適用すれば、 $\Vert x_{j+2}-x_{j+2}^\ast\Vert$ $\eps_{\rm TOL}$ の限界内にあるであろう、 と考える。実際には安全率を見込んで
(5.8) \begin{displaymath}
\hat h=\alpha h\sqrt[5]{\frac{\eps_{\rm TOL}}{\Vert x_{j+1}^\ast-x_{j+1}\Vert}}.
\end{displaymath}

とする。ここで $\alpha$$1$ より小さい正数で普通 $0.8\sim 0.9$ とす る。こうして、次のアルゴリズムが得られる。
許容限界 $\eps_{\rm TOL}$ を定めて、 (5.4), (5.5) により $x_{j+1}$, $x_{j+1}^\ast$ を求めよ。
次のステップ幅を(5.8) で求めて、計算を続行せよ。
このアイディアのキーは、 $s$$m$ 次公式に、$f$ の値を計算することな く $(m-1)$ 次公式を付随させるところにある。このような Runge-Kutta 型 公式を、$(m-1)$ 次公式が $m$ 次公式に埋め込まれているといい、埋め込み 型 Runge-Kutta 法と呼ぶ。


next up previous contents
Next: 5.5.2 線形多段法 Up: 5.5.1 Runge-Kutta 法とその一族 Previous: 5.5.1.0.2 後退Euler法
Masashi Katsurada
平成17年6月2日