|
|
◆ deiint()
| void deiint |
( |
double(*)(double) |
f, |
|
|
double |
eps, |
|
|
double * |
result, |
|
|
int * |
neval, |
|
|
int * |
info |
|
) |
| |
無限区間の積分 (自動積分) (二重指数関数(DE)公式)
- 目的
- 本ルーチンは要求精度を満たす[-∞, +∞]におけるf(x)の積分値を求める. ここで, f(x)はユーザー定義サブルーチンfにより与えられる関数である.
積分値は二重指数関数(DE)公式を使用した自動積分により求められる.
二重指数関数(DE)公式(defintを参照)において以下の変換関数を使用することにより無限区間[-∞, +∞]に対する公式を得る. φ(t) = sinh((π/2)sinh(t))
これはゆるやかに減衰するような被積分関数に適している.
- 引数
-
| [in] | f | 被積分関数f(x)を求めるユーザー定義サブルーチンで, 次のように定義すること. double f(double x)
{
return f(x)の計算値
}
|
| [in] | eps | 要求絶対誤差.
max(|eps|, 1.0e-32) を判定条件として使用する. |
| [out] | result | 求められた[-∞, +∞]におけるf(x)の積分値. |
| [out] | neval | 被積分関数の評価回数. |
| [out] | info | = 0: 正常終了
= 1: 負側の減衰が遅いため収束判定条件を緩めた
= 2: 正側の減衰が遅いため収束判定条件を緩めた
= 3: 上記の両方
= 4: 要求精度を満たすことができなかった |
- 出典
- 森正武、「FORTRAN77数値計算プログラミング(増補版)」岩波書店 (1987)
|