#include <stdio.h>
#include <math.h>
void main()
{
double eps,x,y,d,e;
int a=2,b=1,c=1,n;
printf(“请分别输入精确值eps和x的值\n”);
scanf(“%f %f”,&eps,&x);
do
{
b=-b;
a=a+2;
n=a-2;
while(n>1)
{
c=c*(n-1)/n;
n=0;
}
e=a-1;
d=pow(x,e)/a;
y=x+b*c*d;
}while(fabs(d>=eps));
printf(“%lf\n”,y);
}
求x-0.5*x^3/4 + 0.5*3/4*x^5/6 – 0.5*1/2*3/4*5/6*x^7/8……
这个有什么问题吗
#include <stdio.h>
void main()
{
double c,x,d,e,g,f;
printf(“求方程在(-10,10)上的根\n”);
x=10,d=10,c=0;
f=2*x*x*x-4*x*x+3*x-6;
e=2*d*d*d-4*d*d+3*d-6;
g=2*c*c*c-4*c*c+3*c-6;
while (f*g<0||e*g<0)
{
if(f*g<0)
{
d=c;
c=(c+x)/2;
}
else
{
x=c;
c=(c+d)/2;
}
}
while (f*g==0||e*g==0)
{
if(f==0)
printf(“该方程的根为:%f\n”,x);
else if (g==0)
printf(“该方程的根为:%f\n”,c);
else
printf(“该方程的根为:%f\n”,d);
}
}
这个用二分法求根,有什么问题
求高手指出错误,谢谢!
#include <math.h>
void main()
{
double eps,x,y,d,e;
int a=2,b=1,c=1,n;
printf(“请分别输入精确值eps和x的值\n”);
scanf(“%f %f”,&eps,&x);
do
{
b=-b;
a=a+2;
n=a-2;
while(n>1)
{
c=c*(n-1)/n;
n=0;
}
e=a-1;
d=pow(x,e)/a;
y=x+b*c*d;
}while(fabs(d>=eps));
printf(“%lf\n”,y);
}
求x-0.5*x^3/4 + 0.5*3/4*x^5/6 – 0.5*1/2*3/4*5/6*x^7/8……
这个有什么问题吗
#include <stdio.h>
void main()
{
double c,x,d,e,g,f;
printf(“求方程在(-10,10)上的根\n”);
x=10,d=10,c=0;
f=2*x*x*x-4*x*x+3*x-6;
e=2*d*d*d-4*d*d+3*d-6;
g=2*c*c*c-4*c*c+3*c-6;
while (f*g<0||e*g<0)
{
if(f*g<0)
{
d=c;
c=(c+x)/2;
}
else
{
x=c;
c=(c+d)/2;
}
}
while (f*g==0||e*g==0)
{
if(f==0)
printf(“该方程的根为:%f\n”,x);
else if (g==0)
printf(“该方程的根为:%f\n”,c);
else
printf(“该方程的根为:%f\n”,d);
}
}
这个用二分法求根,有什么问题
求高手指出错误,谢谢!
解决方案
30
第二个:
你while (f*g<0||e*g<0)循环中,并没有修改到f g e 这几个变量,所以循环会一直继续
你while (f*g<0||e*g<0)循环中,并没有修改到f g e 这几个变量,所以循环会一直继续
5
#include<stdio.h>
#include<math.h>
double eps,x,s,t,n;
int main()
{
double x;
printf(“请输入数x和精度eps:\n”);
scanf(“%lf %lf”,&x,&eps);
s=x,t=x;
for(n=1;fabs(t)>=eps;n++)
{
t=(-((2*n-1)/(2*n))*t*x*x)/(2*n+2);
s=t+s;
}
printf(“输出程序的近似值为:%lf”,s);
return 0;
}
#include<math.h>
double eps,x,s,t,n;
int main()
{
double x;
printf(“请输入数x和精度eps:\n”);
scanf(“%lf %lf”,&x,&eps);
s=x,t=x;
for(n=1;fabs(t)>=eps;n++)
{
t=(-((2*n-1)/(2*n))*t*x*x)/(2*n+2);
s=t+s;
}
printf(“输出程序的近似值为:%lf”,s);
return 0;
}