function y=half(func,x1,x2,varargin) % half interval method % y=half('poly',1.0,2.0,varargin); if feval(func,x1,varargin{:})*feval(func,x2,varargin{:}) > 0 error('Invalid starting values.'); end iter=0 ; while abs(x1-x2)/2 >= 1.0e-9 iter=iter+1 ; x3=(x1+x2)/2; fprintf(1,'%d x3: %6.5e dx3: %2.1e \n', iter,x3,abs(x1-x2)/2); if feval(func,x1,varargin{:})*feval(func,x3,varargin{:}) < 0 x2=x3; else x1=x3; end end y=x3;