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

◆ _qawf_r()

void _qawf_r ( double  a,
double  omega,
int  integr,
double  epsabs,
int  limlst,
int  limit,
int  maxp1,
double *  result,
double *  abserr,
int *  neval,
int *  lst,
double  work[],
int  lwork,
int  iwork[],
int  liwork,
int *  info,
double *  xx,
double  yy,
int *  irev 
)

半無限区間の積分 (フーリエ型積分) (適応自動積分) (25点クレンショー・カーチス公式および15点ガウス・クロンロッド則) (リバースコミュニケーション版)

目的
本ルーチンは要求精度を満たすフーリエ型積分 I = ∫ f(x)*w(x) dx [a, +∞] を求める. ただし, 重み関数 w(x) = cos(ω*x) または sin(ω*x) である.
25点修正クレンショー・カーチス則および15点ガウス・クロンロッド則を使用し, 要求精度を満足するように適応自動積分を行う.
引数
[in]a積分区間の下限.
[in]omega重み関数のパラメータ ω.
[in]integr重み関数を指定する.
= 1: w(x) = cos(omega * x)
= 2: w(x) = sin(omega * x)
[in]epsabs目的絶対誤差. (epsabs > 0)
[in]limlstサイクル数の最大値. (limlst >= 3)
[in]limit各サイクルにおける部分区間の最大数. (limit >= 1)
[in]maxp1チェビシェフモーメント数の上限. (maxp1 >= 1)
長さが abs(b-a)*2^(-L) の区間について L = 0, 1, ..., maxp1-2.
[out]result求められた I = [a, +∞]における f(x)*w(x) の積分値.
[out]abserr絶対誤差の推定値. 真の誤差に等しいかそれより大きい.
[out]neval被積分関数の評価回数.
[out]lst実際に必要とされたサイクル数.
[out]work[]配列 work[lwork]
作業領域.
work[0], ..., work[lst-1]: それぞれのサイクルの積分値.
work[limlst], ..., work[limlst+lst-1]: それぞれのサイクルのの誤差推定値.
work[]のその他の要素はユーザーにとって有用な情報ではない.
[in]lwork配列 work[]のサイズ. (lwork >= 2*limlst + 4*limit + 25*maxp1)
[out]iwork[]配列 iwork[liwork] (liwork >= limit)
作業領域.
iwork[k] (k = 0, 1, ..., lst-1): それぞれのサイクルのエラーフラグ.
[in]liwork配列 iwork[]のサイズ. (liwork >= limlst + 2*limit)
[out]info= 0: 正常終了
= -3: 入力パラメータ integr の誤り (integr != 1 かつ integr != 2)
= -4: 入力パラメータ epsabs の誤り (epsabs <= 0)
= -5: 入力パラメータ limlst の誤り (limlst < 3)
= -6: 入力パラメータ limit の誤り (limit < 1)
= -7: 入力パラメータ maxp1 の誤り (maxp1 < 1)
= -13: 入力パラメータ lwork の誤り (lwork < 2*limlst + 4*limit + 25*maxp1)
= -15: 入力パラメータ liwork の誤り (liwork < limlst + 2*limit)
= 1: サイクル数の最大値に達した
= 4: 外挿テーブルが要求精度内に収束しない
= 7: 1つ以上のサイクルで悪い被積分関数の挙動があった
[out]xxirev = 1〜48: 再呼び出し時に与える関数値を求めるべき点を返す.
[in]yyirev = 1〜48: 再呼び出し時に関数値f(xx)を与えること.
[in,out]irevリバースコミュニケーションの制御変数.
[in] 最初の呼び出し時に 0 に設定しておくこと. 2回目以降の呼び出し時には値を変更してはならない.
[out] 0 以外の場合, 下記処理を行いirevを変更せずに再び本ルーチンを呼び出すこと.
= 0: 処理終了.
= 1〜48: xxにおける関数値を求めyyに設定する. yy以外の変数を変更してはならない.
出典
SLATEC (QUADPACK)