代码
function xc = bisect(f,a,b,tol)
% bisect 二分法求解
%f: a
if sign(f(a))*sign(f(b))>=0
error('f(a)f(b)<0 not satisfied!') % 停止运行
end
fa = f(a);
fb = f(b);
while (b-a)/2 > tol
c = (a+b)/2;
fc = f(c);
if fc == 0
break
end
if sign(fc)*sign(fa) < 0 % [a,c]是新的区间
b = c;
fb = fc;
else % [b,c]是新的区间
a = c;
fa = fc;
end
end
xc = (a+b)/2; % 新的中点就是最优估计
首先添加到路径(我是点运行后添加的)
然后如果要精确到小数点后超过四位的话,可以使用 format long
之后输入函数,然后enter
可以看到工作区已经有函数了
再输入 xc = bisect(f,a,b,c) ;enter就可以得到xc的值
clear;clc;清楚所有