[MATLAB] Ordine di convergenza

Messaggioda alfiere15 » 26/02/2018, 17:26

Buon pomeriggio.
Sto implementando il metodo di Newton, di cui vi invio il codice.
Il professore mi ha detto di stimare, ad ogni passo del metodo, l'ordine di convergenza del metodo con la formula:
$ p = log(abs(x^(k+1) - alpha))/log(abs(x^(k) -alpha))$, con $alpha$ stima iniziale della radice.
L'ho inserita nel codice matlab ma qualsiasi funzione io metta, mi restituisce ordine di convergenza 1, mentre dovrebbe essere 2.
Dov'è l'errore?
Codice:
function [z, nit] = newton (f, g, x, eps, nmax)
nit = 0;
t = eps+1;
while (abs(t)>eps && nit<nmax)
    d = g(x);
    if d == 0
        disp ('error derivata');
    end
    t = - f(x)/d;
    z = x + t;
    p = log(abs(z-2))/log(abs(x-2));
    disp(p);
    nit= nit +1;
    x = z;
end
alfiere15
Average Member
Average Member
 
Messaggio: 199 di 508
Iscritto il: 07/08/2013, 11:45

Re: [MATLAB] Ordine di convergenza

Messaggioda feddy » 27/02/2018, 21:04

Prova a calcolare lo zero di una funzione nota con il tuo metodo e poi calcola $p$ con la stima sopra trovata (dove $\alpha$ darà quindi lo zero conosciuto a priori): se ti viene ancora ordine uno, allora il tuo codice è sbagliato. Occhio a non usare funzione con zeri multipli: in questi casi Newton è mal condizionato e, cosa diversa, il suo ordine di convergenza diminuisce. Basta guardare l'iterazione funzionale di punto fisso in Newton per capirlo: se ci sono zeri multipli allora $g= x- \frac{f'(x)}{f(x)}$ sarà tale che $g'(0)= 1 - 1/m$, da cui segue una convergenza sempre più lenta.

Sinceramente non trovo molto sensato mettere quella stima dentro il ciclo. Se proprio uno vuole vedere se l'ordine è due potrebbe anche fare un grafico logaritmico dell'errore relativo e notare se la retta ha pendenza pari all'ordine cambiato di segno.

Oltretutto, non credo che sia corretto il fatto che $alpha$ sia un stima iniziale della radice: da quello che so dovrebbe essere un'approssimazione $x_m$ con $m>k +1$.
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 1792 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite