XLPack 6.1
C/C++ API リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ _derkf_int()

void _derkf_int ( int  n,
double  t,
double  y[],
double  work[] 
)

常微分方程式の初期値問題 (5(4)次 ルンゲ・クッタ・フェールベルグ法) (密出力のための補間)

目的
本ルーチンは, derkf を使って常微分方程式の初期値問題の解を求める際に, 密出力を行うための補間を行う補助ルーチンである. 使用されている補間公式の詳細については下記参考文献を参照のこと.

derkf を用いて密出力を行うためには, パラメータ mode = 2 と設定して derkf を呼び出す必要がある. このとき作業領域 work[] が通常より多く必要になる. なお, 密出力のための追加の関数評価は不要である.
ステップが成功すると info = 2 (最後のステップでは info = 1) で derkf から戻るので, 本ルーチンを使って直近のステップの区間内で補間値を求めることができる.
引数
[in]n微分方程式の数. (n >= 1)
[in]t補間値を求める t を入力する.
t は直近のステップの区間内になければならない. すなわち, 前回 info = 2 で derkf から戻ったときを t1, 今回戻ったときを t2 とすると, t1 <= t <= t2 となっている必要がある.
[out]y[]配列 y[ly] (ly >= n)
t における解の補間値.
[in]work[]配列 work[lwork]
derkf を呼び出した時に使った作業配列 work[] をそのまま入力する.
参考文献
W H Enright et al. "Interpolants for Runge-Kutta Formulas" ACM Transactions on Mathematical Software Vol.12, No.3, 1986, pp.193-218