这个程序是用二分法,请问哪里错了呢?

2025-06-22 01:13:23
推荐回答(1个)
回答1:

首先你的y1没有初始化,其次,不知你的f函数计算的是什么,大致给改了一下

#include 
#include 
#include 
float f(float x)
{
    return 2*pow(x,3)-4*pow(x,2)+3*x-6;
}
int main()
{
    float x1=-10,x2=10,x0,y1,y2,y0;
    do
    {
        x0=(x1+x2)/2;
        y0=f(x0);
        if(y0>0)///////////////////
        {
            x2=x0;
            //y2=y0;
        }
        else
        {
            x1=x0;
            //y1=y0;
        }
    }while(fabs(x2-x1)>=1e-6);///////////////////
    printf("%f\n",x0);
    getch();
    return 0;
}