integrate                package:base                R Documentation

Integration of One-Dimensional Functions

Description:

     Adaptive quadrature of functions of one variable over a finit or
     infinite interval.

Usage:

     integrate(f, lower, upper, subdivisions=100,
               rel.tol = .Machine$double.eps^0.25, abs.tol = rel.tol,
               stop.on.error = TRUE, keep.xy = FALSE, aux = NULL, ...)

Arguments:

       f: An R function taking a numeric first argument and returning a
          numeric vector the same length. Returning a non-finite will
          generate an error.

lower, upper: The limits of integration. Can be infinite.

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.

 keep.xy: unused. For compatibility with S.

     aux: unused. For compatibility with S.

     ...: additional arguments to be passes to `f'.

Details:

     If one or both limits are infinite, the infinite range is mapped
     onto a finite interval.

     For a finite interval, globally adaptive interval subdivision is
     used in connection with extrapolation by the Epsilon algorithm.

     `rel.tol' cannot be less than `max(50*.Machine$double.eps,
     0.5e-28)' if `abs.tol <= 0'.

Value:

     A list of class `"integrate"' with components 

   value: the final estimate of the integral.

abs.error: estimate of the modulus of the absolute error.

subdivisions: the number of subintervals produced in the subdivision
          process.

 message: `"OK"' or a character string giving the error message.

    call: the matched call.

References:

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

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

Examples:

     integrate(dnorm, -1.96, 1.96)
     integrate(dnorm, -Inf, Inf)

     ## a slowly-convergent integral
     integrand <- function(x) {1/((x+1)*sqrt(x))}
     integrate(integrand, lower = 0, upper = Inf)
     integrate(integrand, lower = 0, upper = 10)
     integrate(integrand, lower = 0, upper = 100000)
     integrate(integrand, lower = 0, upper = 1000000, stop.on.error = FALSE)

     try(integrate(function(x) 2, 0, 1))  ## no vectorizable function
     integrate(function(x) rep(2, length(x)), 0, 1)  ## correct

