繁体   English   中英

使用MATLAB查找三角函数的Minimax多项式逼近

[英]Using MATLAB to find Minimax Polynomial Approximation of Trigonometric Functions

我正在尝试使用MATLAB中的remez交换算法找到正弦和余弦的极小多项式逼近。 因为我要为IEEE-754浮点实现正弦和余弦函数,所以需要精确到23位。

使用此处的链接(请参阅第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页)是如何确定的(2796021来自何处?)以及为什么要进行定义我们想以多项式的形式最终以sin9x)= x + kx ^ 3 + x ^ 5 * P(x ^ 2)结束。

改用firpm函数会更好吗(因为不推荐使用remez )?

谢谢您,所有帮助和指导,以及进行编辑以确保对我的问题的最佳答案,我们深表感谢。

我不会尝试开发自己的近似值。 更简单的是拿起《计算机近似》的副本,Hart等人。 一个好的大学图书馆应该有它。 23位大约是7个十进制数字,因此只需选择一个近似值即可为您提供所需的精度。 您可以选择简单的多项式逼近,也可以使用有理多项式,只要可以容忍除法,通常更好。

缩小范围确实是有道理的,实际上,我在自己的工具中选择了相同的范围(+/- pi / 4),因为这种选择范围特别容易使用。

编辑:(一个示例的用法可以在Hart中找到。)

在这里,我将找到sin(x)的近似值,其中x位于间隔[0,pi / 4]中。 我的目标是在该间隔内选择一个绝对精度至少为1.e-7的近似值。 当然,如果x的值为负,我们知道sin(x)是一个奇数函数,因此这是微不足道的。

我注意到,Hart中的近似值趋于采用sin(alpha pi x)的形式,其中x处于区间[0,1]中。 如果然后选择alpha = 1/2的近似值,那么我得到的近似值在选定的时间间隔内有效。 因此,对于区间[0,pi / 4]的近似值,我们寻找alpha = 1/4。

接下来,我将寻找一个表示其绝对精度至少为7位数左右的近似值,并且我将更喜欢使用有理多项式近似值,因为它们往往会更有效率。 向下浏览第118页的表格(我的Hart副本来自1978年),我发现α= 1/4的近似值适合该要求:索引3060。

这种近似形式为

sin(alpha*pi*x) = x*P(x^2)/Q(x^2)

因此,现在我转到提供SIN 3060系数的页面。在我的副本中,它位于199-200页上。 有5个系数,P00,P01,P02,Q00,Q01。 (请注意此处使用的某种非标准科学符号。)因此,P(分子多项式)中有3个项,而Q分母有2个项。 写出来,我得到这个:

sin(alpha*pi*x) = (52.81860134812 -4.644800481954*x^3 + 0.0867545069521*x^5)/ ...
    (67.250731777791 + x^2)

现在让我们在MATLAB中尝试一下。

x = linspace(0,pi/4,10001);
xt = x*4/pi; % transform to [0,1]
sine = @(x) (52.81860134812*x -4.644800481954*x.^3 + ...
     0.0867545069521*x.^5)./(67.250731777791 + x.^2);

max(abs(sin(x) -sine(xt)))
ans =
   1.6424e-09

plot(x,sin(x)- sine(xt),'-')

正弦逼近[0,pi / 4]的误差

请注意1e-9附加到y轴。

看起来这是在该特定时间间隔内对sin(x)逼近的最合理选择,尽管这提供了大约29位的精度,而不是您要求的23位。 如果您愿意选择其他范围缩小间隔,则可以节省一些术语,这可能会节省一些不必要的费用。

log2(max(abs(sin(x) -sine(xt))))
ans =
      -29.182

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM