logo

微分方程式の解法としてのローゼンブロック法 📂数値解析

微分方程式の解法としてのローゼンブロック法

メソッド 1

常微分方程式 $\dot{y} = f(y)$ が与えられているとき、次のような更新則を $s$段階$s$-stage ローゼンブロック法Rosenbrock methodと呼ぶ。 $$ \begin{align*} k_{i} =& h f \left( y_{n} + \sum_{j=1}^{i-1} \alpha_{ij} k_{j} \right) + h J \sum_{j=1}^{i} \gamma_{ij} k_{j} , & i = 1 , \cdots , s \\ y_{n+1} =& y_{n} + \sum_{i=1}^{s} b_{i} k_{i} \end{align*} $$ ここで $J$ は $y_{n}$ における $f$ の ヤコビアンである。$\alpha_{ij}$、$\gamma_{ij}$、$b_{i}$ はあらかじめ定められた係数である。

説明

簡単に言えば、線形化のアイデアを導入した暗黙的ルンゲ=クッタ法である。通常、常微分方程式を解くために広く用いられるRK4とは異なり、主に剛性問題を解くために用いられる2

暗黙的ルンゲ=クッタ法: $$ \begin{align*} \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 \\ 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 \end{align*} $$

線形化というアイデアはヤコビアン $J$ から容易に確認できるので、$s = 1 , 2$ の例を見て暗黙的手法であるという点を掴もう。

ROS1(1段階ローゼンブロック法)

$$ \begin{align*} k_{1} =& \left( I - \gamma h J \right)^{-1} h f \left( y_{n} \right) \\ y_{n+1} =& y_{n} + k_{1} \end{align*} $$

$k_{i}$ の定義によれば両辺に $k_{i}$ が存在するため、行列方程式の解法が伴う。方程式の数が増えるほどこれに要するコストが増大するため、ローゼンブロック法は本質的に次元が大きい場合には適していないと推測できる。

ROS2(2段階ローゼンブロック法)

$$ \begin{align*} k_{1} =& \left( I - \gamma h J \right)^{-1} h f \left( y_{n} \right) \\ k_{2} =& \left( I - \gamma h J \right)^{-1} h f \left( y_{n} + k_{1} \right) \\ y_{n+1} =& y_{n} + b_{1} k_{1} + b_{2} k_{2} \end{align*} $$

2段階だけでも、ローゼンブロック法が根本的にルンゲ=クッタ法の一種であることがわかる。