倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

ルンゲ=クッタ法を導く (4) : 2次の場合

ルンゲ=クッタ (Runge-Kutta) 法を導くシリーズ(目次)今回は2次のルンゲ=クッタ法。 「問題設定」の { s=2 } の場合。

条件式

満たすべき条件式は

  { \displaystyle\begin{align*}
  &a_1\left[k_1\right]_{h=0} + a_2\left[k_2\right]_{h=0} = f(x_n,\,y_n) & \cdots (1) \\[4mm]
  &a_1\left[\frac{dk_1}{dh}\right]_{h=0} + a_2\left[\frac{dk_2}{dh}\right]_{h=0}
    = \frac{1}{2}\frac{df}{dx}(x_n,\,y_n) & \cdots (2)
\end{align*}}

ただし

  { \displaystyle\begin{align*}
    k_1 &= f(x_n,\,y_n) & \cdots (3) \\ k_2 &= f(x_n+c_2h,\,y_n+c_2hk_1) &\cdots (4)
\end{align*}}

です。

(1) 式:{ k } の0階微分の条件式

{ k_1,\,k_2 } の定義式 (3), (4) より

  { \displaystyle\begin{align*}
    \left[k_1\right]_{h=0} = \left[k_2\right]_{h=0} = f(x_n,\,y_n)
\end{align*}}

なので、(1) 式に代入すると

  { \displaystyle\begin{align*}
    a_1f(x_n,\,y_n) + a_2f(x_n,\,y_n) = f(x_n,\,y_n)
\end{align*}}

よって、以下の関係が得られます:

  { \displaystyle\begin{align*}
    a_1 + a_2 = 1
\end{align*}}

(2) 式:{ k } の1階微分の条件式

{ k_1 }微分
{ k_1 } の定義式 (3) より

  { \displaystyle\begin{align*}
    \frac{dk_1}{dh} &= 0, & \therefore & \left[\frac{dk_1}{dh}\right]_{h=0} = 0
\end{align*}}

{ k_2 }微分
{ k_2 } の定義式 (3) より(長くなるので、所々引数を省略しています)

  { \displaystyle\begin{align*}
    \frac{dk_2}{dh} = c_2\left\{\frac{\partial k_2}{\partial x} + \frac{\partial k_2}{\partial y}k_1\right\}
\end{align*}}

となるので、

  { \displaystyle\begin{align*}
    \left[\frac{dk_2}{dh}\right]_{h=0} = c_2\left\{\frac{\partial f}{\partial x} + \frac{\partial f}{\partial y}f\right\}
\end{align*}}

{ f(x,\,y) }微分

  { \displaystyle\begin{align*}
    \frac{df}{dx} = \frac{\partial f}{\partial x} + \frac{\partial f}{\partial y}f
\end{align*}}


得られる関係式
上記で得られた関係を (2) 式に代入すると

  { \displaystyle\begin{align*}
    c_2a_2\left\{\frac{\partial f}{\partial x} + \frac{\partial f}{\partial y}f\right\} = \frac{1}{2}\left\{\frac{\partial f}{\partial x} + \frac{\partial f}{\partial y}f\right\}
\end{align*}}

したがって次式が得られます:

  { \displaystyle\begin{align*}
    a_2c_2 = \tfrac{1}{2}
\end{align*}}

{ a,\,c } の値

{ a,\,c } が満たすべき関係式をまとめると

  { \displaystyle\begin{align*}
    a_1 + a_2 &= 1 & a_2c_2 &= \tfrac{1}{2}
\end{align*}}

{ c_2 } を決めれば { a_1,\,a_2 } は定まりますが、{ c_2 } の選び方はいくらか任意性があり、使用される値によって方法に名前が付いているようです(こちらを参照)。

ルンゲ=クッタの中点法
{ c_2=\frac{1}{2} } のとき { a_1=0,\,a_2=1 } となります:

  { \displaystyle\begin{align*}
    y_{n+1} = y_n + hf(x_n+\tfrac{1}{2}h,\,y_n+\tfrac{1}{2}hf(x_n,\,y_n))
\end{align*}}

Heun 法
{ c_2=\frac{2}{3} } のとき { a_1=\frac{1}{4},\,a_2=\frac{3}{4} } となります:

  { \displaystyle\begin{align*}
    y_{n+1} = y_n + \tfrac{h}{4}\Big\{f(x_n,\,y_n) + 3f(x_n+\tfrac{2}{3}h,\,y_n+\tfrac{2}{3}hf(x_n,\,y_n)) \Big\}
\end{align*}}


改良オイラー
{ c_2=1 } のとき { a_1 = a_2 = \frac{1}{2} } となります:

  { \displaystyle\begin{align*}
    y_{n+1} = y_n + \tfrac{h}{2}\Big\{f(x_n,\,y_n) + f(x_n+h,\,y_n+hf(x_n,\,y_n)) \Big\}
\end{align*}}

Javaによるアルゴリズム事典

Javaによるアルゴリズム事典

計算物理学入門

計算物理学入門

  • 作者: ハーベイゴールド,ジャントボチニク,Harvey Gould,Jan Tobochnik,鈴木増雄,石川正勝,溜渕継博,宮島佐介
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/12
  • メディア: 単行本
  • 購入: 1人 クリック: 28回
  • この商品を含むブログ (45件) を見る