XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
Zeri
1. METODI NUMERICI PER LA
RICERCA DEGLI ZERI DI UNA
FUNZIONE
Prof. Stefano Gori
Liceo Scientifico Salutati – Montecatini Terme
2. TEOREMA DI ESISTENZA
Data una funzione f continua
nell’intervallo chiuso e limitato [a;b],
se negli estremi dell’intervallo la funzione
assume valori di segno opposto
allora esiste almeno un punto interno ad
[a;b] in cui f(x)=0.
3. PRIMO TEOREMA DI UNICITÀ
È data f(x)
continua in [a;b]e derivabile in (a;b).
Per f(x) sussistano le ipotesi
del teorema di esistenza.
Se f’(x)≠0 in (a;b), allora lo zero è unico.
4. SECONDO TEOREMA DI UNICITÀ
È data f(x) continua in [a;b]
e derivabile due volte in (a;b).
Per f(x) sussistano le ipotesi
del teorema di esistenza.
Se f’’(x) non cambia segno in (a;b),
allora lo zero è unico.
6. Problema: ricerca degli zeri di y= sen x – log x
In [1;3] sono verificate le ipotesi del secondo teorema di unicità.
7. BISEZIONE
Problema: ricerca degli zeri di y= sen x – log x
sen x - loge x
Posto:
x1=a=1→f(x1)=0,84>0
x2=b=3→ f(x2)=-0,96<0
1,0
0,8
0,6
0,4
0,2
0,0
-0,2
-0,4
-0,6
-0,8
-1,0
0,0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
Si considera il punto medio
x3=2 → f(x3)=0,22>0
Siccome f(x3) è positiva come f (x1), x3 sostituisce x1 nella
definizione dell’intervallo. Al posto di [1;3], a questo passo,
consideriamo pertanto l’intervallo [2;3].
8. BISEZIONE
Problema: ricerca degli zeri di y= sen x – log x
Abbiamo quindi:
x2=b=3→ f(x2)=-0,96<0
x3=2 → f(x3)=0,22>0
sen x - loge x
0,4
0,2
0,0
-0,2
-0,4
-0,6
Si considera il punto medio
x4=2,5 → f(x4)=-0,318<0
-0,8
-1,0
1,6
1,8
2,0
2,2
2,4
2,6
2,8
3,0
Siccome f(x4) è negativa come f (x2), x4 sostituisce x2 nella
definizione dell’intervallo. Al posto di [2;3], a questo passo,
consideriamo pertanto l’intervallo [2;2,5].
3,2
9. BISEZIONE
Problema: ricerca degli zeri di y= sen x – log x
Sapevamo all’inizio che lo zero era compreso in [1;3].
Dopo due passi, sappiamo che lo zero è compreso in [2;2,5].
A ogni passo, l’ampiezza dell’intervallo si dimezza (bisezione).
Problema: quando ci si ferma?
Il processo si può arrestare quando l’ampiezza dell’intervallo è
minore di un valore prefissato (ad esempio, un milionesimo).
Per le funzioni a forte pendenza, fissato ε arbitrario e positivo, ci
si può fermare quando |f(x)|< ε.
11. SECANTI
Problema: ricerca degli zeri di y= sen x – log x
Posto:
a=1→f(a)
b=3→ f(b)
Si costruisce la secante per
(x1,f(x1)) e (b, f(b)) e se ne
determina il punto x1 di
intersezione con l’asse x.
b−a
x1 = a −
×f (a )
f (b) − f ( a)
x1 sostituisce a nella definizione dell’intervallo.
12. SECANTI
Si procede poi calcolando xn+1, che sostituisce xn nella
definizione dell’intervallo: x = x − b − xn ×f ( x )
n +1
n
n
f (b) − f ( xn )
Questo procedimento è corretto se:
1. f(a)>f(b) e la concavità è verso il basso, come nell’esempio
2. f(a)<f(b) e la concavità è verso l’alto
Altrimenti, se:
3. f(a)>f(b) e la concavità è verso l’alto
4. f(a)<f(b) e la concavità è verso il basso
rimane fisso l’estremo sinistro dell’intervallo ed è il destro ad
avvicinarsi allo zero.
13. ESEMPIO CON MATLAB
a=1;
b=3;
fa=sin(a)-log(a);
fb=sin(b)-log(b);
x(1)=a-fa*(b-a)/(fb-fa);
for i=1:1000
y(i)=sin(x(i))-log(x(i));
x(i+1)=x(i)-y(i)*(b-x(i))/(fb-y(i));
Output
ascissa=
ans =
2.2191
ordinata=
if abs(y(i))<1E-04
ind=i;
break
end
end
display('ascissa=')
x(i)
display('ordinata=')
y(i)
display('numero di iterazioni=')
ind
ans =
1.9643e-005
numero di iterazioni=
ind =
6
14. TANGENTI
Problema: ricerca degli zeri di y= sen x – log x
Posto:
x1=a=1→f(x1)
x2=b=3→ f(x2)
Si costruisce la tangente per
(x2, f(x2)) e se ne determina il
punto x3 di intersezione con
l’asse x.
x3 sostituisce x2 nella definizione dell’intervallo.
15. TANGENTI
Si procede poi calcolando xn+1, che sostituisce xn nella
definizione dell’intervallo, sempre dalla stessa parte destra.
Questo procedimento è corretto se:
1. f(a)>f(b) e la concavità è verso il basso, come nell’esempio
2. f(a)<f(b) e la concavità è verso l’alto
Altrimenti, se:
3. f(a)>f(b) e la concavità è verso l’alto
4. f(a)<f(b) e la concavità è verso il basso
rimane fisso l’estremo destro dell’intervallo ed è il sinistro ad
avvicinarsi allo zero.
16. ESEMPIO CON MATLAB
realizzato da Macchini Matteo e Castiglia Dario, classe 5B A.S. 2007/2008 Liceo Scientifico Salutati – Montecatini T.
a=1
b=3
fb=sin(b)-log(b);
m(1)=cos(b)-(1/b);
x(1)=(m(1)*b-fb)/m(1);
for i=1:1000
y(i)=sin(x(i))-log(x(i));
m(i+1)=cos(x(i))-(1/(x(i)));
x(i+1)=(m(i)*(x(i))-(y(i)))/(m(i));
Output
ascissa=
ans =
2.2191
ordinata=
if abs(y(i))<1E-04
ind=i;
break
end
end
display('ascissa=')
x(i)
display('ordinata=')
y(i)
display('numero di iterazioni=')
ind
ans =
-1.9146e-006
numero di iterazioni=
ind =
4