math - 在 ruby 中,Gompertz函数

  显示原文与译文双语对照的内容

我不是数学家,但是我试图生成一系列的数字,当打印时,从x=0开始生成一个,曲线。 我想能够指定曲线的渐近线和长度。

维基百科表示公式是:

y ( t ) =ae^ {be^{ct} }

a 是上渐近线

b,c 是负数

沿x 轴设置位移( 平移图形到左或者右)

c 设置增长率( y 缩放)

e 是欧拉数( e = 2.718 28.。)

这就是我所拥有


def gompertz(asymptote, length)
 seq = (0..length) # these will be my y values
 seq.map do |t| 
 asymptote * Math::E ** # ae to the power of...
 (-1 * Math::E) ** # be, to the power of...
 (t * -1) # ct
 end
end

但是当我把数字从维基百科插图( 渐近线= 1,b = -4,c = -2 ),以及一长度的10,我得到这个:


gompertz(1, 10)
=> [2.718281828459045, 1.0184843989442722, 1.0003355189017822, 1.0000061442312291, 1.000000112535181, 1.0000000020611537, 1.0000000000377514, 1.0000000000006914, 1.0000000000000127, 1.0000000000000002, 1.0]

Obv,第一 plot 是 上面的渐近线 ! 我在这里发现了严重错误。 你能帮我?

时间: 作者:

看起来你是 exponentiating b的电源( t * -1 ) 。 你想要的是


b * (Math::E ** (t * -1) )

代替


(b * Math::E ** (t * -1) )

作者:
...