首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby中的Gompertz函数

Ruby中的Gompertz函数
EN

Stack Overflow用户
提问于 2014-01-15 17:09:25
回答 1查看 153关注 0票数 1

我不是数学家,但我试图生成一系列的数字,当绘制的时候,会产生一条从x=0开始的冈珀兹曲线。我希望能指定这条曲线的渐近线和长度

维基百科说公式是:

y(t)=ae^{be^{ct}} 其中a是上渐近线 b,c是负数。 B设置沿x轴的位移(将图形转换为左或右) C设定增长率(y标度) E是欧拉数(e =2.71828.)

这就是我得到的,

代码语言:javascript
复制
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时,我得到如下结果:

代码语言:javascript
复制
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]

第一个地块在渐近线上方!我这里出了什么大问题。你能帮上忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-15 17:20:55

看起来你在将b指数到幂(t * -1)。你想要的是

代码语言:javascript
复制
b * (Math::E ** (t * -1) )

而不是

代码语言:javascript
复制
(b * Math::E ** (t * -1) )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21143834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档