马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
function [x1]=secant(func,x0,x1,tol,n,xin)
%The secant method for solving the nonlinear equation f(x)=0
iter=0;
u=feval(func,x0,xin);
v=feval(func,x1,xin);
err=abs(x1-x0);
%disp('___________________________________________________________')
%disp('iter xn f(xn) f(xn+1)-f(xn) |xn+1-xn|')
%disp('___________________________________________________________')
%fprintf('%4.0d %12.6d %12.6d\n',iter,x0,u)
%fprintf('%4.0d %12.6d %12.6d %12.6f\n',iter,x1,v,v-u,err)
while(err>tol)&(iter<=n)&((v-u)~=0)
x=x1-v*(x1-x0)/(v-u);
x0=x1;
u=v;
x1=x; %在这个地方的x1值,目前当while循环全部运行完了才能得到一个值,如果我需要每次运行到这里就把x1输出如何进行?
v=feval(func,x1,xin);
err=abs(x1-x0);
iter=iter+1;
%fprintf('%2.0d %12.6d %12.6d %12.6d %12.6d\n',iter,x1,v,v-u,err)
end
if((v-u)==0)
disp('Division by zero')
end
if(iter>n)
disp('Method failed to converge')
end |