#include<stdio.h>
#include<math.h>
double dichotomy(int a,int b,int c,int d);
double dichotomy(int a,int b,int c,int d)
{
double x0,x1,x2,fx0,fx1,fx2;
do
{
printf("Enter x1,x2:");
scanf("%lf,%lf",&x1,&x2);
fx1 = a*x1*x1*x1 + b*x1*x1 + c*x1 + d;
fx2 = a*x2*x2*x2 + b*x2*x2 + c*x2 + d;
}while(fx1 * fx2 > 0);
do
{
x0 = (x1 + x2)/2;
fx0 = a*x0*x0*x0 + b*x0*x0 + c*x0 + d;
if(fx0 * fx1 > 0)
{
x1 = x0;
fx1 = fx0;
}
else
{
x2 = x0;
fx2 = fx0;
}
}while(fabs(fx0) >= 1e-5);
return(x0);
}
int main()
{
int a,b,c,d;
double x;
printf("Enter a,b,c,d:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
x = dichotomy(a,b,c,d);
printf("x = %.2lf\n",x);
return 0;
}
运行结果:
Enter a,b,c,d:2,-4,3,-6
Enter x1,x2:-10,10
x = 2.00