integrate {base} | R Documentation |
Adaptive quadrature of functions of one variable over a finit or infinite interval.
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, ...)
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 . |
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
.
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. |
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.
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