给定“T,总数”和“N,天数”,如何将T除以N,使得n1 + n2 ...等于指数曲线中的T?

时间:2010-07-14 03:47:08

标签: ruby time formula

我正在为应用创建虚拟数据,并希望在知道最终数字的同时模拟指数增长。所以这是提案:

  • 给定T = 2000.事件发生的“计数”总数。
  • N = 7.星期几:7.days.ago.day..Time.now.day
  • T除以N以使我们创建指数曲线的最简单公式是什么?

如何解决这个问题,以便我可以学习如何处理实际的数学问题?我想将此公式应用于3个不同的T:2000,1000和400.

更新

感谢Mathias的公式,我提出了这个:

# get "r"
# in math
x(t) = (1 + r) ^ t
x(7) = (1 + r) ^ 7 = 2000 # final value
r = (2000 ^ (1/7)) - 1 # solve for r
# in ruby
r = 2000**(1.0/7.0) - 1 = 1.96193629594517

# check
# in math
x(7) = (1 + r) ^ 7 = (1 + 1.96193629594517) ^ 7
# in ruby
(1 + 1.96193629594517)**7
#=> 1999.99999999998

# build curve
values = (1..7).inject([]) { |array, i| array << (1 + r)**i }
values = [2.96193629594517, 8.77306662123741, 25.9852644521882, 76.96669794067, 227.970456209519, 675.233968650155, 2000.0]

谢谢!

1 个答案:

答案 0 :(得分:4)

如果我理解你的问题,你有一个跟随指数增长的过程,你知道最终值X,并且你是以离散的时间间隔观察过程。
当减少到离散的时间间隔时,指数增长作为几何级数前进,即
X(t + 1)= X(t)*(1 + r),其中r是增长率 为了推断增长,您需要知道起始值或速率。我假设你有X(0),初始值。在那种情况下,
X(T)= X(0)*(1 + r)^ T
你可以在r中解决,增长率: (1 + r)=(X(T)/(X(0))^(1 / T)
希望这有帮助!