function [xv, n, flag] = fpfun (f, x0, toll, nmax)
%NEWTONFUN Metodo di punto fisso
%
% [xv, fxv, n, flag] = fpfun (f, x0, x1, toll, nmax)
%
% Dati di ingresso:
% f: funzione
% x0: valore iniziale
% toll: tolleranza richiesta per il valore assoluto
% della differenza di due iterate successive
% nmax: massimo numero di iterazioni permesse
%
% Dati di uscita:
% xv: vettore contenente le iterate
% n: numero di iterazioni effettuate
% flag: Se flag = 1 il rapporto incrementale si e' annullato
% in un'iterata

n = -1; % Inizializza il contatore n
flag = 0; % inizializza la variabile di seggnalazione
diff = toll+1; % Inizializza diff ad un valore fittizio > toll
% per poter entrare nel ciclo while iterativo
% Inizializza i vettori xv e fxv
xv = [x0];
% Ciclo iterativo del metodo
while (diff >= toll) && (n < nmax) && (flag ==0) % TEST DI ARRESTO
        x=feval(f,xv(end));
        xv = [xv; x]; % aggiunge al vettore la nuova iterata
        diff = abs(xv(end)-xv(end-1)); % Calcola il valore |x_{n+1}-x_n|
        n = n+1; % incrementa il contatore delle iterate
end