作业帮 > 综合 > 作业

C语言 二分法求方程

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 15:46:15
C语言 二分法求方程
#include <stdio.h>
#include <assert.h>

double f(double x)
{
    return 2 *x*x*x - 4 *x*x + 3 *x - 6;
}

//利用零点存在定律,二分求解方程
double dichotomy(double a,double b,double min_len,double (*f)(double)){
    assert(a <= b);
    assert(f(a) * (b) <= 0);
    if(f(a) == 0.0) return a;
    if(f(b) == 0.0) return b;
    double m;
    for (m = (a+b)/2; b - a > min_len && f(m) != 0.0; m = (a+b)/2) {
        f(a)*f(m) < 0 ? (b = m) : (a = m);
    }
    return m;
}

int main(){
    double a,b;
    scanf("%lf%lf",&a,&b);
    printf("%lf\n",dichotomy(a, b, 0.001, f));
}min_len是精确度