
function [x,fx,wr,flag]=metodo_steffensen(f,x0,toll,maxit)
% metodo di Steffensen per la risoluzione di f(x)=0 

x=x0;
for k=1:maxit
    fx(k)=f(x(k));
    gx(k)=(f(x(k)+fx(k))-f(x(k)))/fx(k);
    if gx(k) == 0  % uscita scorretta per denominatore nullo
        wr(k)=NaN; flag=2; return;
    end
    s(k)=-fx(k)/gx(k);
    x(k+1)=x(k)+s(k);
    wr(k)=abs(s(k));
    
    if wr(k) <= toll % uscita per step sotto tolleranza
        flag=0; return;
    end
end

flag=1; % troppe iterazioni

