Runge-Kutta-Gill法について

Runge-Kutta-Gill法の各ステップの係数のチートシートを探していて次の論文に行き当たったのでメモ。
CiNii 論文 -  Runge-Kutta-Gill法について
伊理 正夫, 松谷 泰行, 情報処理, 8(2), pp.103-107 (1967).
ソースコードを見ると

      k=h*f(i)
      qi=q(i)
      r=0.5*K-qi
      q(i)=qi+3.0*r-0.5*k
      y(i)=y(i)+r

の部分が次のように書き換わっている。

      k=h*f(i)
      qi=q(i)
      r=0.5*K-qi
      s=y(i)   ! ここで y をバッファして
      y(i)=s+r ! 一旦、y の中間積分値を作って
      r=y(i)-s ! 増分を再計算して、yで丸めた部分を引き出して
      q(i)=qi+3.0*r-0.5*k ! 次のステップの引数に渡す

これが古典的RKにはないRKGの「丸め誤差の自動修正」機能であると書いてある。へぇ。

蛇足 2010.2.15

(3.n.4.2) r^i_{n,4}=\frac16(k^i_{n,4}-2q^i_{n,4}) より (3.n.4.4) q^i_{n+1,1}=q^i_{n,4}+3r^i_{n,4}-\frac12k^i_{n,4}=0 である。え?温存しておくものがないの?