function [y,flag]=secant(f,y0,y1,tol) % function [y,flag]=secant(f,y0,y1,tol) count=0; quit = 0; flag=0; y=y0 yold=y1 x=zeros(1,20); fyold=eval([f,'(yold)']) while quit ==0 fy=eval([f,'(y)']) diff=fy*(y-yold)/(fy-fyold) yold=y fyold=fy y=y-diff m=tol; if abs(y)>m m=abs(y) end; if abs(y-yold) < m*tol quit=1 end; count=count+1 x(count)=y; if count >19 quit=1; flag=1; end; end; x(1:count)