我正在寻找正弦的近似值,该值在x == 0
和x == 90
或x == pi/2
是正确的,否则在5%以内。
我没有查找表的空间。
答案 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%。