XLPack 7.0
XLPack 数値計算ライブラリ (C API) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ deiint_r()

void deiint_r ( double  eps,
double *  result,
int *  neval,
int *  info,
double *  xx,
double  yy,
int *  irev 
)

無限区間の積分 (自動積分) (二重指数関数(DE)公式) (リバースコミュニケーション版)

目的
本ルーチンは要求精度を満たす[-∞, +∞]におけるf(x)の積分値を求める. 被積分関数f(x)は変数irevに従ってユーザーが必要な関数値を計算して与える.
積分値は二重指数関数(DE)公式を使用した自動積分により求められる.

二重指数関数(DE)公式(defintを参照)において以下の変換関数を使用することにより無限区間[-∞, +∞]に対する公式を得る.
φ(t) = sinh((π/2)sinh(t))
これはゆるやかに減衰するような被積分関数に適している.
引数
[in]eps要求絶対誤差.
max(|eps|, 1.0e-32) を判定条件として使用する.
[out]result求められた[-∞, +∞]におけるf(x)の積分値.
[out]neval被積分関数の評価回数.
[out]info= 0: 正常終了
= 1: 負側の減衰が遅いため収束判定条件を緩めた
= 2: 正側の減衰が遅いため収束判定条件を緩めた
= 3: 上記の両方
= 4: 要求精度を満たすことができなかった
[out]xxirev = 1〜5: 再呼び出し時に関数値を求めるべき点を返す.
[in]yyirev = 1〜5: 再呼び出し時に関数値f(xx)を与えること.
[in,out]irevリバースコミュニケーションの制御変数.
[in] 最初の呼び出し時に 0 に設定しておくこと. 2回目以降の呼び出し時には値を変更してはならない.
[out] 0 以外の場合, 下記処理を行いirevを変更せずに再び本ルーチンを呼び出すこと.
= 0: 処理終了.
= 1〜5: xxにおける関数値を求めyyに設定する. yy以外の変数を変更してはならない.
出典
森正武、「FORTRAN77数値計算プログラミング(増補版)」岩波書店 (1987)