c语言编程练习题:7-29 二分法求多项式单根

简介: c语言编程练习题:7-29 二分法求多项式单根

#include <stdio.h>

double fv(double a3,double a2,double a1,double a0,double x){

   double value = a3*x*x*x + a2*x*x + a1*x + a0;

   return value;

}


double solve_equation(double a3,double a2,double a1,double a0,double a,double b){

       double mid;

       double fa,fb,fm;

       fa = fv(a3,a2,a1,a0,a);

       fb = fv(a3,a2,a1,a0,b);

       if (fa==0){return a;}

       if (fb==0){return b;}

       while (fa*fb<0){

           fa = fv(a3,a2,a1,a0,a);

           fb = fv(a3,a2,a1,a0,b);

           mid = (a+b)/2;

           fm = fv(a3,a2,a1,a0,mid);

           //printf("%lf %lf %lf %lf %lf\n",a,b,fa,fb,fm);

           if (fm<=0.0001 && fm>=-0.0001){return mid;}

           else{

               if (fm*fb<0){a=mid;}

               if (fm*fa<0){b=mid;}

           }

       }

   while (fa*fb>0){return 9999999;}

 

}

int main(){

   double a3,a2,a1,a0,a,b;

   

   if (scanf("%lf %lf %lf %lf %lf %lf",&a3,&a2,&a1,&a0,&a,&b)!=0){

       //printf("%lf %lf %lf %lf %lf %lf\n",a3,a2,a1,a0,a,b);

       double r;

       r = solve_equation(a3,a2,a1,a0,a,b);

       printf("%.2lf",r);


   }else{

       printf("something wrong");

   }

   return 0;

}

目录
相关文章
|
2天前
|
存储 Serverless C语言
每天一道C语言编程(结构体的运用):这是一年的第几天?
每天一道C语言编程(结构体的运用):这是一年的第几天?
7 0
|
2天前
|
C语言
每天一道C语言编程(递归:斐波那契数,母牛的故事)
每天一道C语言编程(递归:斐波那契数,母牛的故事)
5 0
|
2天前
|
C语言
每天一道C语言编程(2^k进制数)
每天一道C语言编程(2^k进制数)
6 0
|
2天前
|
C语言
每天一道C语言编程(数组操作)
每天一道C语言编程(数组操作)
6 0
|
2天前
|
C语言
每天一道C语言编程(数字转字母,字母转数字)
每天一道C语言编程(数字转字母,字母转数字)
5 0
|
2天前
|
C语言
每天一道C语言编程(求PI)
每天一道C语言编程(求PI)
5 0
|
2天前
|
C语言 C++
每天一道C语言编程:(去掉:双斜杠注释,去掉空格)
每天一道C语言编程:(去掉:双斜杠注释,去掉空格)
4 0
|
2天前
|
C语言
每天一道C语言编程:Hanoi双塔问题
每天一道C语言编程:Hanoi双塔问题
11 0
|
2天前
|
C语言
每天一道C语言编程:求N以内的素数(普通方法+优化方法)
每天一道C语言编程:求N以内的素数(普通方法+优化方法)
6 0
|
2天前
|
测试技术 C语言
每天一道C语言编程:Cylinder(圆柱体问题)
每天一道C语言编程:Cylinder(圆柱体问题)
7 0