Function intdeoini
I = integral of f(x) over (a,infinity), f(x) has oscillatory factor :
void intdeoini(Real)
(
size_t lenaw,
Real tiny,
Real eps,
Real* aw
);
f(x) = g(x) * sin(omega * x + theta) as x -> infinity
Examples
auto aw = new real[8000];
intdeoini(aw .length, tiny, eps, aw .ptr); // initialization of aw
...
intdeo(f, a, omega, aw .ptr, &i, &err);
Parameters
Name | Description |
---|---|
lenaw | length of aw |
tiny | minimum value that 1/tiny does not overflow |
eps | relative error requested |
aw | points and weights of the quadrature formula, aw[0...lenaw-1] |
f | integrand f(x) |
a | lower limit of integration |
omega | frequency of oscillation |
i | approximation to the integral |
err | estimate of the absolute error |
Remarks
initial parameters lenaw > 1000, IEEE double : lenaw = 8000; tiny = 1.0e-307; function f(x) needs to be analytic over (a,infinity). relative error eps is relative error requested excluding cancellation of significant digits. i.e. eps means : (absolute error) / (integral_a^R |f(x)| dx). eps does not mean : (absolute error) / I. error message err >= 0 : normal termination. err < 0 : abnormal termination. i.e. convergent error is detected : 1. f(x) or (d/dx)^n f(x) has discontinuous points or sharp peaks over (a,infinity). you must divide the interval (a,infinity) at this points. 2. relative error of f(x) is greater than eps.