# include <iostream>
# include <math.h>
using namespace std;
int main()
{
int count=1;
double x;
double sine, num, dem, sign, term;
sine=0;
sign = 1;
cout << "Get x: ";
cin >> x;
num = x;
dem = count;
while ( count <= 10 )
{
term = (num/dem);
sine = sine + term*sign;
num = num*x*x;
count = count + 2;
dem = dem * count * (count-1);
sign = -sign;
}
cout << "The result is: ";
cout << sine;
return 0;
}
这是我在C ++中为sin x编写的代码,有人可以指出我的错误,因为程序没有计算出正确的值,我已经尝试调试了几个小时,但我的努力是徒劳的,我很感激你的帮助!谢谢!
* num = numerator,dem = denominator
答案 0 :(得分:0)
尝试使用20个术语,而不仅仅是10个术语。
由于当x很大时系列会收敛得更慢,所以在开始之前取x模2π。
答案 1 :(得分:0)
正弦等的多项式近似仅适用于窄范围的值。使用更多项,有效地使用更高次多项式,可以提高精度,但很快就会出现更多的舍入误差。
您需要选择一个窄域来使用该系列计算,然后将该范围之外的输入减少到具有相同正弦的范围内的值。
完成后,请尝试使用术语数。
答案 2 :(得分:0)
巴迪,你的节目是对的。检查你的常规计算罪(3.1416)保持弧度值。您获得的值是3.1416度..并且该公式适用于弧度