Portability | uses ffi |
---|---|
Stability | provisional |
Maintainer | Alberto Ruiz (aruiz at um dot es) |
Safe Haskell | Safe-Infered |
Numerical integration routines.
http://www.gnu.org/software/gsl/manual/html_node/Numerical-Integration.html#Numerical-Integration
- integrateQNG :: Double -> (Double -> Double) -> Double -> Double -> (Double, Double)
- integrateQAGS :: Double -> Int -> (Double -> Double) -> Double -> Double -> (Double, Double)
- integrateQAGI :: Double -> Int -> (Double -> Double) -> (Double, Double)
- integrateQAGIU :: Double -> Int -> (Double -> Double) -> Double -> (Double, Double)
- integrateQAGIL :: Double -> Int -> (Double -> Double) -> Double -> (Double, Double)
Documentation
:: Double | precision (e.g. 1E-9) |
-> (Double -> Double) | function to be integrated on the interval (a,b) |
-> Double | a |
-> Double | b |
-> (Double, Double) | result of the integration and error |
Numerical integration using gsl_integration_qng (useful for fast integration of smooth functions). For example:
> let quad = integrateQNG 1E-6 > quad (\x -> 4/(1+x*x)) 0 1 (3.141592653589793,3.487868498008632e-14)
:: Double | precision (e.g. 1E-9) |
-> Int | size of auxiliary workspace (e.g. 1000) |
-> (Double -> Double) | function to be integrated on the interval (a,b) |
-> Double | a |
-> Double | b |
-> (Double, Double) | result of the integration and error |
Numerical integration using gsl_integration_qags (adaptive integration with singularities). For example:
> let quad = integrateQAGS 1E-9 1000 > let f a x = x**(-0.5) * log (a*x) > quad (f 1) 0 1 (-3.999999999999974,4.871658632055187e-13)
:: Double | precision (e.g. 1E-9) |
-> Int | size of auxiliary workspace (e.g. 1000) |
-> (Double -> Double) | function to be integrated on the interval (-Inf,Inf) |
-> (Double, Double) | result of the integration and error |
Numerical integration using gsl_integration_qagi (integration over the infinite integral -Inf..Inf using QAGS). For example:
> let quad = integrateQAGI 1E-9 1000 > let f a x = exp(-a * x^2) > quad (f 0.5) (2.5066282746310002,6.229215880648858e-11)
:: Double | precision (e.g. 1E-9) |
-> Int | size of auxiliary workspace (e.g. 1000) |
-> (Double -> Double) | function to be integrated on the interval (a,Inf) |
-> Double | a |
-> (Double, Double) | result of the integration and error |
Numerical integration using gsl_integration_qagiu (integration over the semi-infinite integral a..Inf). For example:
> let quad = integrateQAGIU 1E-9 1000 > let f a x = exp(-a * x^2) > quad (f 0.5) 0 (1.2533141373155001,3.114607940324429e-11)
:: Double | precision (e.g. 1E-9) |
-> Int | size of auxiliary workspace (e.g. 1000) |
-> (Double -> Double) | function to be integrated on the interval (a,Inf) |
-> Double | b |
-> (Double, Double) | result of the integration and error |
Numerical integration using gsl_integration_qagil (integration over the semi-infinite integral -Inf..b). For example:
> let quad = integrateQAGIL 1E-9 1000 > let f a x = exp(-a * x^2) > quad (f 0.5) 0 (1.2533141373155001,3.114607940324429e-11)