C正弦(x)近似中的误差
我试图用泰勒级数计算Sin(x)的值,即:x-x^3/3+x^5/5! 我尝试的是这个代码,但它给了我一些错误C正弦(x)近似中的误差,c,series,C,Series,我试图用泰勒级数计算Sin(x)的值,即:x-x^3/3+x^5/5! 我尝试的是这个代码,但它给了我一些错误 int n; int factorial; float sum=0; float angle; int sign=1; int i,j; printf("Please Enter angle in degrees:\n"); scanf("%f",&angle); angle=angle*3.14/180; printf("Please Enter Number of te
int n;
int factorial;
float sum=0;
float angle;
int sign=1;
int i,j;
printf("Please Enter angle in degrees:\n");
scanf("%f",&angle);
angle=angle*3.14/180;
printf("Please Enter Number of terms:\n");
scanf("%d",&n);
for (i=1;i<=n;i++){
factorial=1;
for (j=1;j<=(2*i-1);j++)
factorial=factorial*j;
sum=sum+sign*(pow(angle,j)/factorial);
sign*=-1;
}
printf("Sum up to %d terms is %f",n,sum);
intn; 整数阶乘; 浮点数和=0; 浮动角; int符号=1; int i,j; printf(“请输入角度,单位为度:\n”); 扫描频率(“%f”和角度); 角度=角度*3.14/180; printf(“请输入条款编号:\n”); scanf(“%d”和“&n”); 对于(i=1;i关闭1
保持一致,则使用<代码>浮点函数,如<代码> POWF(角度,j)< /code > -注意<代码> f < /code >太大了j
// sum=sum+sign*(pow(angle,j)/factorial); sum=sum+sign*(pow(angle,j-1)/factorial);
建议更好地近似pi#define MY_PI 3.1415926535897932384626433832795 // angle=angle*3.14/180; angle *= MY_PI/180;
在使用<代码>浮标< /代码>中没有实际值考虑“代码>双< /代码>。如果代码要与<代码>浮标
提示:不要每次从1开始重新计算项的阶乘,而是从上一个项继续计算//psuedo code term = -x*x/(2i)/(2i+1)*previous_term
double sum=0.0; 双x2=x_弧度*x_弧度; 双项=x_弧度;
对于(unsigned i=1;i碰巧,你使用python吗?你真的应该用浮点运算,最好是双精度运算。特别是,你要把整型参数传递给需要双精度运算的函数,并依靠编译器根据函数声明中的信息为你转换参数。这样做更清楚e数据类型显式。double sum = 0.0; double x2 = x_radians * x_radians; double term = x_radians; for (unsigned i = 1; i <= terms; i++) { sum += term; term *= -x2 / ((2 * i) * (2 * i + 1)); }