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

◆ _dverk_int()

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

常微分方程式の初期値問題 (6(5)次 ルンゲ・クッタ・ヴァーナー法) (密出力のための補間)

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

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