wusemm 发表于 2010-4-7 13:12

matlab编程问题,急盼哪位帮帮忙

function =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

maigicku 发表于 2010-4-7 15:56

存到一个变量里就行了。。比如
x1=x;
x2(i)=x1;
i=i+1;
简单描述了一下。。

hhbhhy 发表于 2010-4-11 22:19

最简单的方法就是,把后面的分号去掉。
页: [1]
查看完整版本: matlab编程问题,急盼哪位帮帮忙