function [x,niter]=aitken(phi,x0,tol,nmax,varargin) %AITKEN Estrapolazione di Aitken % [ALPHA,NITER]=AITKEN(PHI,X0) calcola un'appros- % simazione di un punto fisso ALPHA della funzione % PHI a partire dal dato iniziale X0 con il metodo % di estrapolazione di Aitken. 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. PHI puo' essere una inline % function, o una anonymous function, o una function % definita in un M-file. % [ALPHA,NITER]=AITKEN(PHI,X0,TOL,NMAX) consente di % definire la tolleranza sul criterio d'arresto ed % il numero massimo di iterazioni. if nargin == 2 tol = 1.e-04; nmax = 100; elseif nargin == 3 nmax = 100; end x = x0; diff = tol + 1; niter = 0; while niter < nmax & diff >= tol gx = feval(phi,x,varargin{:}); ggx = feval(phi,gx,varargin{:}); xnew = (x*ggx-gx^2)/(ggx-2*gx+x); diff = abs(x-xnew); x = xnew; niter = niter + 1; end if (niter==nmax & diff>tol) fprintf([' Il metodo non converge nel numero',... ' massimo di iterazioni\n ']); end return