Corso di Laurea in Ingegneria Informatica Analisi Numerica
Lucio Demeio
Dipartimento di Scienze Matematiche
1
Equazioni Non Lineari
Problema: trovare le soluzioni di un’equazione del tipo
f (x) = 0
Problema: trovare le soluzioni di un’equazione del tipo f (x) = 0
Esempio
Problema: trovare le soluzioni di un’equazione del tipo f (x) = 0
Esempio
sin x − a x = 0
e
−x= x
3Problema: trovare le soluzioni di un’equazione del tipo f (x) = 0
Esempio
sin x − a x = 0 e
−x= x
3Out[54]=
-3 -2 -1 1 2 3
-0.5 0.5 1.0
0.5 1.0 1.5 2.0
Problema: trovare le soluzioni di un’equazione del tipo f (x) = 0
Esempio
sin x − a x = 0 e
−x= x
3Out[54]=
-3 -2 -1 1 2 3
-1.0 -0.5 0.5 1.0
0.0 0.5 1.0 1.5 2.0
0.5 1.0 1.5 2.0
Mathematica file EqNonLin1.nb
Bisezione
Bisezione
Dal teorema degli zeri, data f : [a, b] → R continua, se
f (a) f (b) < 0 allora ∃ c tale che f (c) = 0.
Bisezione
Dal teorema degli zeri, data f : [a, b] → R continua, se f (a) f (b) < 0 allora ∃ c tale che f (c) = 0.
c b
a f(a)>0
f(b)<0 f(x)
x
Bisezione
Dal teorema degli zeri, data f : [a, b] → R continua, se f (a) f (b) < 0 allora ∃ c tale che f (c) = 0.
c b
a f(a)>0
f(b)<0 f(x)
x c0
Bisezione
Dal teorema degli zeri, data f : [a, b] → R continua, se f (a) f (b) < 0 allora ∃ c tale che f (c) = 0.
c b
a f(a)>0
f(b)<0 f(x)
x c0
Costruiamo tre successioni, {a
n}, {b
n} e {c
n}: siano
a
0= a b
0= b c
0= a + b
2
Bisezione
Bisezione
Nel nostro esempio, f (a
0) f (c
0) < 0, quindi il teorema degli zeri si applica nuovamente all’intervallo [a
0, c
0]. Siano allora
a
1= a
0b
1= c
0c
1= a
1+ b
12
Bisezione
Nel nostro esempio, f (a
0) f (c
0) < 0, quindi il teorema degli zeri si applica nuovamente all’intervallo [a
0, c
0]. Siano allora
a
1= a
0b
1= c
0c
1= a
1+ b
12
... e cos`ı via:
se f (a
n) f (c
n) < 0 allora a
n+1= a
ne b
n+1= c
n;
se f (a
n) f (c
n) > 0 allora a
n+1= c
ne b
n+1= b
ne c
n+1= (a
n+1+ b
n+1)/2.
Bisezione
Nel nostro esempio, f (a
0) f (c
0) < 0, quindi il teorema degli zeri si applica nuovamente all’intervallo [a
0, c
0]. Siano allora
a
1= a
0b
1= c
0c
1= a
1+ b
12
... e cos`ı via:
se f (a
n) f (c
n) < 0 allora a
n+1= a
ne b
n+1= c
n; se f (a
n) f (c
n) > 0 allora a
n+1= c
ne b
n+1= b
ne c
n+1= (a
n+1+ b
n+1)/2.
La successione {c
n} converge a c (lo sappiamo dal teorema degli
zeri), quindi l’algoritmo basato sul metodo di bisezione
fornisce una successione che converge alla soluzione.
Bisezione
Nel nostro esempio, f (a
0) f (c
0) < 0, quindi il teorema degli zeri si applica nuovamente all’intervallo [a
0, c
0]. Siano allora
a
1= a
0b
1= c
0c
1= a
1+ b
12
... e cos`ı via:
se f (a
n) f (c
n) < 0 allora a
n+1= a
ne b
n+1= c
n; se f (a
n) f (c
n) > 0 allora a
n+1= c
ne b
n+1= b
ne c
n+1= (a
n+1+ b
n+1)/2.
La successione {c
n} converge a c (lo sappiamo dal teorema degli zeri), quindi l’algoritmo basato sul metodo di bisezione fornisce una successione che converge alla soluzione.
In pratica, l’algoritmo viene fermato dopo N passi (o iterazioni) ed otteniamo un’approssimazione per lo zero della funzione:
c ≈ c
N. Come scegliere N (criterio di arresto)?
Criterio di arresto
Criterio di arresto
Varie possibilit`a:
Criterio di arresto Varie possibilit`a:
Fissare un massimo numero di iterazioni, N ≤ N
max(`e di solito considerato un fallimento - legato a ragioni di costo
computazionale);
Criterio di arresto Varie possibilit`a:
Fissare un massimo numero di iterazioni, N ≤ N
max(`e di solito considerato un fallimento - legato a ragioni di costo
computazionale);
Fissare una tolleranza η << 1 su c: |c
N− c| ≤ η (ovviamente c
non lo conosciamo ... vedi pi` u avanti) - `e il caso pi` u frequente
nella prassi - la chiameremo tolleranza assoluta
Criterio di arresto Varie possibilit`a:
Fissare un massimo numero di iterazioni, N ≤ N
max(`e di solito considerato un fallimento - legato a ragioni di costo
computazionale);
Fissare una tolleranza η << 1 su c: |c
N− c| ≤ η (ovviamente c non lo conosciamo ... vedi pi` u avanti) - `e il caso pi` u frequente nella prassi - la chiameremo tolleranza assoluta
Fissare una tolleranza relativa η << 1 su c: |(c
N− c)/c| ≤ η
(anche qui c non lo conosciamo ...);
Criterio di arresto Varie possibilit`a:
Fissare un massimo numero di iterazioni, N ≤ N
max(`e di solito considerato un fallimento - legato a ragioni di costo
computazionale);
Fissare una tolleranza η << 1 su c: |c
N− c| ≤ η (ovviamente c non lo conosciamo ... vedi pi` u avanti) - `e il caso pi` u frequente nella prassi - la chiameremo tolleranza assoluta
Fissare una tolleranza relativa η << 1 su c: |(c
N− c)/c| ≤ η (anche qui c non lo conosciamo ...);
Fissare una tolleranza η << 1 su f (c): |f (c
N)| ≤ η
Criterio di arresto Varie possibilit`a:
Fissare un massimo numero di iterazioni, N ≤ N
max(`e di solito considerato un fallimento - legato a ragioni di costo
computazionale);
Fissare una tolleranza η << 1 su c: |c
N− c| ≤ η (ovviamente c non lo conosciamo ... vedi pi` u avanti) - `e il caso pi` u frequente nella prassi - la chiameremo tolleranza assoluta
Fissare una tolleranza relativa η << 1 su c: |(c
N− c)/c| ≤ η (anche qui c non lo conosciamo ...);
Fissare una tolleranza η << 1 su f (c): |f (c
N)| ≤ η
Quale errore commettiamo nei vari casi?
Analisi dell’errore nel caso |c
N− c| ≤ η
Analisi dell’errore nel caso |c
N− c| ≤ η
Ricordiamo che c
n∈ [a
n, b
n] e c ∈ [a
n, b
n];
Analisi dell’errore nel caso |c
N− c| ≤ η Ricordiamo che c
n∈ [a
n, b
n] e c ∈ [a
n, b
n];
c
n= (a
n+ b
n)/2 e |b
n− a
n| = (b − a)/2
n;
Analisi dell’errore nel caso |c
N− c| ≤ η Ricordiamo che c
n∈ [a
n, b
n] e c ∈ [a
n, b
n];
c
n= (a
n+ b
n)/2 e |b
n− a
n| = (b − a)/2
n;
quindi |c
n− c| ≤ (b − a)/2
n;
Analisi dell’errore nel caso |c
N− c| ≤ η Ricordiamo che c
n∈ [a
n, b
n] e c ∈ [a
n, b
n];
c
n= (a
n+ b
n)/2 e |b
n− a
n| = (b − a)/2
n; quindi |c
n− c| ≤ (b − a)/2
n;
ci fermiamo quando (b − a)/2
N≤ η.
Analisi dell’errore nel caso |c
N− c| ≤ η Ricordiamo che c
n∈ [a
n, b
n] e c ∈ [a
n, b
n];
c
n= (a
n+ b
n)/2 e |b
n− a
n| = (b − a)/2
n; quindi |c
n− c| ≤ (b − a)/2
n;
ci fermiamo quando (b − a)/2
N≤ η.
dunque N ≈ log
2(b − a)/η.
a b x
c
na
nb
nc
Analisi dell’errore nel caso |c
N− c| ≤ η Ricordiamo che c
n∈ [a
n, b
n] e c ∈ [a
n, b
n];
c
n= (a
n+ b
n)/2 e |b
n− a
n| = (b − a)/2
n; quindi |c
n− c| ≤ (b − a)/2
n;
ci fermiamo quando (b − a)/2
N≤ η.
dunque N ≈ log
2(b − a)/η.
a b x
c
na
nb
nc
Nel caso |(c
N− c)/c| ≤ η ci fermiamo quando (b − a)/(|c
N|2
N) ≤ η
Ordine di convergenza
Ordine di convergenza
Nel caso |c
n− c| ≤ (b − a)/2
nabbiamo che α
n= c
ne β
n= 1/2
n,
con K = b − a.
Ordine di convergenza
Nel caso |c
n− c| ≤ (b − a)/2
nabbiamo che α
n= c
ne β
n= 1/2
n, con K = b − a.
Quindi c
nconverge a c con tasso di convergenza O(1/2
n), ovvero
c
n= c + O 1 2
nUn punto x = c si dice punto fisso per una funzione g(x) se g(c) = c,
cio`e una soluzione dell’equazione g(x) = x.
Un punto x = c si dice punto fisso per una funzione g(x) se g(c) = c, cio`e una soluzione dell’equazione g(x) = x.
g(x)
c x y
y=x
Un punto x = c si dice punto fisso per una funzione g(x) se g(c) = c, cio`e una soluzione dell’equazione g(x) = x.
g(x)
c x y
y=x
Punto fisso
Un punto x = c si dice punto fisso per una funzione g(x) se g(c) = c, cio`e una soluzione dell’equazione g(x) = x.
g(x)
c x y
y=x
Punto fisso
Un problema del tipo f (x) = 0 si pu` o sempre trasformare in un
equivalente problema di punto fisso; esiste cio`e sempre una
funzione g(x) per cui l’equazione f (x) = 0 `e equivalente
all’equazione g(x) = x.
Un punto x = c si dice punto fisso per una funzione g(x) se g(c) = c, cio`e una soluzione dell’equazione g(x) = x.
g(x)
c x y
y=x
Punto fisso
Un problema del tipo f (x) = 0 si pu` o sempre trasformare in un equivalente problema di punto fisso; esiste cio`e sempre una funzione g(x) per cui l’equazione f (x) = 0 `e equivalente all’equazione g(x) = x.
Ci sono diversi modi per definire una funzione g(x) a tale scopo:
ad esempio g(x) = x − f (x) (quello pi` u semplice) ma anche
g(x) = x + a f (x) e molti altri.
Data una funzione g(x), definita su un intervallo [a, b], quando ha un
punto fisso e quando questo `e unico? E come si costruisce?
Data una funzione g(x), definita su un intervallo [a, b], quando ha un punto fisso e quando questo `e unico? E come si costruisce?
Theorem
Se g `e una funzione continua su [a, b] e g(x) ∈ [a, b] ∀x ∈ [a, b], allora g ha un punto fisso in [a, b]; inoltre, se esiste k con 0 < k < 1 tale che
|g
′(x)| < k ∀x ∈ [a, b], il punto fisso `e unico.
Data una funzione g(x), definita su un intervallo [a, b], quando ha un punto fisso e quando questo `e unico? E come si costruisce?
Theorem
Se g `e una funzione continua su [a, b] e g(x) ∈ [a, b] ∀x ∈ [a, b], allora g ha un punto fisso in [a, b]; inoltre, se esiste k con 0 < k < 1 tale che
|g
′(x)| < k ∀x ∈ [a, b], il punto fisso `e unico.
Proof.
...
Data una funzione g(x), definita su un intervallo [a, b], quando ha un punto fisso e quando questo `e unico? E come si costruisce?
Theorem
Se g `e una funzione continua su [a, b] e g(x) ∈ [a, b] ∀x ∈ [a, b], allora g ha un punto fisso in [a, b]; inoltre, se esiste k con 0 < k < 1 tale che
|g
′(x)| < k ∀x ∈ [a, b], il punto fisso `e unico.
Proof.
...
g(x) u(x)
h(x)
x a
a y
b b
Theorem (Teorema del punto fisso)
Sia g(x) una funzione che soddisfa le condizioni del teorema
precedente. Allora, ∀x
0∈ [a, b] la successione definita da x
n+1= g(x
n)
converge al punto fisso x = c (unico !!) della funzione g.
Theorem (Teorema del punto fisso)
Sia g(x) una funzione che soddisfa le condizioni del teorema
precedente. Allora, ∀x
0∈ [a, b] la successione definita da x
n+1= g(x
n) converge al punto fisso x = c (unico !!) della funzione g.
g(x)
a x a
y
b c b
x0 x1 x2
Proof.
Per le condizioni del teorema precedente, x
n∈ [a, b] ∀n. Inoltre, per il teorema di Lagrange,
|x
n− c| = |g(x
n−1) − g(c)| = |g
′(ξ
n)||x
n−1− c| ≤ k|x
n−1− c|, con ξ
n∈ [a, b]. Per induzione, allora abbiamo che
|x
n− c| ≤ k
n|x
0− c|. Siccome k < 1, si ha che lim
n→∞k
n= 0 e
quindi lim
n→∞|x
n− c| ≤ lim
n→∞k
n|x
0− c| = 0. Quindi {x
n}
converge a c.
Theorem
Se g soddisfa le ipotesi del teorema del punto fisso, allora l’errore che si commette approssimando c con x
nsoddisfa alle limitazioni
|x
n− c| ≤ k
nmax{x
0− a, b − x
0}
|x
n− c| ≤ k
n1 − k |x
1− x
0|
Theorem
Se g soddisfa le ipotesi del teorema del punto fisso, allora l’errore che si commette approssimando c con x
nsoddisfa alle limitazioni
|x
n− c| ≤ k
nmax{x
0− a, b − x
0}
|x
n− c| ≤ k
n1 − k |x
1− x
0|
Proof.
...
Newton-Raphson
c f(x)
x0 x
Newton-Raphson
c f(x)
x0 x1 x
Newton-Raphson
c f(x)
x0 x1 x2 x
Newton-Raphson
c f(x)
x0 x1 x2 x
Newton-Raphson
Tangente ad f (x) per (x
0, f (x
0)): y = f (x
0) + f
′(x
0) (x − x
0);
c f(x)
x0 x1 x2 x
Newton-Raphson
Tangente ad f (x) per (x
0, f (x
0)): y = f (x
0) + f
′(x
0) (x − x
0);
l’intersezione della tangente con l’asse delle x fornisce
x
1= x
0− f (x
0)/f
′(x
0);
c f(x)
x0 x1 x2 x
Newton-Raphson
Tangente ad f (x) per (x
0, f (x
0)): y = f (x
0) + f
′(x
0) (x − x
0);
l’intersezione della tangente con l’asse delle x fornisce x
1= x
0− f (x
0)/f
′(x
0);
... e cos`ı via:
x
n+1= x
n− f (x
n)
f
′(x
n)
Quando converge Newton-Raphson?
Quando converge Newton-Raphson?
Theorem
Sia f (x) di classe C
2([a, b]). Se esiste c ∈ [a, b] tale che f (c) = 0 ed
f
′(c) 6= 0, allora esiste un δ > 0 tale che il metodo di Newton genera
una successione x
n, con x
0∈ (c − δ, c + δ), e con x
n→ c per n → ∞.
Quando converge Newton-Raphson?
Theorem
Sia f (x) di classe C
2([a, b]). Se esiste c ∈ [a, b] tale che f (c) = 0 ed f
′(c) 6= 0, allora esiste un δ > 0 tale che il metodo di Newton genera una successione x
n, con x
0∈ (c − δ, c + δ), e con x
n→ c per n → ∞.
Intuitivamente:
Quando converge Newton-Raphson?
Theorem
Sia f (x) di classe C
2([a, b]). Se esiste c ∈ [a, b] tale che f (c) = 0 ed f
′(c) 6= 0, allora esiste un δ > 0 tale che il metodo di Newton genera una successione x
n, con x
0∈ (c − δ, c + δ), e con x
n→ c per n → ∞.
Intuitivamente:
c f(x)
x0 x1 x2 x
S I
c f(x)
x0 x1 x
x2