integration-0.1: Fast robust numeric integration via tanh-sinh quadrature

Portabilityportable
Stabilityprovisional
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellSafe-Infered

Numeric.Integration.TanhSinh

Contents

Description

An implementation of Takahashi and Mori's Tanh-Sinh quadrature.

http://en.wikipedia.org/wiki/Tanh-sinh_quadrature

Tanh-Sinh provides good results across a wide-range of functions and is pretty much as close to a universal quadrature scheme as is possible. It is also robust against error in the presence of singularities at the endpoints of the integral.

The change of basis is precomputed, and information is gained quadratically in the number of digits.

 ghci> absolute 1e-6 $ parTrap sin (pi/2) pi
 Result {result = 0.9999999999999312, errorEstimate = 2.721789573237518e-10, evalutions = 25}
 ghci> confidence $ absolute 1e-6 $ trap sin (pi/2) pi
 (0.9999999997277522,1.0000000002721101)

Unlike most quadrature schemes, this method is also fairly robust against singularities at the end points.

 ghci> absolute 1e-6 $ trap (recip . sqrt . sin) 0 1
 Result {result = 2.03480500404275, errorEstimate = 6.349514558579017e-8, evalutions = 49}

See http://www.johndcook.com/blog/2012/02/21/care-and-treatment-of-singularities/ for a sense of how more naive quadrature schemes fare.

Synopsis

Quadrature methods

trap :: (Double -> Double) -> Double -> Double -> [Result]Source

Integration using a truncated trapezoid rule under tanh-sinh quadrature

simpson :: (Double -> Double) -> Double -> Double -> [Result]Source

Integration using a truncated Simpson's rule under tanh-sinh quadrature

trap' :: Strategy [Double] -> (Double -> Double) -> Double -> Double -> [Result]Source

Integration using a truncated trapezoid rule and tanh-sinh quadrature with a specified evaluation strategy

simpson' :: Strategy [Double] -> (Double -> Double) -> Double -> Double -> [Result]Source

Integration using a truncated Simpson's rule under tanh-sinh quadrature with a specified evaluation strategy

parTrap :: (Double -> Double) -> Double -> Double -> [Result]Source

Integration using a truncated trapezoid rule under tanh-sinh quadrature with buffered parallel evaluation

parSimpson :: (Double -> Double) -> Double -> Double -> [Result]Source

Integration using a truncated Simpson's rule under tanh-sinh quadrature with buffered parallel evaluation

data Result Source

Constructors

Result 

Estimated error bounds

Confidence intervals