
function [x,fx,Er]=newton17(f,df,x0,tol=1e-6,maxit=20,sol=0)
%implementacja metody newtona z testem rzedu zbieznosci dla znanego rozwiazania
%f,df - wskazniki do funkcji obliczajacych f i df
%x0 - startowe przyblzienie
%tol - tolerancja dla war stopu |f(x)|<tol|f(x0)| (domyslnie 1e-6)
%maxit -max ilosc iteracji (domyslnie 20)
%sol - rozwianie
%OUTPUT
%x- przyblizone rozwiazanie
%Er macierz 5 kolumnowa z wierzem:
%   it, e, e/ep, e/ep^2, e/(ep^3) dla e=x(it)-sol ep=x(it-1)-sol 
%PRYKLAD
%[x,fx,Er]=newton17(@(x) x*x-4,@(x) 2*x,x0=4,1e-6,20,sol=2)
%[x,fx,Er]=newton17(@sin,@cos,x0=pi-1,1e-10,20,pi)
  x=x0;
  it=0;
  fx=f(x);
  tol=tol*abs(fx);
  Er=zeros(maxit,5);
  e=x-sol;
  wres=(abs(fx)>tol);
  wit=(it<maxit);
  warstop=wres&&wit;
  while(warstop)
   x=x-fx/df(x);
   fx=f(x);
   it++;
   ep=e;
   e=x-sol;
   if(nargin==6)
    Er(it,:)=[it,e,e/ep,e/(ep*ep),e/(ep*ep*ep)];
   end 
   wres=(abs(fx)>tol);
   wit=(it<maxit);
   warstop=wres&&wit;
  end
  if(nargin==6)
   Er=Er(1:it,:);
  end
end