logo

暗示的ルンゲ=クッタ法 📂数値解析

暗示的ルンゲ=クッタ法

概要

常微分方程式ソルバーのルンゲ=クッタ法を紹介する。よく使われる4次ルンゲ=クッタ法 RK4は、明示的ルンゲ=クッタ法の一種だ。この文書では、暗示的ルンゲ=クッタ法について説明する。

ビルドアップ1

$$ y^{\prime} = f(t,y),\quad t \ge t_{0},\quad y(t_{0}) = y_{0} $$

上に与えられた常微分方程式を考えよう。$y$は$t$の関数であり、$^{\prime}$は$t$に対する微分を意味する。$y_{n} = y(t_{n})$のように示された場合、明示的ルンゲ=クッタ法は、与えられた$y_{n}$に対して、$y_{n+1}$を次のように近似する方法である。

$$ \begin{equation} y_{n+1} = y_{n} + h\sum_{j=1}^{\nu} b_{j} f(t_{n} + c_{j}h,y(t_{n} + c_{j}h)),\quad n=0,1,2,\cdots \end{equation} $$

このとき、

$$ \begin{align*} \xi_{1} &= y_{n} \\ \xi_{2} &= y_{n} + ha_{2,1}f(t_{n}, \xi_{1}) \\ \xi_{3} &= y_{n} + ha_{3,1}f(t_{n}, \xi_{1}) + ha_{3,2}f(t_{n} + c_{2}h, \xi_{2}) \\ \vdots & \\ \xi_{\nu} &= y_{n} + h\sum_{i=1}^{\nu-1}a_{\nu, i}f(t_{n} + c_{i}h, \xi_{i}) \end{align*} $$

上の数式に従って、各$\xi_{j}$は、$\xi_{j-1}$を知っていれば計算できるし、明示的メソッドでは、$\xi_{1} = y_{n}$になるように設定されているため、$\xi_{1}$は既知の値だ。つまり、$\xi_{2}$から$\xi_{\nu}$まで順次計算できるように設定されているのが、明示的メソッドである。

暗示的メソッドでは、各$\xi_{j}$を計算するために、すべての$\xi_{i}$が必要になるように設定する。つまり、$\xi_{j}$に関する連立方程式を解かなければ、$y_{n+1}$を計算できない。

定義

暗示的ルンゲ=クッタ法は、与えられた$y_{n}$に対して$y_{n+1}$を次のように近似する方法である。

$$ y_{n+1} = y_{n} + h\sum_{j=1}^{\nu} b_{j} f(t_{n} + c_{j}h, \xi_{j}),\quad n=0,1,2,\dots $$

このとき、

$$ \xi_{j} = y_{n} + h\sum_{i=1}^{\nu}a_{j,i}f(t_{n} + c_{i}h, \xi_{i}),\quad j=1,\dots,\nu $$

このとき、行列$A = [a_{j,i}]$をルンゲ=クッタ行列と呼ぶ。また、下の$\mathbf{b}$と$\mathbf{c}$をそれぞれRKウェイトRKノードと呼ぶ。

$$ \mathbf{b} = \begin{bmatrix} b_{1} \\ b_{2} \\ \vdots \\ b_{\nu} \end{bmatrix} \quad \text{and} \quad \mathbf{c} = \begin{bmatrix} c_{1} \\ c_{2} \\ \vdots \\ c_{\nu} \end{bmatrix} $$

このとき、

$$ c_{j} = \sum\limits_{i=1}^{\nu} a_{j, i},\quad j=1,2,\dots,\nu $$

さらに、式$(1)$が**$\nu$ステージ**を持つと言い、このような方法を$\nu$ステージ(または$\nu$階)ルンゲ=クッタ法と呼ぶ。

説明

明示的メソッドでは行列$A = [a_{j,i}]$が下三角行列だったのに対し、暗示的メソッドでは$A$は任意の行列である。

RKメソッドでは、係数$a_{j,i}$、$b_{j}$、$c_{j}$は見つけるのではなく、選んで使うものだ。係数は$\begin{array}{c|c} \mathbf{c} & A \\ \hline & \mathbf{b}^{t} \end{array}$のように記され、これをRKテーブルと呼ぶ。

明示的メソッドと比べて、解くのにはるかに多くの時間がかかるのは当然だ。しかし、暗示的メソッドの長所は速さではなく、解の安定性にある。明示的メソッドの短所は解の不安定性であり、それに対する代替として暗示的メソッドが使われる。

参照


  1. Arieh Iserles, A First Course in the Numerical Analysis of Differential Equations (2nd Edition, 2009), p41-42 ↩︎