C语言作业:二分法求方程2x^3-4x^2+3x-6=0在(-10,10)之间的根 中遇到的问题

2025-03-01 06:19:32
推荐回答(1个)
回答1:

界限处理不对

对于区间[b, a]

初始

f(a) > 0

f(b) < 0

对于c=(a+b)/2

如果f(c)>0 则继续操作[b,c]

否则操作[c,a]

这个是二分法的核心

所以代码应该是

# include 
# include 
int main ()
{
double a,b,c,d;
a=10;
b=-10;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
while(fabs(d)>1e-8)
{
if(d<0)
{
b=c;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
}
        else
{
a=c;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
}
}
    printf("The answer is %lf",c);
return 0;
}