我尝试用数字计算R中的这个积分:
其中
cm和cf是我已经知道的函数,gamma也是一个已知的参数。
我想要做的是计算a = 18,19,20,...,65的积分 因此,基本上,我想构造一个大小为48的向量,其中第一个元素是pi(18),第二个是pi(19),直到pi(65)。
是否可以在R中进行?
我只是尝试以下列方式计算lambda中的被积函数(只是为了尝试它是否有效)
integrand <- vector(mode="numeric")
for (i in 1:48){
integrand[i] <- function(a.f){exp(0.83-0.071*a.f)*
exp(-0.970774-0.077159*a.f)*
(1/sqrt(((-0.67+0.133*a.f)^{2})*pi))*exp(-(1/(-0.67+0.133*a.f)^{2})*(i-a.f- 2)^{2})}
}
但我得到了错误:
&#34;子分配类型中的不兼容类型(从闭包到双精度)&#34;
因此,我不知道如何解决我的初始积分。
答案 0 :(得分:0)
如果我没弄错的话,你几乎就在那里。 R是如此强大,因为它是矢量化的,我们可以使用它来得到结果:
a.f <- 1:48
integrand <- exp(0.83-0.071*a.f)*
exp(-0.970774-0.077159*a.f)*
(1/sqrt(((-0.67+0.133*a.f)^2)*pi))*
exp(-(1/(-0.67+0.133*a.f)^2)*(i-a.f- 2)^2)
给出长度为48的向量(被积函数)和值。
这是你想要/需要的吗?