Sine的简单近似

时间:2016-11-25 12:33:41

标签: c sin

我正在寻找正弦的近似值,该值在x == 0x == 90x == pi/2是正确的,否则在5%以内。

我没有查找表的空间。

4 个答案:

答案 0 :(得分:10)

您似乎可以使用Bhaskara I's sine approximation formula

float x;
float sinx = 4 * x * (180 - x) / (40500 - x * (180 - x));

错误保持在2%以内。

非常快,可以(手动)进行优化。

答案 1 :(得分:5)

由于sin的导数cos永远不会超过1,而5%是1/20,因此具有20 * pi / 2 = 32点的查找表将满足您的要求。你确定你甚至不能保留RAM的32个字节来存储它吗?

答案 2 :(得分:1)

我能想到的唯一方法是使用Taylor/Maclaurin Expansions

这些形成一个多项式,表示对函数的不断改进的近似。

通常,您可以通过泰勒系列选择要近似的函数值。

例如x = 0弧度sin(x) = x - x^3 / 3! + x^5 / 5!左右。该系列是无限的,你所包含的术语越多,你就越接近真正的价值。

我建议您可能必须在“方便”的地方(30,60,45,90度)形成几个泰勒扩展。然后使用角度最接近的函数。

答案 3 :(得分:0)

快速线性拟合。

1.00003 x - 0.000312267 x^2 - 0.165537 x^3 - 0.00203937 x^4 +  0.010286 x^5 - 0.000961693 x^6

此最大误差为3%。