二分法解方程
#include <stdio.h>#include <stdlib.h>
#include "math.h"
main()
{
float a=1,b=1.8,c=0.15,d=0.65,m=0.5,n=1.25,f,f1,f2,x; //a,b,c,d分别是三次方程的系数和常数; 区间是(m,n);
while(1)
{
f1=a*m*m*m+b*m*m+c*m+d;
f2=a*n*n*n+b*n*n+c*n+d;
x=(m+n)/2;
f=a*x*x*x+b*x*x+c*x+d;
if(f==0)
{
printf("%f",x);
break;
}
if(f*f1<0)
n=x;
if(f*f2<0)
m=x;
if(fabs(n-m)<(1e-6))
{
x=(m+n)/2;
printf("%f",x);
break;
}
}
}