我也不知道有没有多重积分的函数,不过就算没有,也确实可以利用integrate来达到目的:
<br />
integrate2 <- function(f, x.lower, x.upper, y.lower, y.upper) {<br />
# 构造临时函数,根据单个y值计算单重积分,并取数值结果(integrate函数本身返回类型为list)<br />
f2 <- function(y) integrate(f, lower = x.lower, upper = x.upper, y = y)[[1]]<br />
# 利用sapply,根据多个y值计算每一个单重积分值,结果形成一个向量<br />
f3 <- function(y) sapply(y, f2)<br />
# 用上面构造的函数来进行积分,即可得到二重积分结果<br />
integrate(f3, y.lower, y.upper)<br />
}</p>
<p># 构造一个常数函数,尝试计算其多重积分<br />
f <- function(x, y) rep(1, length(x) * length(y))<br />
integrate2(f, -1, 1, -1, 1)<br />
# 4 with absolute error < 4.4e-14</p>
<p># 再计算楼主给的例子<br />
a <- 1<br />
f <- function(x, y) a * a * exp(-a * x - a * y)<br />
integrate2(f, 0, Inf, 0, Inf)<br />
# 1 with absolute error < 5.6e-05<br />
</p>
不过上述例子只能针对矩形定义域(x和y都固定上下限)计算二重积分,如果需要计算其他类型的定义域(如不规则形状的),则应根据具体情况修改构造临时函数的方法。三重或更多重积分的方法可据此扩展。