R中的迭代方程
我有一个方程C.sul.f=C.sul.I+R*C.sil.I/1+R/D,其中C.sul.I=200000,C.sil.I=100,R=100,D=2130 计算要求,对于1:100000的每次迭代,前一次迭代的C.sul.f用于当前迭代的C.sul.i。本质上 迭代1->C.sul.f1=C.sul.i+R*C.sil.i/1+R/D 迭代2->C.sul.f2=C.sul.f1+R*C.sil.i/1+R/D 迭代3->C.sul.f3=C.sul.f2+R*C.sil.i/1+R/D 迭代n->C.sul.fn=C.sul.fn-1+R*C.sil.i/1+R/D 我可以得到一些帮助,我将如何在R中构造这个脚本吗 谢谢你的帮助R中的迭代方程,r,math,equation,R,Math,Equation,我有一个方程C.sul.f=C.sul.I+R*C.sil.I/1+R/D,其中C.sul.I=200000,C.sil.I=100,R=100,D=2130 计算要求,对于1:100000的每次迭代,前一次迭代的C.sul.f用于当前迭代的C.sul.i。本质上 迭代1->C.sul.f1=C.sul.i+R*C.sil.i/1+R/D 迭代2->C.sul.f2=C.sul.f1+R*C.sil.i/1+R/D 迭代3->C.sul.f3=C.sul.f2+R*C.sil.i/1+R/D
提前感谢。这是问题的原型:
PS:注意,出于示例目的,我只计算了前5个值。对于您的情况,只需将1:5与1:100000进行交换。这是问题的原型:
PS:注意,出于示例目的,我只计算了前5个值。对于您的情况,只需将1:5与1:100000进行交换。niko使用Reduce有一个很好的解决方案,但对于您的示例和所有系列,我建议首先应用一点系列缩减,看看是否有一个简单的通用解决方案 更多的数学运算,更快的代码 在您的系列中,唯一的递归元素实际上是添加到上一个元素的常量值。如果你把它展开,它会变得相当明显: C.sul.f1=C.sul.i+R*C.sil.i/1+R/D C.sul.f2=C.sul.i+R*C.sil.i/1+R/D+R*C.sil.i/1+R/D C.sul.f3=C.sul.i+R*C.sil.i/1+R/D+R*C.sil.i/1+R/D+R*C.sil.i/1+R/D 一般而言: C.sul.fn=C.sul.i+n*R*C.sil.i/1+R/D 因此,对于最有效的功能,我建议:
c_sul_i <- 200000
c_sil_i <- 100
R <- 100
D <- 2130
C.sul.fn <- function(n) {
return(C.sul.i + n * (R * C.sil.i) / (1 + R/D) )
}
sapply(1:100000,C.sul.fn)
niko使用Reduce有一个很好的解决方案,但对于您的示例和所有系列,我建议首先应用一点系列的Reduce,看看是否有一个简单的通用解决方案 更多的数学运算,更快的代码 在您的系列中,唯一的递归元素实际上是添加到上一个元素的常量值。如果你把它展开,它会变得相当明显: C.sul.f1=C.sul.i+R*C.sil.i/1+R/D C.sul.f2=C.sul.i+R*C.sil.i/1+R/D+R*C.sil.i/1+R/D C.sul.f3=C.sul.i+R*C.sil.i/1+R/D+R*C.sil.i/1+R/D+R*C.sil.i/1+R/D 一般而言: C.sul.fn=C.sul.i+n*R*C.sil.i/1+R/D 因此,对于最有效的功能,我建议:
c_sul_i <- 200000
c_sil_i <- 100
R <- 100
D <- 2130
C.sul.fn <- function(n) {
return(C.sul.i + n * (R * C.sil.i) / (1 + R/D) )
}
sapply(1:100000,C.sul.fn)
如果您想要一个递归答案,您可以尝试定义一个用户函数f,如下所示
f <- function(n) {
if (n==1) return(c.sul.i + (R * c.sil.i) / (1 + R/D))
f(n-1) + (R * c.sil.i) / (1 + R/D)
}
出于效率考虑,使用数学解决方案来回答是最好的。如果您想得到递归答案,可以尝试定义如下的用户函数f
f <- function(n) {
if (n==1) return(c.sul.i + (R * c.sil.i) / (1 + R/D))
f(n-1) + (R * c.sil.i) / (1 + R/D)
}
对于效率考虑,使用数学解决方案的答案是最好的。锐利的思考,但是对于更多的性能考虑Cul-Suli i+1:N*R*CySLIII/1 +R/D,这是完全矢量化的。谢谢您的响应@ SirTain!敏锐的思维,但对于更多的性能考虑Cul-Suli i+1:N*R*CySLIII/R+R/D,这是完全矢量化的。谢谢您的响应@ SirTain!感谢您的回复@nikoThank you的回复@nikoThank you@ThomasIsCoding的后续回复。感谢@ThomasIsCoding的后续回复。