用对分法求方程的根,可以运行,但是其结果出现无限个-0.162278
#include <stdio.h>#include <stdlib.h>
#include <math.h>
void main()
{
int flag;//定义整形变量
double a=-10.0,b=10.0,h=0.1,x1,y1,x2,y2,x,y;
x1=a;y1=x1*x1-6*x1-1.0;//根据公式计算y1
x2=x1+h;y2=x2*x2-6*x2-1.0;//根据公式计算x2,y2;
while(x1<=b)
{
if(y1*y2>0.0)//y1与y2同号
{
x1=x2;y1=y2;
x2=x1+h;y2=x2*x2-6*x2-1.0;
}
else//条件y1与y2异号
{
flag=0;
while(flag==0)
{
x=(x1+x2)/2;
if(fabs(x2-x1)>1e-6)
{
y=x*x-6*x-1.0;
if(y1*y<0.0)
{
x2=x;y2=y;
}
else
{
x1=x;y1=y;
}
flag==0;
}
else
{
printf("x=%f\n",x);
flag==1;
}
}
}
}
}