
 function [xv, phixv, step, flag] = punto_fisso (phix, x0, toll, maxit)

% Metodo del punto fisso
%
% Dati di ingresso:
%   phix:      	funzione
%   x0:     	valore iniziale
%   toll:   	tolleranza richiesta per il modulo
%     			della differenza di due iterate successive
%   maxit:   	massimo numero di iterazioni permesse
%
% Dati di uscita:
%   xv:     	vettore contenente le iterate
%   phixv:    	vettore contenente la valutazione di phi
%           	in xv
%   step: 		vettore contenente gli step
%   flag: 		0 la procedura è terminata correttamente
%         		1 eseguite piu' iter. di maxit.
%

% Inizializzazione a valori di default dell'output
xv(1)=x0;
flag=0;

for ii=1:maxit

    phixv(ii)=feval(phix,xv(ii)); % valuto phix in xv
    step(ii)=phixv(ii)-xv(ii); % calcolo step

    xv(ii+1)=phixv(ii);    % aggiornamento

	if abs(step(ii)) <= toll  % uscita per test di arresto verificato
        return;
    end
end

flag=1; %troppe iterazioni