Learn R Programming

pracma (version 1.9.3)

quadinf: Infinite Integrals

Description

Iterative quadrature of functions over finite, semifinite, or infinite intervals.

Usage

quadinf(f, xa, xb, tol = 1e-12, ...)

Arguments

f
univariate function; needs not be vectorized.
xa
lower limit of integration; can be infinite
xb
upper limit of integration; can be infinite
tol
accuracy requested.
...
additional arguments to be passed to f.

Value

A list with components Q the integral value, relerr the relative error, and niter the number of iterations.

Details

quadinf implements the `double exponential method' for fast numerical integration of smooth real functions on finite intervals. For infinite intervals, the tanh-sinh quadrature scheme is applied, that is the transformation g(t)=tanh(pi/2*sinh(t)).

Please note that this algorithm does work very accurately for `normal' function, but should not be applied to (heavily) oscillating functions. The maximal number of iterations is 7, so if this is returned the iteration may not have converged.

The integrand function needs not be vectorized.

References

http://crd-legacy.lbl.gov/~dhbailey/dhbpapers/dhb-tanh-sinh.pdf

See Also

integrate, quadgk

Examples

Run this code
##  We will look at the error function exp(-x^2)
f <- function(x) exp(-x^2)          # sqrt(pi)/2         theory
quadinf(f, 0, Inf)                  # 0.8862269254527413
quadinf(f, -Inf, 0)                 # 0.8862269254527413

f = function(x) sqrt(x) * exp(-x)   # 0.8862269254527579 exact
quadinf(f, 0, Inf)                  # 0.8862269254527579

f = function(x) x * exp(-x^2)       # 1/2
quadinf(f, 0, Inf)                  # 0.5

f = function(x) 1 / (1+x^2)         # 3.141592653589793 = pi
quadinf(f, -Inf, Inf)               # 3.141592653589784

Run the code above in your browser using DataLab