系列计算约为1 / a + 1 /(a + b)+ 1 /(a + 2b)+ 1 /(a + 3b)+ ... + 1 /(a + k * b)

时间:2014-04-12 01:29:37

标签: math mathematical-optimization scientific-computing

是否有一种有效的方法来计算以下系列而没有循环?

1/a + 1/(a+b) + 1/(a+2b) + 1/(a+3b) + ... + 1/(a+k*b)

我正在寻找数学优化。

谢谢!

3 个答案:

答案 0 :(得分:1)

  1. 以求和符号写出来:

    enter image description here

  2. 将分子和分母乘以1/a

    enter image description here

  3. 取分子的1/a并将其从总和中取出,因为它是常数。

    enter image description here

  4. 分发分母的1/a

    enter image description here

  5. 重新定义,以便对数学中不那么精通的人c=b/a完全清楚:

    enter image description here

  6. 现在你有了一般表格。这个形式相同,正如@sawa同样指出的那样(但我个人还没有检查过他的形式和我的等同),

    enter image description here

  7. 由于我们定义了c=b/a,因此将其替换为

    enter image description here

  8. 不幸的是,这是我们能走的最远,除非你能保证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建议的那样)返回结果:

\sum_{j = 0}^k 1 / (a + j b)