dblquad.RdNumerically evaluate double integral over rectangle.
dblquad(f, xa, xb, ya, yb, dim = 2, ...,
subdivs = 300, tol = .Machine$double.eps^0.5)
triplequad(f, xa, xb, ya, yb, za, zb,
subdivs = 300, tol = .Machine$double.eps^0.5, ...)function of two variables, the integrand.
left and right endpoint for first variable.
left and right endpoint for second variable.
left and right endpoint for third variable.
which variable to integrate first.
number of subdivisions to use.
relative tolerance to use in integrate.
additional parameters to be passed to the integrand.
Function dblquad applies the internal single variable integration
function integrate two times, once for each variable.
Function triplequad reduces the problem to dblquad by
first integrating over the innermost variable.
Numerical scalar, the value of the integral.
f1 <- function(x, y) x^2 + y^2
dblquad(f1, -1, 1, -1, 1) # 2.666666667 , i.e. 8/3 . err = 0
#> [1] 2.666667
f2 <- function(x, y) y*sin(x)+x*cos(y)
dblquad(f2, pi, 2*pi, 0, pi) # -9.869604401 , i.e. -pi^2, err = 0
#> [1] -9.869604
# f3 <- function(x, y) sqrt((1 - (x^2 + y^2)) * (x^2 + y^2 <= 1))
f3 <- function(x, y) sqrt(pmax(0, 1 - (x^2 + y^2)))
dblquad(f3, -1, 1, -1, 1) # 2.094395124 , i.e. 2/3*pi , err = 2e-8
#> [1] 2.094395
f4 <- function(x, y, z) y*sin(x)+z*cos(x)
triplequad(f4, 0,pi, 0,1, -1,1) # - 2.0 => -2.220446e-16
#> [1] 2