在评估柱谐波时,需要评估三角函数和,可能适用于大整数和。在 C 代码中执行此操作的最佳方法是什么?目前,我只是在角度进行评估,但我怀疑标准库在大参数上会失去准确性。我正在考虑使用双角公式等来递归地减少参数的大小,但我想知道这是否会导致更多的错误。
计算角度整数倍的正弦和余弦
计算科学
特殊功能
2021-11-28 09:52:24
3个回答
我以前遇到过类似的问题,但我更担心速度而不是准确性(请参阅此处的论文)。如果你的角度是一个结果,这在几何计算中经常出现,您可以使用Chebyshev 多项式,其定义为
并且可以使用三项递归关系快速稳定地评估
因此,对于您的问题,您可以评估在乘法和加法,只要你有.
如果你做它迭代,通过计算\和,浮动点误差不会因累积而爆发。这是因为转移矩阵是正交的。它是一个简单的旋转矩阵。
我更喜欢的过程,我也看到一些 FFT 实现使用它,也涉及三项递归,但比计算更稳定一点和从以前的前辈。(在Bulirsch/Stoer中对这些重复进行了很好的分析;请参见示例 2 和示例 3。查看不稳定性的几何方法是,尽管您一开始绘制了一个近似圆,但从长远来看,您实际上会失去控制.)
重复(实际上与 Bulirsch/Stoer 中的示例 4 相同,请参阅详细分析)如下进行:
我们有预先计算的常数
如前所述,它们的表现非常出色,尤其是在以下情况下很小。
其它你可能感兴趣的问题