R 中的 2 倍(重复)积分
2-fold (repeated) integral in R
我想在 R 中计算 2 次重复积分(不是二重积分),例如,
%5E2g(x)dx)
其中
&space;=&space;%5Cint_x%5ET&space;f(x)dx)
在实践中,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
需要矢量化函数。
我想在 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
需要矢量化函数。