在R中计算几何系列

时间:2016-10-03 00:47:16

标签: r

我想计算:

$\sum_{j=1}^n r^j$ for $n=10, 20, 30, 40$, where $r=1.08$

http://quicklatex.com/cache3/76/ql_b64b957d43a0d6a93418cb18eb752576_l3.png

并将答案视为向量。我和R一起工作;谁能够向我解释如何做到这一点?

4 个答案:

答案 0 :(得分:3)

所以你正在玩幂系列。你可能会这样做:

r <- 1.08  ## this will be a divergent series, toward `Inf`
rr <- r^(1:40)
cumsum(rr)[1:4 * 10]
# [1] 15.64549  49.42292 122.34587 279.78104 

理论值是

## define a function
f <- function (n, r) r * (1 - r ^ n) / (1 - r)

## call this function
f(1:4 * 10, 1.08)
# [1] 15.64549  49.42292 122.34587 279.78104

注意,理论结果不是(1 - r ^ (n + 1)) / (1 - r),因为您从j = 1而不是j = 0开始求和。

答案 1 :(得分:2)

r的值是未说明的,我猜测所请求的公式并不是复合利益问题的正确解决方案,但这是目前提出的问题的一个答案:

r = 5.3; for (n in c(10,20,30,40) ) print( sum( r^(1:n) ) )

[1] 21555896
[1] 3.769856e+14
[1] 6.593006e+21
[1] 1.153034e+29

答案 2 :(得分:1)

也许(如果我正确地解释了乳胶):

library(purrr)

r <- 1.08
map_dbl(seq(10, 40, 10), function(n) {
  sum(r^(1:n))
})

答案 3 :(得分:1)

仅用于循环并将输出作为向量:

out=c(); 
for(i in c(10,20,30,40)) 
   {sum=0; 
    for(j in 1:i)
      {sum=sum+1.08^j}; 
    out=c(out,sum)}; 
out 

输出:

[1]  15.64549  49.42292 122.34587 279.78104

或者:

> out=c(); 
> for(i in c(10,20,30,40)) 
+     out=c(out,sum(1.08^(1:i)))
> out 
[1]  15.64549  49.42292 122.34587 279.78104

或者,以R方式:

> sapply(seq(10,40,10), function(x) sum(1.08^(1:x)))
[1]  15.64549  49.42292 122.34587 279.78104