在没有cmath的情况下计算罪

时间:2013-10-22 00:38:38

标签: c++ math

我被要求在不使用任何数学库的情况下使用C ++计算sin(x)的值。 我怎样才能接受他们的参赛作品(比如说2弧度),并在2时给他们一个sin函数的值?

感谢。

2 个答案:

答案 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个术语,您也可以获得准确的结果。越多的术语越准确。

这是计算机评估三角函数,积分和许多其他复杂公式的一种方法。我想无论谁问你,都是为了让人们了解计算机处理这些功能的方式。