c++ - 无限级数的并行计算

标签 c++ multithreading series infinite

我有一个快速的问题,关于如何加速无穷级数的计算。 这只是其中一个例子: 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/

相关文章:

c++ - 如何在 x64 Windows 下跟踪调用堆栈?

c++ - 运算符同时重载 = 和 []

ios - 由于未捕获的异常 'NSInternalInconsistencyException' 终止应用程序,原因 : 'Only run on the main thread!'

r - 如何在 R 中的文件夹中打开并存储一系列图像?

python - 有没有办法更快地运行此 Python 代码段?

python - 删除 pandas 系列名称

c++ - 内存引用错误示例

c++ - boost中有线程池实现吗?

Java:Runnable 和方法的执行。他们应该在哪里?这有关系吗?

c++ - 注册 XPCOM 组件时出现问题