Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Francesco Morandini
1
Indice
1 Introduzione 3
1.1 Legenda nomi variabili per ogni metodo . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Esercizio 3 3
3.1 Metodo di bisezione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Metodo di Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2.1 Risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Metodo di Steffensen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3.1 Risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.4 Confronto tra Newton-Raphson e Steffensen . . . . . . . . . . . . . . . . . . . . . . . 6
3.5 Metodo di tangente fissa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.5.1 Risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Esercizio 5 7
4.1 Metodo di Punto fisso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1.1 Risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 Metodo di Aitken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2.1 Risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2
1 Introduzione
In questa relazione andrò a esporre e a commentare il funzionamento e i relativi risultati delle
function MATLAB relative ai vari metodi visti per l’approssimazione dello zero di una funzione.
In particolare commenterò sia le function relative ai metodi iterativi sia gli script che permettono
la chiamata delle varie funzioni.
La function è la parte algoritmica del nostro metodo iterativo, mentre lo script riguarda tutta la
parte di visualizzazione e inizializzazione delle variabili della function stessa.
Newton-Raphson: n
Steffensen: s
Tangente fissa: f
Punto fisso: p
Aitken: a
Nello specifico ho cambiato il nome delle variabili per ogni metodo iterativo onde evitare la
possibile sovrascrittura del contenuto delle variabili stesse ogni volta sarebbero state chiamate
dalle function. In questo modo ogni variabile è associata a una sola function.
function [iterb, cnew, vres] = bisezione (a, b, tolb, itmaxb, fun, dfun) è:
√
2 ≈ 1.414213562373
3 Esercizio 3
Nell’esercizio 3 si chiedeva di implementare i metodi di bisezione, Newton-Rapshon, Steffensen e
tangente fissa tramite lo script scriptes1.m per approssimare lo zero della funzione data.
Tale funzione è la seguente: y = 2αx3 −βx+γe2x −2δ dove i parametri α, β, γ e δ sono stati ricavati
dalle ultime 4 cifre del proprio numero di matricola a cui sono state effettuate alcune operazioni
tramite una function fornitaci dal Professore. Nel mio caso i parametri correttamente calcolati
sono: α = 4, β = 4, γ = 0.7, δ = 4.
3
3.1 Metodo di bisezione
Il metodo di bisezione usato nell’esercizio 3 usa la stessa function dell’esercizio 2. Impiega 2 iter-
azioni per calcolare il punto cnew = 2 che verrà utilizzato in seguito nel metodo di Newton-Raphson
come punto iniziale.
2. f 0 (x) 6= 0
E genera la successione:
f (xk )
xk+1 = xk −
f 0 (xk )
Questo metodo però non ci assicura la convergenza a priori. Per esserne sicuri bisogna verificarlo
tramite l’esistenza di uno zero semplice ξ (uno zero si definisce semplice se f (ξ) = 0 e f 0 (ξ) 6= 0),
se ciò è verificato e prendiamo un punto x0 sufficientemente vicino a ξ allora il metodo convergerà
almeno quadraticamente a ξ. Per la risoluzione di questo punto ho chiamato la
dove toln indica la tolleranza (toln=10−8 ) che indica la precisione della nostra soluzione. Infatti
quando |xk+1 − xk | < toln il ciclo si arresta. Inoltre con itmaxn ho indicato le iterazioni massime
(itmaxn=30) che il ciclo può effettuare nel caso il metodo non dovesse convergere in modo tale da
avere sempre un arresto del ciclo.
4
3.2.1 Risultati
In particolare il metodo di Newton-Raphson mi converge e impiega 7 iterazioni per approssimare
la soluzione a meno della tolleranza.
ξ = 0.959545837560
M = 1.1784
Inoltre ho calcolato l’errore che eventualmente si sarebbe potuto generare tramite il metodo di
Newton-Raphson rispetto alla funzione fzero integrata in MATLAB applicata alla nostra funzione
f(x) che calcola direttamente lo zero di essa in un intervallo che inseriamo noi a priori nel codice.
Nel mio caso l’errore visualizzato è 0.00000, il che indica che l’errore è al di sotto della precisione
di macchina.
Come per Newton ho definito un punto iniziale, in questo caso l’ho chiamato x0s che ho ricavato
dalla ultima iterazione del metodo di Newton-Raphson a cui è stata sommata la quantità 10−2 ,
ho stabilito una tolleranza (tols=10−8 ) al di sotto della quale viene arrestato il ciclo e le iterazioni
massime (itmaxs) che il ciclo può effettuare pari a 30.
Con il metodo di Newton-Raphson, Steffensen condivide alcune particolarità e allo stesso tempo
si differenzia sotto alcuni aspetti. In comune hanno l’efficienza computazionale e quasi sempre
l’ordine di convergenza (p = 2).
Come differenze possiamo notare invece la più evidente, cioè la forma della successione che si viene
a formare iterando più volte questo metodo, che per questo metodo risulta:
[f (xk )]2
xk+1 = xk −
f (xk + f (xk )) − f (xk )
3.3.1 Risultati
In questo caso il metodo di Steffensen mi converge e si è arrestato dopo 5 iterazioni dopo aver
calcolato uno scarto inferiore alla tolleranza.
ξ = 0.959545837560
M = 33.7482
Anche in questo caso l’errore tra il metodo di Steffensen e la funzione fzero è 0.00000.
5
3.4 Confronto tra Newton-Raphson e Steffensen
Qui di seguito viene visualizzato il grafico semilogaritmico sull’asse y dei profili di convergenza di
Newton-Raphson e Steffensen rispettivamente di colori rosso e blu.
Come possiamo notare i metodi presentano un profilo di convergenza simile (entrambi convergono
quadraticamente) però il metodo di Newton-Raphson è per tutte le iterazioni al di sopra di quello
di Steffensen, questo perchè per il secondo abbiamo scelto un punto di partenza molto più vicino
alla soluzione ξ rispetto al primo.
dobbiamo verificare che questo ultimo metodo converga dopo un certo numero di iterazioni. Per
f 0 (ξ)
farlo ho impostato la condizione 1 − f 0 (x0n ) < 1 dove ξ indica la soluzione, x0n il punto iniziale
3.5.1 Risultati
Il metodo mi converge e impiega 88 iterazioni per approssimare la soluzione a meno della tolleranza.
6
ξ = 0.959545884795
4 Esercizio 5
Nell’esercizio 5 si chiede di approssimare il valore che soddisfa l’equazione f (x) = 0 rispetto alla
funzione utilizzata nell’esercizio 3 attraverso i metodi di Punto fisso e Aitken, il tutto in un nuovo
script chiamato scriptes2.m. Preliminarmente per aver a disposizione tutte le variabili inizializzate
correttamente come richiesto dalla consegna ho chiamato:
function [iterb, cnew, vres] = bisezione (a, b, tolb, itmaxb, fun, dfun)
function [itern,xnewn,scartin] = newton (x0n,toln,itmaxn,fun,dfun)
2αx3k + γe2xk − 2δ
xk+1 = ≡ g(xk )
β
Il metodo di punto fisso si basa sull’equazione:
g(x) = x + f (x)
Un punto fisso è un particolare punto di una funzione in cui x = f (x), quindi che giace sulla biset-
trice del primo e terzo quadrante. Per trovare un punto fisso basta porre f (x) = 0 nell’equazione
che descrive il metodo.
Per prima cosa ho verificato se effettivamente il metodo convergesse tramite l’istruzione condizionale
if-else applicata al valore assoluto della derivata prima della nostra funzione g(x) nel punto xnewn.
Se tale valore fosse maggiore di 1 (|g 0 (xnewn)| > 1) allora tale metodo non potrà convergere e
visualizzerà un messaggio di avviso, al contrario (else) verrà chiamata la
dove x0p punto iniziale è lo stesso utilizzato per il metodo di Steffensen, itmaxp sono le iterazioni
massime che il ciclo può effetuare (tolp=100) e inoltre ho impostato una tolleranza (tolp=10−12 )
al di sotto della quale viene arrestato il ciclo.
4.1.1 Risultati
Nel mio script MATLAB il metodo di punto fisso non converge poichè il valore assoluto della
derivata della funzione g(x) nel punto xnewn soluzione del metodo di Newton-Raphson è pari a
7.9095, quindi decisamente maggiore di 1.
7
4.2 Metodo di Aitken
Come ultimo metodo veniva richiesto Aitken applicato al metodo di punto fisso eseguito prece-
dentemente, quindi con lo stesso punto iniziale x0a = x0p ma con tolleranza e iterazioni massime
diverse, più precisamente tola=10−8 e itmaxa=30. Aitken viene chiamato dalla seguente function:
xa = xk
xb = g(xa )
xc = g(xb )
4.2.1 Risultati
Qui di seguito viene visualizzato il grafico del profilo di convergenza del metodo di Aitken
Il metodo mi converge e impiega 4 iterazioni per approssimare lo zero a meno della tolleranza.
ξ = 0.959545837560
scarto=−4.87055e − 10
M = 9.3209
Come per Newton-Raphson e Steffensen anche in questo caso l’errore tra il metodo di Aitken e la
funzione fzero è 0.00000.