计算Ruby中的几何级数

时间:2011-12-30 09:27:22

标签: ruby math

在Ruby中计算几何级数的最佳方法是什么?

是否有可用的内置方法?

我应该使用一些数学宝石吗?

或者我应该实现自己的小功能?

3 个答案:

答案 0 :(得分:2)

假设你只是想要值而不是某种分数显示,它就像创建一个取初始值的函数一样简单(1作为合理的默认值),进度比率,至少在我的例如 - 您希望获得的渐进序列中有多少元素。

def geo_prog(a = 1, r, n)
  (0...n).map { |e| a * r ** e }
end

答案 1 :(得分:2)

我认为任务不够复杂,无法期待外部库。

我觉得这可能比rankrejoined的答案更有效:

def geo_prog a, r, n
    (n - 1).times.inject([a]){|a| a << a.last * r}
end

答案 2 :(得分:0)

通过几何级数,我认为你的意思是一个序列 (注意我使用^来表示指数)

a*r^0 + a*r^1 + a*r^2 + ... + a*r^n

一个真实的例子可能是a = 10 r = 0.5,它会给我们

10 + 5 + 2.5 + 1.25 + ...

如果进展趋于一个值(即它收敛)你可以用一个非常好的公式计算该值

a / (1 - r)

然而情况并非总是如此,有时它可能不会收敛,或者您可能只希望进行10次迭代。在这种情况下,您可以使用。

a*(1 - r^(n+1)) / (1 - r)

另一方面,添加可能有帮助的是,当r