
用二分法求2*x*x*x-4*x*x+3*x-6=0在(-10,10)之间的根。(用c语言编写)能帮我看看我哪里错了吗??
#include<stdio.h>#include<math.h>doublef(doublex){return2*x*x*x-4*x*x+3*x-6;}intmain(...
#include<stdio.h>
#include<math.h>
double f(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
float a,b,c,d,e,g;
a=-10;
b=10;
do
{c=(a+b)/2;
d=f(c);
e=f(a);
g=f(b);
if (d=0)break;
if (d*e>0) a=c;
if (d*g>0) b=c;
}
while (fabs(a-b)>1e-5);
printf("%f\n",c);
return 0;
} 展开
#include<math.h>
double f(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
float a,b,c,d,e,g;
a=-10;
b=10;
do
{c=(a+b)/2;
d=f(c);
e=f(a);
g=f(b);
if (d=0)break;
if (d*e>0) a=c;
if (d*g>0) b=c;
}
while (fabs(a-b)>1e-5);
printf("%f\n",c);
return 0;
} 展开
2011-11-17
展开全部
if (d=0)
应该是d==0, 浮点运算判断值为0应该是(d<0.000001&&d>-0.000001)
d=0是一个赋值的语句,总是真的,所以总会break;死循环
应该是d==0, 浮点运算判断值为0应该是(d<0.000001&&d>-0.000001)
d=0是一个赋值的语句,总是真的,所以总会break;死循环
展开全部
已改,看注释
#include<stdio.h>
#include<math.h>
double f(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
double a,b,c,d,e,g; //改成double类型
a=-10;
b=10;
do
{
c=(a+b)/2;
d=f(c);
e=f(a);
g=f(b);
if (d >= 0.000001 && d <= 0.000009) //d=0是赋值
break;
if (d*e>0)
a=c;
else if (d*g>0)
b=c;
}
while (fabs(a-b)>1e-5);
printf("%lf\n",c); //要%lf
return 0;
}
#include<stdio.h>
#include<math.h>
double f(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
double a,b,c,d,e,g; //改成double类型
a=-10;
b=10;
do
{
c=(a+b)/2;
d=f(c);
e=f(a);
g=f(b);
if (d >= 0.000001 && d <= 0.000009) //d=0是赋值
break;
if (d*e>0)
a=c;
else if (d*g>0)
b=c;
}
while (fabs(a-b)>1e-5);
printf("%lf\n",c); //要%lf
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询