2010-07-14 5 views
2

Я создаю фиктивные данные для приложения и хочу имитировать экспоненциальный рост, а также узнать конечный номер. Итак, вот предложение:Учитывая «T, общее число» и «N, количество дней», как разделить T на N так, чтобы n1 + n2 ... равнялось T в экспоненциальной кривой?

  • Предоставлено T = 2000. Общее количество событий «будет считаться».
  • И N = 7. Дни недели: 7.days.ago.day..Time.now.day.
  • Что такое простейшая формула для деления T на N так, что мы создаем экспоненциальную кривую?

Как вы идти о решении этого, так что я могу узнать, как вы имеете дело с практическими проблемами математики? Я хотел бы применить эту формулу для 3-х различных T х лет: 2000, 1000 и 400.

Update

Благодаря Матиас 'формулы, я пришел с этим:

# 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] 

Спасибо!

ответ

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)
Надеюсь, что это поможет!

Смежные вопросы