你好同学,代码供参考,思路都在注释里了:
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