Salve, avrei implementato il metodo di accelerazione di aitken con il seguente codice:
function[x,i] = aitken(x0,f,df,tol,max)
f0=feval(f,x0);
d=feval(df,x0);
x1=x0-(f0/d);
f1=feval(f,x1);
d=feval(df,x1);
x2=x1-(f1/d);
for i=1:max
x0=(x1*x1-x0*x2)/(2*x1-x2-x0);
if abs(x0-x2)<=tol*(1+abs(x2))
break
end
f0=feval(f,x0);
d=feval(df,x0);
x1=x0-(f0/d);
f1=feval(f,x1);
d=feval(df,x1);
x2=x1-(f1/d);
end
x=x2;
Nell'eseguirla sulla funzione y=(x-1)^3 * e^(x-1) con criterio d'arresto |x i+1 - x i | = tol · (1 + |x i |) e con tolleranze 1e-3, 1e-6, 1e-9 ottengo rispettivamente come numero di iterazioni richieste 4,5,5. Tuttavia con una tolleranza 1e-12 non ottengo nessun risultato, fermandosi al limite massimo di iterazioni. Qualcuno potrebbe aiutarmi a capire il perché? Grazie delle eventuali risposte.