我有一个快速的问题,关于如何加速无穷级数的计算。 这只是其中一个例子: arctan(x) = x - x^3/3 + x^5/5 - x^7/7 + ....
假设您有一些允许您处理大数的库,那么第一个明显的解决方案是开始添加/减去序列的每个元素,直到达到某个目标 N。
您还可以预先保存 X^n,这样对于每个下一个元素,您可以执行 lastX*(x^2) 而不是计算 x^(n+2)
但总的来说,它似乎是非常顺序的任务,您可以做什么来利用多个处理器(8+)??。
非常感谢!
编辑: 我需要计算从 100k 到 1m 的迭代次数。这是基于 C++ 的应用程序,但我正在寻找抽象的解决方案,所以没关系。 感谢回复。
最佳答案
您需要分解问题以匹配您拥有的处理器或线程的数量。在您的情况下,例如,您可以让一个处理器处理偶数项,而另一个处理器处理奇数项。不是预先计算 x^2 并使用 lastX*(x^2),而是使用 lastX*(x^4) 来跳过所有其他项。要使用 8 个处理器,请将前一项乘以 x^16 以跳过 8 项。
附言大多数时候遇到这样的问题时,值得寻找一种更有效的方法来计算结果。在大多数情况下,更好的算法能战胜更大的马力。
关于c++ - 无限级数的并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3886287/