2

我被要求在不使用任何数学库的情况下使用 C++ 计算 sin(x) 的值。我将如何通过他们获取一个条目(比如 2 弧度)并在 2 处给他们返回 sin 函数的值?

谢谢。

4

2 回答 2

7

一种选择是使用正弦的泰勒级数来获得近似值:

sin(x) = x - x 3 / 3!+ x 5 / 5!- x 7 / 7!+ x 9 / 9!- ...

如果您评估该多项式的前五或六项并且 x 很小,您可能会得到 sin x 的非常好的近似值。您可以通过尝试将其保持在 (-π, +π) 范围内来保持 x 较小。

有更好的方法可用。一个标准是使用CORDIC,这是一组经过优化以快速准确的方法。

希望这可以帮助!

于 2013-10-22T00:40:45.340 回答
1

您可以使用Taylor Series研究数值近似。不太具体,您可以阅读广义泰勒/麦克劳林系列

简而言之:

sin(x) = x − x^3/3! + x^5/5! − x^7/7! + x^9/9!

通常您可以将其扩展为几个术语,并且在合理的误差范围内。误差呈指数下降,因此即使是 4、5 或 6 个项,您也将获得准确的结果。术语越多,越准确。

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

于 2013-10-22T00:45:12.637 回答