Function integrateQAG
Calculate the integral of f(x)
over the finite interval
(a
,b
) using a simple globally adaptive integrator.
Result!Real integrateQAG(Func, Real)
(
scope Func f,
Real a,
Real b,
GaussKronrod rule = GaussKronrod .rule31,
Real epsRel = cast(Real)1e-06,
Real epsAbs = cast(Real)0
);
This method is suitable for functions without singularities
or discontinuities which are too difficult for integrateQNG()
,
and, in particular, for functions with oscillating behaviour of a
non-specific type.
It is possible to choose between 6 pairs of
Gauss–Kronrod quadrature formulae
for the rule evaluation component. The pairs of high
degree of precision are suitable for handling integration
difficulties due to a strongly oscillating integrand, whereas
the lower-order rules are more efficient for well-behaved integrands.
The rule
parameter may take on the following values, corresponding to
15-, 21-, 31-, 41-, 51-, and 61-point Gauss–Kronrod rules:
enum GaussKronrod { rule15, rule21, rule31, rule41, rule51, rule61 }
Example
// Strongly oscillating integrand, better use highest-order rule.
double f(double x) { return cos(100 * sin(x)); }
auto i = integrateQAG(&f, 0.0, cast(double) PI, GaussKronrod .rule61);