比如求一个非线性方程的一个根,要求保留精度为0.1。
大致代码如下:
while(y-x>EPSILON)
{
double m = x+(y-x)/2;
if( f(m) < 0 ) x=m;
else y=m;
}
问题是这个EPSILON怎么确定呢?
(我之前写的那个写错了。如果有误导了大家,这里表示歉意。)
我们要注意到x = 2.5499999999 , y = 2.5500000001 时,那么EPSILON就至少要比1e-11要小了。所以EPSILON可以尽量取得小, 复杂度是没问题的。