我正在使用集成函数(在R中)来数值计算积分。我有一个单变量函数,其中一个参数 f(x,a)就像这样(仅用于示例目的):
test = function(x,a) 1/sqrt(2*pi)*exp(-(x-a)^2/2)
我想在整合上述函数后定义新的单变量函数,它是 a 的函数:
testa = function(a) integrate(test,0,Inf,a=a)$value #this works
现在我的问题是,是否可以在 testa 功能上使用集成功能?例如:
integrate(testa,0,1) # not working
我试过但它无法正常工作(收到错误消息evaluation of function gave a result of wrong length
)。我已经知道可以直接在 test 上应用多变量集成过程(例如,从 cubature 包中使用 adaptIntegrate 函数)。但这不是我的目的!
那么有没有人知道如何连续应用集成功能,如上例所示?或者确认R中不允许这样做?
提前感谢
答案 0 :(得分:2)
integrate
需要一个矢量化函数。您可以使用Vectorize
:
integrate(Vectorize(testa),0,1)
#0.6843731905 with absolute error < 0.00000000000022
免责声明:我没有检查结果是否正确。