二分法求零点,为什么运行不到结果?求大神指点,感激万分!!
#include<stdio.h>#include<math.h>
int main()
{
float F(float);
float a,b,c;
printf("please enter the possible area:");
scanf("%f%f",&a,&b);
printf("\n");
c=(a+b)/2;
for(;c>0.000001;)
{
if(F(a)*F(c)<0)
b=c;
else
a=c;
c=(a+b)/2;
}
printf("the approximate zero is %10.5f\n",c);
return 0;
}
float F(float x)
{
float t;
t=x*x-3;
return(t);
}







但是F(x)=X*X-3的初始的a b我是赋值1和2的,也就是说c在运行过程中一直是正直,但是程序运行就是输出了换行符
,大神在帮帮我把


大神,我第一次运行的时候输入的值是1 2,运行过程中c的值应该恒大于0,但是就是出现了死循环。。。我觉得应该当区间被分割到某一程度时,c的值就能近似代替x的值,也就是 根号3
这次您眼神不好了,我在8楼已经说运行出来了,我用float觉得,接下来算超越方程零点的时候精确度够用了,
,所以谢谢大神啦
。但是还有最后一个疑问fabsf(F(c))>0.000001,这个地方是用来判断函数值的绝对值,但是在方程x*x=3中,F(c)的绝对值不会比0.000001要小啊,为什么还能跳出循环?
