[Matlab] Accelerazione di Aitken

di il
2 risposte

[Matlab] Accelerazione di Aitken

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.

2 Risposte

  • Re: [Matlab] Accelerazione di Aitken

    Per non saper ne lenngere ne scrivere (e PRIMA di essere andato a guardare su Wikipedia), QUESTA
    
    if abs(x0-x2)<=tol*(1+abs(x2))
    
    mi pare ALQUANTO strana!!!
  • Re: [Matlab] Accelerazione di Aitken

    migliorabile ha scritto:


    Per non saper ne lenngere ne scrivere (e PRIMA di essere andato a guardare su Wikipedia), QUESTA
    
    if abs(x0-x2)<=tol*(1+abs(x2))
    
    mi pare ALQUANTO strana!!!
    Perché? Sarebbe la seguente condizione d’arresto:

    |x i+1 - x i | = tol · (1 + |x i |)
Devi accedere o registrarti per scrivere nel forum
2 risposte