<br />
integrate2 <- function(f, x.lower, x.upper, y.lower, y.upper)<br />
{<br />
# 构造临时函数,根据单个y值计算单重积分,并取数值结果(integrate函数本身返回类型为list)<br />
f2 <- function(y) integrate(f, lower = x.lower, upper = x.upper, y = y)$value<br />
# 利用sapply,根据多个y值计算每一个单重积分值,结果形成一个向量<br />
f3 <- function(y) sapply(y, f2)<br />
# 用上面构造的函数来进行积分,即可得到二重积分结果<br />
integrate(f3, y.lower, y.upper)<br />
}<br />
f = function(x, y) exp( (x+y)^2 )<br />
integrate2(f, 0, 1, 0, 1)<br />
</p>
上述代码运行结果:
<br />
4.899159 with absolute error < 5.4e-14<br />
</p>