如何解决R中的数学序列?

How to solve a math sequence in R?

编辑:我想不出更准确的问题标题,但请让我知道我可以使用什么更好的标题,谢谢!

我有一个“基本”数学问题,我无法将其转化为 R 代码。如果我每年 向土壤中添加 4 公斤岩石 所有添加的岩石 的 1% 每年溶解,那么有多少岩石(在kg) n年后我会解散吗? (例如 n=47 岁)。

你知道 R 中可以帮助我计算这个的代码或函数吗?

非常感谢!

为了清楚起见,前三年的计算如下所示:

第 1 年

第一年我申请了 4 公斤,在年底,我有 A1 = 0.01x4 = 0.04 千克岩石溶解

第二年

第二年,我还有 4-(0.01x4)= 3.96 公斤的第一年未溶解的岩石,我再次应用了 4 公斤的岩石。我总共有 3.96x4 = 7.96 公斤的岩石。我会有 A2 = 0.01x7.96 = 0.0796 千克岩石在第 2 年末溶解 AND A1 = 0.04 千克岩石从第 1 年开始溶解

所以在第 2 年年底,我将总共溶解 0.04 + 0.0796 = 0.1196 千克岩石

第 3 年

第 3 年年初未溶解的岩石总量:4 千克(第 3 年申请)+ 3.96 千克(第 2 年申请)+ 3.96-(3.96x0.01)= 3.92 千克来自第 1 年申请。我总共有 4+3.96+3.92= 11.88 公斤未溶解的岩石。在第 3 年末,我将拥有 A3 = 0.01x11.88 = 0.1188 千克溶岩

第 3 年末溶解的岩石总量: A3+A2+A1 = 0.1188+0.0796+0.04 = 0.2384千克溶岩

1)如果u[i]和d[i]是第i年年底未溶解和溶解的岩石,如果我们要计算n年那么:

n <- 3
u <- numeric(n)
u[1] <- 4
for(i in 2:n) u[i] <- (1-0.01) * u[i-1] + 4
u
## [1]  4.0000  7.9600 11.8804

d <- cumsum(0.01 * u)
d
## [1] 0.040000 0.119600 0.238404

2) 我们可以像这样交替使用 Reduce:

n <- 3
u <- Reduce(function(x, y) (1-0.01)*x+4, numeric(n-1), init = 4, acc = TRUE)
u
## [1]  4.0000  7.9600 11.8804

d <- cumsum(0.01 * u)
d
## [1] 0.040000 0.119600 0.238404

我的评论是关于 cumsum(0.01 * u) 对在时间 47 溶解了多少岩石的最终答案的影响:

n <- 47
u <- numeric(n)
u[1] <- 4
for(i in 2:n) u[i] <- (1-0.01) * u[i-1] + 4
u[47]
[1] 150.5898
d <- cumsum(0.01 * u)
d[47]
[1] 38.91606
d[47]/u[47]
[1] 0.2584242
# as against
d2 <- 0.01 * u
d2[47]
[1] 1.505898
d2[47]/u[47]
[1] 0.01

金矿堆中的硫酸,可能 d,水,可能 d2