【发布时间】:2012-02-15 21:05:43
【问题描述】:
我正在尝试使用 MATLAB 中的 remez 交换算法找到正弦和余弦的极小极大多项式近似值。需要精确到 23 位,因为我正在为 IEEE-754 浮点实现正弦和余弦函数。
使用此链接here(请参阅第 8 页至第 15 页),给出了使用 Mathematica 和 Maple 查找多项式的说明,但是,我不确定如何为 MATLAB 推断这些方法。
根据表 3,我需要使用 5 阶或 6 阶多项式来获得大约 23 位(小数点后)的精度。
我计划首先将所有传入的 theta 范围缩小到 -pi/4 到 +pi/4 之间,然后根据需要执行正弦或余弦函数(最终目标是实现 exp(i*x) = cos(x) + i*sin(x)。
我自己也许可以按照本文的说明进行操作,但我不知道如何将 remez 函数用于我的目的。另外,我不明白为什么作者使用方程(6)(第 9 页),我也不明白 k 的方程(第 11 页)是如何确定的(2796201 来自哪里?)以及为什么定义我们希望得到的多项式形式最终变为 sin9x) = x + kx^3 + x^5*P(x^2)。
使用 firpm 函数会更好吗(因为 remez 已弃用)?
谢谢您,我们非常感谢您提供所有帮助和指导,并进行编辑以确保为我的问题提供最佳答案。
【问题讨论】:
-
请注意,链接的论文已经在“优化浮点”部分中给出了 sin 在 [0,pi/4] 上的 minimax 近似值,因此您只需要在 [ 上找到 cos 的近似值0,pi/4],一切就绪。
-
那你建议我怎么做?
-
在上一个问题的答案中,您至少有一个指向 [0,pi/4] 上余弦的单精度极小极大近似值的良好指针:stackoverflow.com/questions/9265865/cosine-in-floating-point
标签: matlab math floating-point trigonometry