我想计算:
$\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一起工作;谁能够向我解释如何做到这一点?
答案 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