计算不带cmath的sin 我被要求使用C++来计算Sin(x)的值,而不使用任何数学库。 我如何通过它们获取一个条目(比如说2弧度),并将sin函数的值返回到2

计算不带cmath的sin 我被要求使用C++来计算Sin(x)的值,而不使用任何数学库。 我如何通过它们获取一个条目(比如说2弧度),并将sin函数的值返回到2,c++,math,C++,Math,谢谢。一种选择是使用正弦的泰勒级数来获得近似值: sin(x)=x-x3/3!+x5/5!-x7/7!+x9/9!- 如果你计算这个多项式的前五项或六项,并且x很小,你可能会得到sinx的一个很好的近似值。通过将x保持在(-π,+π)范围内,可以使x变小 有更好的方法可用。其中一个标准是使用一套优化的快速准确的方法 希望这有帮助 您可以使用。不太具体的话,你可以阅读广义的 简言之: sin(x)=x− x^3/3!+x^5/5!− x^7/7!+x^9/9 通常您可以将其扩展为几个项,并使其在合

谢谢。

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

sin(x)=x-x3/3!+x5/5!-x7/7!+x9/9!-

如果你计算这个多项式的前五项或六项,并且x很小,你可能会得到sinx的一个很好的近似值。通过将x保持在(-π,+π)范围内,可以使x变小

有更好的方法可用。其中一个标准是使用一套优化的快速准确的方法


希望这有帮助

您可以使用。不太具体的话,你可以阅读广义的

简言之:

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

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


这是计算机计算三角函数、积分和许多其他复杂公式的一种方法。我想问你这个问题的人都是想让你了解计算机处理这些功能的方式。

这个问题似乎离题了,因为它是关于数学的,你为什么不能使用数学库?这就是他们的目的,他们可能会比你想出的任何东西都好。(一方面,它们可能是硬件加速的。)非常好,谢谢。我已经完全忘记了使用泰勒级数。泰勒级数是一种很差的函数近似方法,因为它们收敛速度慢,并且偏离中心点的误差越来越大。一个简单的核心
sin
实现就足够了。@ericspostpischil足够公平了……我改变了我的措辞。