在Ruby中计算几何级数的最佳方法是什么?
是否有可用的内置方法?
我应该使用一些数学宝石吗?
或者我应该实现自己的小功能?
答案 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