无穷级数的并行计算

kir*_*rbo 0 c++ multithreading series infinite

关于如何加速无限级数的计算,我只是有一个简单的问题.这只是其中一个例子: arctan(x)= x - x ^ 3/3 + x ^ 5/5 - x ^ 7/7 + ....

假设您有一些库可以让您使用大数字,那么首先明显的解决方案是开始添加/减去序列的每个元素,直到达到某个目标N.

你也可以预先保存X ^ n所以对于每个下一个元素而不是计算x ^(n + 2)你可以做lastX*(x ^ 2)

但总的来说,这似乎是非常顺序的任务,你可以做些什么来利用多个处理器(8 +)?

非常感谢!

编辑:我需要计算从100k到1m迭代的东西.这是基于c ++的应用程序,但我正在寻找抽象的解决方案,所以它应该无关紧要.谢谢你的答复.

Mar*_*som 7

您需要将问题解决以匹配您拥有的处理器或线程数.在您的情况下,您可以使用例如一个处理偶数项的处理器和另一个处理奇数项的处理器.不使用lastX*(x ^ 2)预先计算x ^ 2,而是使用lastX*(x ^ 4)来跳过其他每个术语.要使用8个处理器,请将前一个项乘以x ^ 16以跳过8个项.

PS在大多数情况下,当遇到这样的问题时,寻找一种更有效的计算结果的方法是值得的.更好的算法在大多数时候都会击败更多的马力.