Matlab关于用二分法求零点附近的近似值问题

img

你好同学,代码供参考,思路都在注释里了:

clc;clear
y=@(x)x-exp(-x)*sin(x);
a=-1; b=1; n=8;%保留n位小数
while ( (b-a) > 5*10^(-n-1) )
    x = (b+a)*0.5; % 直接取半 
    if (y(a) * y(x) <= 0) 
        b = x; % 如果根在x左边 
    else
        a = x; % 否则肯定在右边
    end
end
fprintf('x=%.8f\n', x); 

最后得到:

x=-0.00000000

即根为0