integrate {base} | R Documentation |
Adaptive quadrature of functions of one variable over a finite 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 element 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 |
keep.xy |
unused. For compatibility with S. |
aux |
unused. For compatibility with S. |
... |
additional arguments to be passes to |
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 |
|
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 (1983)
Quadpack: a Subroutine Package for Automatic Integration;
Springer Verlag.
The function adapt
in the adapt
package on
CRAN, for multivariate integration.
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