QUADPACK

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
QUADPACK
Original authorsRobert Piessens
Elise deDoncker-Kapenga
Christoph W. Überhuber
David Kahaner
Initial releaseMay 1981 (1981-05)
Stable release
11 October 2021[1]
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inFORTRAN 77
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    TypeLibrary
    LicensePublic domain
    Websitenines.cs.kuleuven.be/software/QUADPACK/

    QUADPACK is a FORTRAN 77 library for numerical integration (quadrature) of one-dimensional functions.[2] It was included in the SLATEC Common Mathematical Library and is therefore in the public domain.[3] The individual subprograms are also available on netlib.[4]

    The GNU Scientific Library reimplemented the QUADPACK routines in C. SciPy provides a Python interface to part of QUADPACK.[5][6]

    Routines

    [edit | edit source]

    The main focus of QUADPACK is on automatic integration routines in which the user inputs the problem and an absolute or relative error tolerance and the routine attempts to perform the integration with an error no larger than that requested. There are nine such automatic routines in QUADPACK, in addition to a number of non-automatic routines. All but one of the automatic routines use adaptive quadrature.[7]

    Summary of naming scheme for automatic routines[8]
    1st letter 2nd letter 3rd letter 4th letter, if present
    Q Quadrature
    N Non-adaptive
    A Adaptive
    G General integrand
    W Weight function of specified form
    Simple integrator
    S Singularities handled
    P Specified points of local difficulty (singularities, discontinuities …)
    I Infinite interval
    O Oscillatory weight function (cos or sin) over a finite interval
    F Fourier transform (cos or sin)
    C Cauchy principal value

    Each of the adaptive routines also have versions suffixed by E that have an extended parameter list that provides more information and allows more control. Double precision versions of all routines were released with prefix D.

    General-purpose routines

    [edit | edit source]

    The two general-purpose routines most suitable for use without further analysis of the integrand are QAGS for integration over a finite interval and QAGI for integration over an infinite interval.[7] These two routines are used in GNU Octave (the quad command)[5] and R (the integrate function).[9]

    QAGS
    uses global adaptive quadrature based on 21-point Gauss–Kronrod quadrature within each subinterval, with acceleration by Peter Wynn's epsilon algorithm.[7][10]
    QAGI
    is the only general-purpose routine for infinite intervals, and maps the infinite interval onto the semi-open interval (0,1] using a transformation then uses the same approach as QAGS, except with 15-point rather than 21-point Gauss–Kronrod quadrature.[2] For an integral over the whole real line, the transformation used is x=(1t)/t:[2] +f(x)dx=01dtt2(f(1tt)+f(1tt)). This is not the best approach for all integrands: another transformation may be appropriate, or one might prefer to break up the original interval and use QAGI only on the infinite part.[7]

    Brief overview of the other automatic routines

    [edit | edit source]
    QNG
    simple non-adaptive integrator
    QAG
    simple adaptive integrator
    QAGP
    similar to QAGS but allows user to specify locations of internal singularities, discontinuities etc.
    QAWO
    integral of cos(ωx) f(x) or sin(ωx) f(x) over a finite interval
    QAWF
    Fourier transform
    QAWS
    integral of w(x) f(x) from a to b, where f is smooth and w(x) = (xa)α (bx)β logk(xa) logl(bx), with k, l = 0 or 1 and α, β > –1
    QAWC
    Cauchy principal value of the integral of f(x)/(xc) for user-specified c and f [2]

    See also

    [edit | edit source]

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).

    Further reading

    [edit | edit source]
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).