C语言编程求正弦 sin(x) 的近似值如题 谢谢了
已知求正弦sin(x)的近似值的多项式公式为:sin(x)=x-x3/3!+x5/5!-x7/7!+……+(-1)nx2n+1/(2n+1)!+…编写程序,要求输入x(单...
已知求正弦 sin(x) 的近似值的多项式公式为: sin(x) = x - x 3 /3! + x 5 /5! - x 7 /7!+ …… + (-1) n x 2n+1 /(2n+1)! + … 编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。 这个程序为什不对呢,正确的是什么 #include <stdio.h> #include <math.h> main(void) { float x,e,s,d,n; n=1; s=0; scanf("f%f%",&x,&e); d=fabs(s-sin(x)) while(d>e) s+=(pow(x,n))/(n!)-(pow(x,n+2))/((n+2)!); n+=4; printf("f%\n",&s); }
展开
1个回答
展开全部
你这程序存在很多语法错误例如单精度浮点格式符是%f,不是f%,求阶乘不能用!,下面是我的程序,你可以参考一下: #include <stdio.h> #include <math.h> int jiecheng(int x);//递归求阶乘 main() { double x,e,s,d; int n; n=0; s=0; printf("依次输入x和误差e\n"); scanf("%lf%lf",&x,&e); d=s-sin(x); if(d<0)d=-d; printf("%lf\n",d); while(d-e>0){ if(n==0)s+=x; else{ s+=(pow(-1,n))*x*(2*n+1)/jiecheng(2*n+1); d=s-sin(x); if(d<0)d=-d; } n++; } printf("%lg\n%lg",s,sin(x)); } long jiecheng(int x) { int y; if(x>1)return x*jiecheng(x-1); return 1; } 我用了双精度浮点,64位,但因为过程出现很多位小数,只要你设置的误差太小,依然会出现数据溢出,你可以尝试一下无符号双精度,或者设置其他条件限制
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询