Gauss–Kronrod quadrature formula

The Gauss–Kronrod quadrature formula is an adaptive method for numerical integration. It is a variant of Gaussian quadrature, in which the evaluation points are chosen so that an accurate approximation can be computed by re-using the information produced by the computation of a less accurate approximation. It is an example of what is called a nested quadrature rule: for the same set of function evaluation points, it has two quadrature rules, one higher order and one lower order (the latter called an embedded rule). The difference between these two approximations is used to estimate the calculational error of the integration.

These formulas are named after Alexander Kronrod, who invented them in the 1960s, and Carl Friedrich Gauss.

Description
The problem in numerical integration is to approximate definite integrals of the form


 * $$\int_a^b f(x)\,dx.$$

Such integrals can be approximated, for example, by n-point Gaussian quadrature


 * $$\int_a^b f(x)\,dx \approx \sum_{i=1}^n w_i f(x_i),$$

where wi, xi are the weights and points at which to evaluate the function f(x).

If the interval [a, b] is subdivided, the Gauss evaluation points of the new subintervals never coincide with the previous evaluation points (except at the midpoint for odd numbers of evaluation points), and thus the integrand must be evaluated at every point. Gauss–Kronrod formulas are extensions of the Gauss quadrature formulas generated by adding $$n+1$$ points to an $$n$$-point rule in such a way that the resulting rule is of order $$3n+1$$ (the corresponding Gauss rule is of order $$2n-1$$). These extra points are the zeros of Stieltjes polynomials. This allows for computing higher-order estimates while reusing the function values of a lower-order estimate. The difference between a Gauss quadrature rule and its Kronrod extension are often used as an estimate of the approximation error.

Example
A popular example combines a 7-point Gauss rule with a 15-point Kronrod rule. Because the Gauss points are incorporated into the Kronrod points, a total of only 15 function evaluations are needed.


 * {| class="wikitable" style="background-color:white"

! Gauss nodes !! !! Weights ! Kronrod nodes !! !! Weights
 * + (G7, K15) on [−1,1]
 * ±0.94910 79123 42759 || &lowast; || 0.12948 49661 68870
 * ±0.74153 11855 99394 || &lowast; || 0.27970 53914 89277
 * ±0.40584 51513 77397 || &lowast; || 0.38183 00505 05119
 * style="text-align:right" | 0.00000 00000 00000 || &lowast; || 0.41795 91836 73469
 * ±0.40584 51513 77397 || &lowast; || 0.38183 00505 05119
 * style="text-align:right" | 0.00000 00000 00000 || &lowast; || 0.41795 91836 73469
 * style="text-align:right" | 0.00000 00000 00000 || &lowast; || 0.41795 91836 73469
 * style="text-align:right" | 0.00000 00000 00000 || &lowast; || 0.41795 91836 73469
 * ±0.99145 53711 20813 || || 0.02293 53220 10529
 * ±0.94910 79123 42759 || &lowast; || 0.06309 20926 29979
 * ±0.86486 44233 59769 || || 0.10479 00103 22250
 * ±0.74153 11855 99394 || &lowast; || 0.14065 32597 15525
 * ±0.58608 72354 67691 || || 0.16900 47266 39267
 * ±0.40584 51513 77397 || &lowast; || 0.19035 05780 64785
 * ±0.20778 49550 07898 || || 0.20443 29400 75298
 * style="text-align:right" | 0.00000 00000 00000 || &lowast; || 0.20948 21410 84728
 * }
 * ±0.58608 72354 67691 || || 0.16900 47266 39267
 * ±0.40584 51513 77397 || &lowast; || 0.19035 05780 64785
 * ±0.20778 49550 07898 || || 0.20443 29400 75298
 * style="text-align:right" | 0.00000 00000 00000 || &lowast; || 0.20948 21410 84728
 * }
 * style="text-align:right" | 0.00000 00000 00000 || &lowast; || 0.20948 21410 84728
 * }
 * }

The integral is then estimated by the Kronrod rule $$K15$$ and the error can be estimated as $$|G7-K15|$$.

For an arbitrary interval $$[a,b]$$ the node positions $$x_i$$ and weights $$w_i$$ are scaled to the interval as follows:
 * $$x_{i,\text{scaled}}=\frac{x_i+1}{2}(b-a)+a$$
 * $$w_{i,\text{scaled}}=w_i\frac{b-a}{2}$$

showed how to find further extensions of this type, and  proposed improved algorithms, and finally the most efficient algorithm was proposed by. Quadruple precision (34 decimal digits) coefficients for (G7, K15), (G10, K21), (G15, K31), (G20, K41) and others are computed and tabulated.

Implementations
Routines for Gauss–Kronrod quadrature are provided by the QUADPACK library, the GNU Scientific Library, the NAG Numerical Libraries, R, the C++ library Boost., as well as the Julia package QuadGK.jl (which can compute Gauss–Kronrod formulas to arbitrary precision).