|
|
◆ _qawf()
| void _qawf |
( |
double(*)(double) |
f, |
|
|
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 |
|
) |
| |
半無限区間の積分 (フーリエ型積分) (適応自動積分) (25点クレンショー・カーチス公式および15点ガウス・クロンロッド則)
- 目的
- 本ルーチンは要求精度を満たすフーリエ型積分 I = ∫ f(x)*w(x) dx [a, +∞] を求める. ただし, 重み関数 w(x) = cos(ω*x) または sin(ω*x) である.
25点修正クレンショー・カーチス則および15点ガウス・クロンロッド則を使用し, 要求精度を満足するように適応自動積分を行う.
- 引数
-
| [in] | f | 被積分関数f(x)を求めるユーザー定義サブルーチンで, 次のように定義すること. double f(double x)
{
return f(x)の計算値
}
|
| [in] | a | 積分区間の下限. |
| [in] | omega | 重み関数のパラメータ ω. |
| [in] | integr | 重み関数を指定する.
= 1: w(x) = cos(ω*x)
= 2: w(x) = sin(ω*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: 正常終了
= -4: 入力パラメータ integr の誤り (integr != 1 かつ integr != 2)
= -5: 入力パラメータ epsabs の誤り (epsabs <= 0)
= -6: 入力パラメータ limlst の誤り (limlst < 3)
= -7: 入力パラメータ limit の誤り (limit < 1)
= -8: 入力パラメータ maxp1 の誤り (maxp1 < 1)
= -14: 入力パラメータ lwork の誤り (lwork < 2*limlst + 4*limit + 25*maxp1)
= -16: 入力パラメータ liwork の誤り (liwork < limlst + 2*limit)
= 1: サイクル数の最大値に達した
= 4: 外挿テーブルが要求精度内に収束しない
= 7: 1つ以上のサイクルで悪い被積分関数の挙動があった |
- 出典
- SLATEC (QUADPACK)
|