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
editThe problem in numerical integration is to approximate definite integrals of the form
Such integrals can be approximated, for example, by n-point Gaussian quadrature
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 points to an -point rule in such a way that the resulting rule is exact for polynomials of degree less than or equal to (Laurie (1997, p. 1133); the corresponding Gauss rule is of order ). 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
editA popular example combines a 7-point Gauss rule with a 15-point Kronrod rule (Kahaner, Moler & Nash 1989, §5.5). Because the Gauss points are incorporated into the Kronrod points, a total of only 15 function evaluations are needed.
(G7, K15) on [−1,1] Gauss nodes Weights ±0.94910 79123 42759 ∗ 0.12948 49661 68870 ±0.74153 11855 99394 ∗ 0.27970 53914 89277 ±0.40584 51513 77397 ∗ 0.38183 00505 05119 0.00000 00000 00000 ∗ 0.41795 91836 73469 Kronrod nodes Weights ±0.99145 53711 20813 0.02293 53220 10529 ±0.94910 79123 42759 ∗ 0.06309 20926 29979 ±0.86486 44233 59769 0.10479 00103 22250 ±0.74153 11855 99394 ∗ 0.14065 32597 15525 ±0.58608 72354 67691 0.16900 47266 39267 ±0.40584 51513 77397 ∗ 0.19035 05780 64785 ±0.20778 49550 07898 0.20443 29400 75298 0.00000 00000 00000 ∗ 0.20948 21410 84728
The integral is then estimated by the Kronrod rule and the error can be estimated as .
For an arbitrary interval the node positions and weights are scaled to the interval as follows:
Patterson (1968) showed how to find further extensions of this type, Piessens & Branders (1974) and Monegato (1978) proposed improved algorithms, and finally the most efficient algorithm was proposed by Laurie (1997). Quadruple precision (34 decimal digits) coefficients for (G7, K15), (G10, K21), (G15, K31), (G20, K41) and others are computed and tabulated.[1]
Implementations
editRoutines for Gauss–Kronrod quadrature are provided by the QUADPACK library, the GNU Scientific Library, the NAG Numerical Libraries, R,[2] the C++ library Boost.,[3] as well as the Julia package QuadGK.jl[4] (which can compute Gauss–Kronrod formulas to arbitrary precision).
See also
edit- Clenshaw–Curtis quadrature, another nested quadrature rule with similar accuracy
Notes
edit- ^ Pavel Holoborodko (2011-11-07). "Gauss-Kronrod Quadrature Nodes and Weights". Retrieved 2016-01-15.
- ^ "R: Integration of One-Dimensional Functions". R Documentation. Retrieved 14 December 2019.
- ^ Thompson, Nick; Maddock, John. "Gauss-Kronrod Quadrature". boost.org. Retrieved 24 December 2017.
- ^ "QuadGK.jl Manual". juliamath.github.io. Retrieved 2023-07-19.
References
edit- "Gauss–Kronrod quadrature formula", Encyclopedia of Mathematics, EMS Press, 2001 [1994]
- Kahaner, David; Moler, Cleve; Nash, Stephen (1989), Numerical Methods and Software, Prentice–Hall, ISBN 978-0-13-627258-8
- Kronrod, Aleksandr Semenovish (1965), Nodes and weights of quadrature formulas. Sixteen-place tables, New York: Consultants Bureau (Authorized translation from the Russian)
- Piessens, Robert; de Doncker-Kapenga, Elise; Überhuber, Christoph W. [in German]; Kahaner, David K. (1983), QUADPACK, A subroutine package for automatic integration, Springer-Verlag, ISBN 978-3-540-12553-2 (Reference guide for QUADPACK)
- Patterson, Thomas N. L. (1968), "The Optimum Addition of Points to Quadrature Formulae", Math. Comput., 22 (104): 847–856 and C1–C11, doi:10.2307/2004583, JSTOR 2004583. Erratum in Math. Comput. 23: 892.
- Piessens, Robert; Branders, Maria (1974), "A Note on the Optimal Addition of Abscissas to Quadrature Formulas of Gauss and Lobatto", Mathematics of Computation, 28 (125): 135–139, doi:10.2307/2005820, JSTOR 2005820
- Monegato, Giovanni (1978), "Some remarks on the construction of extended Gaussian quadrature rules", Mathematics of Computation, 32 (141): 247–252, doi:10.2307/2006272, JSTOR 2006272
- Laurie, Dirk (1997), "Calculation of Gauss-Kronrod quadrature rules.", Mathematics of Computation, 66 (219): 1133–1145, doi:10.1090/s0025-5718-97-00861-2
External links
edit- QUADPACK (part of SLATEC), source code [1]. QUADPACK is a collection of algorithms, in Fortran, for numerical integration based on Gauss-Kronrod rules. SLATEC (at Netlib) is a large public domain library for numerical computing.
- ALGLIB source code in C#, C++, Delphi & Visual Basic