R 中的 2 倍(重复)积分

2-fold (repeated) integral in R

我想在 R 中计算 2 次重复积分(不是二重积分),例如,

其中

在实践中,f(x) 和 g(x) 都相当复杂,但是为了 运行 一个实验,让我们简化 g(x)=1 和 f(x)=cos(x) ,在 R 中我使用 integrate 来计算:

> phi = function(x){integrate(function(x){cos(x)},lower=x,upper=3)[["value"]]^2}

> foldintegral = integrate(phi,lower=0,upper=3)

我收到了这条错误信息:

Error in integrate(phi, lower = 0, upper = 3) : 
  evaluation of function gave a result of wrong length

知道怎么做吗?

只需要

integrate(Vectorize(phi), lower=0, upper=3)
# 1.067943 with absolute error < 1.2e-14

比较

phi(1)
#[1] 0.4904915

phi(1:3)
# [1] 0.4904915

Vectorize(phi)(1:3)
# [1] 0.4904915 0.5900965 0.0000000

integrate 需要矢量化函数。