二分法求方程的根

二分法的原理其实还是零点定理的应用。
首先必须要有一个初试区间,而且区间端点的函数值异号,由零点定理可以知道在次区间内至少存在一个零点。然后取区间的中间值,这样就把一个区间分成了两个区间,再运用零点定理判断零点存在与哪个区间中,再在含有零点的区间取中间值,就以这样一次一次的取中间值,判断零点是否存在,当区间两端点的差的绝对值符合精度是即可停止。

//————————————————————
//二分法求近似的方程根
#include 
#include 

double  funY(double x);
int main(){
    double x1 = -10, x2 = 10;//初试区间[-10,10]
    double x;
    double y1, y2,y;
    y1 = funY(x1);
    y2 = funY(x2);
    while (y1*y2 < 0 && fabs(x2 - x1) >= 1e-6)  {
        x = (x1 + x2) / 2;
        y = funY(x);
        if (y*y1 < 0) {
            x2 = x;
            y2 = y;
        }   
        else if (y*y2 < 0) {
            x1 = x;
            y1 = y;
        }
        else if (y == 0) 
            break;  
        printf("%lf\n", x);
    }

}

double  funY(double x) {
    double y;
    y = 2 * x*x*x - 4 * x*x + 3 * x - 6;
    return y;
}

你可能感兴趣的:(C/C++)