function gen=Erfen(f,a,b,tol)
%f为方程f(x)=0中的f(x)
%如果变量缺省,误差精度为
if (nargin==3)
tol=0.5e-5;
end
gen=compute_gen(f,a,b,tol);
function r=compute_gen(f,a,b,tol)
%计算函数左端点函数值
fa=subs(f,a);
%计算右端点函数值
fb=subs(f,b);
%计算区间中点函数值
fzd=subs(f,(a+b)/2);
%sub函数 R=subs(s,old,new);
if(fa*fzd>0)
t=(a+b)/2;
%采用递归方法
r=compute_gen(f,t,b,tol);
else
if(fa*fzd==0)
r=(b+a)/2;
else
if(abs(b-a)<=tol)
r=(b+3*a)/4;
else
s=(a+b)/2;
r=compute_gen(f,a,s,tol);
end
end
end
- 1
- 2
- 3
前往页