distrEx (version 1.9)

distrExIntegrate: Integration of One-Dimensional Functions

Description

Numerical integration via integrate. In case integrate fails a Gauss-Legendre quadrature is performed.

Usage

distrExIntegrate(f, lower, upper, subdivisions = 100, 
                 rel.tol = .Machine$double.eps^0.25, 
                 abs.tol = rel.tol, stop.on.error = TRUE, 
                 distr, order, ...)

Arguments

f
an R function taking a numeric first argument and returning a numeric vector of the same length. Returning a non-finite element will generate an error.
lower
lower limit of integration. Can be -Inf.
upper
upper limit of integration. Can be Inf.
subdivisions
the maximum number of subintervals.
rel.tol
relative accuracy requested.
abs.tol
absolute accuracy requested.
stop.on.error
logical. If TRUE (the default) an error stops the function. If false some errors will give a result with a warning in the message component.
distr
object of class UnivariateDistribution.
order
order of Gauss-Legendre quadrature.
...
additional arguments to be passed to f. Remember to use argument names not matching those of integrate and GLIntegrate!

Value

  • Estimate of the integral.

concept

integration

Details

This function calls integrate. In case integrate returns an error a Gauss-Legendre integration is performed using GLIntegrate. If lower or (and) upper are infinite the GLIntegrateTruncQuantile, respectively the 1-GLIntegrateTruncQuantile quantile of distr is used instead.

References

Based on QUADPACK routines dqags and dqagi by R. Piessens and E. deDoncker-Kapenga, available from Netlib.

R. Piessens, E. deDoncker-Kapenga, C. Uberhuber, D. Kahaner (1983) Quadpack: a Subroutine Package for Automatic Integration. Springer Verlag.

W.H. Press, S.A. Teukolsky, W.T. Vetterling, B.P. Flannery (1992) Numerical Recipies in C. The Art of Scientific Computing. Second Edition. Cambridge University Press.

See Also

integrate, GLIntegrate, distrExOptions

Examples

Run this code
fkt <- function(x){x*dchisq(x+1, df = 1)}
integrate(fkt, lower = -1, upper = 3)
GLIntegrate(fkt, lower = -1, upper = 3)
try(integrate(fkt, lower = -1, upper = 5))
distrExIntegrate(fkt, lower = -1, upper = 5)

Run the code above in your browser using DataCamp Workspace