quad.RdAdaptive quadrature of functions of one variable over a finite interval.
quad(f, xa, xb, tol = .Machine$double.eps^0.5, trace = FALSE, ...)Realizes adaptive Simpson quadrature in R through recursive calls.
The function f needs to be vectorized though this could be changed
easily. quad is not suitable for functions with singularities in the
interval or at end points.
A single numeric value, the computed integral.
Gander, W. and W. Gautschi (2000). “Adaptive Quadrature — Revisited”. BIT, Vol. 40, 2000, pp. 84-101.
More modern adaptive methods based on Gauss-Kronrod or Clenshaw-Curtis quadrature are now generally preferred.
# options(digits=15)
f <- function(x) x * cos(0.1*exp(x)) * sin(0.1*pi*exp(x))
quad(f, 0, 4) # 1.2821290747821
#> [1] 1.282129
quad(f, 0, 4, tol=10^-15) # 1.2821290743501
#> [1] 1.282129
integrate(f, 0, 4)
#> 1.282129 with absolute error < 4.1e-06
# 1.28212907435010 with absolute error < 4.1e-06
if (FALSE) { # \dontrun{
xx <- seq(0, 4, length.out = 200)
yy <- f(xx)
plot(xx, yy, type = 'l')
grid()} # }