C语言题目:求正弦函数值。
已知求正弦sin(x)的近似值的多项式公式为:sin(x)=x-x3/3!+x5/5!-x7/7!+……+(-1)nx2n+1/(2n+1)!+…编写程序,要求输入x(单...
已知求正弦 sin(x) 的近似值的多项式公式为:
sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)! + …
编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。
我的程序设计如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int damn(int a,int b)
{for(b=1;a>0;--a)
b*=a;
return(b);}
main()
{
float x,y,z;int n,o;
scanf("%f %f",&x,&z);
y=x;o=2*n+1;
for(n=1;fabs(sin(x)-y)>=z;n++)
y=y+((pow(-1,n))*(pow(x,o))/(damn(n,o)));
int _isnan(double y);
printf("%f\n",y);
system("pause");
}
输入1.57079 0.000001后,输出结果是-1.#IND00,求各位高手帮帮忙呀,谢谢啦。。
发错了,我的程序设计应该是如下的:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int damn(int a,int b)
{for(b=1;a>0;--a)
b*=a;
return(b);}
main()
{
float x,y,z;int n,o;
scanf("%f %f",&x,&z);
y=x;
for(n=1;fabs(sin(x)-y)>=z;n++)
y=y+((pow(-1,n))*(pow(x,2*n+1))/(damn(n,2*n+1)));
printf("%f\n",y);
system("pause");
}
求解,谢谢哈。。。。。 展开
sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)! + …
编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。
我的程序设计如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int damn(int a,int b)
{for(b=1;a>0;--a)
b*=a;
return(b);}
main()
{
float x,y,z;int n,o;
scanf("%f %f",&x,&z);
y=x;o=2*n+1;
for(n=1;fabs(sin(x)-y)>=z;n++)
y=y+((pow(-1,n))*(pow(x,o))/(damn(n,o)));
int _isnan(double y);
printf("%f\n",y);
system("pause");
}
输入1.57079 0.000001后,输出结果是-1.#IND00,求各位高手帮帮忙呀,谢谢啦。。
发错了,我的程序设计应该是如下的:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int damn(int a,int b)
{for(b=1;a>0;--a)
b*=a;
return(b);}
main()
{
float x,y,z;int n,o;
scanf("%f %f",&x,&z);
y=x;
for(n=1;fabs(sin(x)-y)>=z;n++)
y=y+((pow(-1,n))*(pow(x,2*n+1))/(damn(n,2*n+1)));
printf("%f\n",y);
system("pause");
}
求解,谢谢哈。。。。。 展开
1个回答
展开全部
你要把o=2*n+1放在循环内部。你的程序中o始终是个系统默认的值,而且应该是个很大的负数。
追问
那应如何改正呢?
追答
把o=2*n+1放在循环内部就好了。我把你的求阶乘的函数稍微改动了一下,你的也没错,我只是按照我的习惯来的。
下面是我改过的代码:
#include
#include
#include
int damn(int a)
{
int b = 1;
for(b=1;a>0;--a)
b*=a;
return(b);
}
int main()
{
float x,y,z;int n,o;
scanf("%f %f",&x,&z);
y=x;
for(n=1;fabs(sin(x)-y)>=z;n++)
{
o=2*n+1;
y=y+((pow(-1,n))*(pow(x,o))/(damn(o)));
}
int _isnan(double y);
printf("%f\n",y);
system("pause");
return 0;
}
按照你的输入,结果应该是1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询