是否有一种有效的方法来计算以下系列而没有循环?
1/a + 1/(a+b) + 1/(a+2b) + 1/(a+3b) + ... + 1/(a+k*b)
我正在寻找数学优化。
谢谢!
答案 0 :(得分:1)
以求和符号写出来:
将分子和分母乘以1/a
。
取分子的1/a
并将其从总和中取出,因为它是常数。
分发分母的1/a
重新定义,以便对数学中不那么精通的人c=b/a
完全清楚:
现在你有了一般表格。这个形式相同,正如@sawa同样指出的那样(但我个人还没有检查过他的形式和我的等同),
由于我们定义了c=b/a
,因此将其替换为
不幸的是,这是我们能走的最远,除非你能保证a/b
永远是一个整数,我怀疑你能保证。
作为回答,不,你最好使用循环。此外,我怀疑你可能在这里过早优化;使用像gprof
这样的分析器来找出真正的瓶颈所在的位置,而不是旨在修复"显而易见的" /有吸引力的解决方案。
请注意,我应该使用i
而不是k
来表示不同的变量,而是使用k
来代替{{1} },以保持与您的命名一致。 (也就是说,您的n
是我的k
。)但是,我很懒,不能再回头看看所有这些公式。
答案 1 :(得分:0)
如果您需要为符号数学计算真正优化的东西,请尝试参考Wolfram Mathematica API或等效程序(我认为没有那么多支持符号计算,优化和API支持)。
然而,差异大致与在ram中访问数据(您可以认为很快)和通过索引访问数据库中的数据之间的差异相同。第二个选项可能比第一个选项快数千倍。我真的尝试过使用Ado.net DataSet来对付真正的MySQL数据库。第二个可以真的,真的更快。
答案 2 :(得分:0)
我没有进行计算,但是要求Wolfram Alpha(正如Revious建议的那样)返回结果: