我被要求在不使用任何数学库的情况下使用C ++计算sin(x)的值。 我怎样才能接受他们的参赛作品(比如说2弧度),并在2时给他们一个sin函数的值?
感谢。
答案 0 :(得分:7)
一种选择是使用泰勒系列正弦来得到近似值:
sin(x)= x - x 3 / 3! + x 5 / 5! - x 7 / 7! + x 9 / 9! - ......
如果你评估这个多项式的前五个或六个项并且x很小,你可能会得到一个非常的sin x近似值。您可以通过尝试将x保持在范围(-π,+π)中来保持x小。
有更好的方法可供选择。一个标准是使用CORDIC,这是一组优化快速准确的方法。
希望这有帮助!
答案 1 :(得分:1)
您可以使用Taylor Series查看数值近似。不太具体,您可以阅读广义Taylor/MacLaurin Series
简而言之:
sin(x) = x − x^3/3! + x^5/5! − x^7/7! + x^9/9!
通常您可以将其扩展为几个术语,并且它在合理的误差范围内。错误会以指数方式下降,因此即使是4,5或6个术语,您也可以获得准确的结果。越多的术语越准确。
这是计算机评估三角函数,积分和许多其他复杂公式的一种方法。我想无论谁问你,都是为了让人们了解计算机处理这些功能的方式。