function [x,step,flag] = iterazionisuccessive (phi,estremi,x0,maxit,tol)

% Uso:
%   [x,flag] = iterazionisuccessive (phi,estremi,x0,maxit,tol)
%
% Dati di ingresso:
%   phi: funzione di punto fisso;
%   estremi: vettore riga con componenti gli estremi "a", "b" di integrazione;
%   x0: punto iniziale in [a,b] 
%   max: numero intero positivo (numero massimo di iterazioni).
%   tol: numero reale positivo (tolleranza step).
%
% Dati di uscita:
%   x: vettore delle iterazioni successive.
%   flag: 0 uscita senza successo, 1: uscita con successo. 


if maxit <=0, x=NaN; flag=0; return; end
if not(maxit == floor(maxit)), x=NaN; flag=0; return; end
a=estremi(1); b=estremi(2);
if a > b, x=NaN; flag=0; return; end
if not(x0 >= a & x0 <=b), x=NaN; flag=0; return; end
x=x0;
flag=0;
step=[];
for k=1:maxit
    x(end+1)=feval(phi,x(end));
    if not(x(end) >= a & x(end) <=b), return; end
    step(end+1)=abs(x(end)-x(end-1));
    if step(end) <= tol, flag=1; return; end
end



