function [x,niter]=ptofisso(phi,x0,tol,kmax)
%PTOFISSO Metodo di punto fisso
%   [ALPHA,NITER]=PTOFISSO(PHI,X0) calcola un'approssimazione di un punto
%   fisso ALPHA della funzione PHI a partire dal dato iniziale X0. Il metodo 
%   si arresta dopo 100 iterazioni o dopo che il valore assoluto della differenza 
%   fra due iterate consecutive e' minore di 1.e-04. 
%   [ALPHA,NITER]=PTOFISSO(PHI,X0,TOL,KMAX) consente di definire la tolleranza
%   sul criterio d'arresto ed il numero massimo di iterazioni. 

%   A.Quarteroni,F.Saleri, Introduzione al Calcolo Scientifico, 2004

if nargin == 2
    tol = 1.e-04; kmax = 100;
elseif nargin == 3
    kmax = 100;
end

x = x0; diff = tol + 1;
niter = 0;
while niter <= kmax & diff >= tol
    xnew = feval(phi,x);
    diff = abs(xnew-x);
    x = xnew;
    niter = niter  + 1;
end

return