矢量与功能作为元素

时间:2016-01-27 09:13:49

标签: r for-loop vector integral

我尝试用数字计算R中的这个积分:

enter image description here

其中

enter image description here

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;

因此,我不知道如何解决我的初始积分。

1 个答案:

答案 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的向量(被积函数)和值。

这是你想要/需要的吗?