二分法,最简单的,貌似没要求....
function [x, count] = bisection(fx,a,b,error,count)
if(nargin == 4)%调用时不需要输入count,计数用,用户不需要知道
count = 1;
end
x = (a+b)/2;
fa = subs(fx,a);
f2 = subs(fx,x);
err = b - a;
if(err > error && f2 ~= 0)
if( fa*f2 < 0)
[x, count] = bisection(fx,a,x,error,count+1);
else [x, count] = bisection(fx,x,b,error,count+1);
end
end
end
迭代法
function [x0, count] = iteration(fx,a,error,n,count)
%n为最大迭代次数
if(nargin == 4)
count = 1;
end
x0 = subs(fx,a);
if(abs(x0-a) > error && count <= n)
[x0, count] = iteration(fx,x0,error,n,count+1);
end
end
加权加速迭代法
function [x0,count] = acceleration(fx,a,error,n,L,count)
%调用只需accele(fx,a,error,n)即可
if