不管是用两数值乘积的正负来判断,还是用b-a来判断,效果是一样的。
因为在你的这段程序中,始终保持了b>a。分析如下:
最开始时,在区间[0,3]内,a=0取最小值,b=3取最大值,且fa对应的是负数,fb对应的是正数;
找到中点,x=(a+b)/2,并求出fx,当fx为正时,说明方程的根在[a,x]中间,所以,要令b=x;
若fx为负,说明方程的根在[x,b]中间,那就要令a=x;
由第2步可知,始终都是b>a,当b与a越来越接近的时候,既可以认为(a+b)/2就是方程的根。
所以用b-a的差值做收敛判据是可以的。