我不是数学家,但我试图生成一系列的数字,当绘制的时候,会产生一条从x=0开始的冈珀兹曲线。我希望能指定这条曲线的渐近线和长度
维基百科说公式是:
y(t)=ae^{be^{ct}} 其中a是上渐近线 b,c是负数。 B设置沿x轴的位移(将图形转换为左或右) C设定增长率(y标度) E是欧拉数(e =2.71828.)
这就是我得到的,
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]第一个地块在渐近线上方!我这里出了什么大问题。你能帮上忙吗?
发布于 2014-01-15 17:20:55
看起来你在将b指数到幂(t * -1)。你想要的是
b * (Math::E ** (t * -1) )而不是
(b * Math::E ** (t * -1) )https://stackoverflow.com/questions/21143834
复制相似问题