2012-06-21 102 views
1

enter image description here如何在R中的for循环中使用sum函数?

我们想要计算线性图中积分的值。 为了更好的理解看照片。假设整体面积为1.我们想要找到某个部分的价值。例如,我们想要知道,如果一切以月为单位,最大为24,则在第10个月和第11个月内,整体100%的百分比是多少。 我们可以计算一个积分,然后应该能够获得搜索区域由F(X) - F(X-1) 我thoght关于下面的代码:

a <- 24 
tab <-matrix(0,a,1) 
tab <-cbind(seq(1,a),tab) 
tab<-data.frame(tab) 

#initialization for first point 
tab[1,2] <- (2*tab[1,1]/a - tab[1,1]^2/a^2) 

#for loop for calculation of integral of each point - integral until to the area 
for(i in 2:nrow(tab)) 
{tab[i,2] <- (2*tab[i,1]/a - tab[i,1]^2/ a^2) - sum(tab[1,2]:tab[i-1,2])} 
#plotting 
plot(tab[,2], type="l") 

如果你看到的情节 - 这是令人困惑的。任何想法如何处理这个正确的?

回答

5

的基础R功能integrate()能为你做到这一点:

f <- function(x, A) 2/A - x/A^2 

integrate(function(x)f(x, 24), lower=10, upper=11) 

0.06510417 with absolute error < 7.2e-16 
+0

但为什么它有一个标准错误? –

+0

这不是标准错误,而是数字集成引入的数字错误的指示。 – Andrie

1

直接使用公式:

a <- 24       # number of divisions 
x <- c(seq(1,a))     # 
y <- x*2/a - x^2/a^2    # F(x) 
z <- (x*2/a - x^2/a^2) - ((x-1)*2/a - (x-1)^2/a^2) # F(x) - F(x-1) 

然后做后绑定。

> sum(z) 
[1] 1