用二分法求下面方程在(一10,10)之间的根:
2x^3-4x^2+3x-6=0
#include<stdio.h>
#include<math.h>
int fun(float low,float high);
int main(){
float low=-10,high=10;
printf("方程2x^3-4x^2+3x-6=0在(一10,10)之间的根:");
fun(low,high);
return 0;
}
//递归函数
int fun(float low,float high){
float mid;
mid=(high+low)/2;
float f0=2*low*low*low-4*low*low+3*low-6;
float f=2*mid*mid*mid-4*mid*mid+3*mid-6;
if(fabs(f)<1e-5){ //求得解
printf("%f ",mid);
return 0;
}
float f1=2*high*high*high-4*high*high+3*high-6;
if(f0*f<0) //递归左半边
fun(low,mid);
if(f*f1<0) //递归右半边
fun(mid,high);
}