METODI NUMERICI PER LA
RICERCA DEGLI ZERI DI UNA
FUNZIONE
Prof. Stefano Gori
Liceo Scientifico Salutati – Montecatini Terme
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.
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.
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.
METODI
1. Bisezione
2. Secanti (o corde)
3. Tangenti (o metodo di Newton)
Problema: ricerca degli zeri di y= sen x – log x
In [1;3] sono verificate le ipotesi del secondo teorema di unicità.
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].
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
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)|< .
ESEMPIO CON MATLAB
x(1)=1;
a=x(1);
x(2)=3;
b=x(2);
y(1)=sin(x(1))-log(x(1));
fa=y(1);
y(2)=sin(x(2))-log(x(2));
fb=y(2);
for i=1:1000
x(i+2)=(a+b)/2;
y(i+2)=sin(x(i+2))log(x(i+2));
if y(i+2)*fa>0
a=x(i+2);
fa=y(i+2);
end
if y(i+2)*fa<0
b=x(i+2);
fb=y(i+2);
end
Output
if abs(y(i+2))<1E-04
ind=i;
break
end
end
display('ascissa=')
a
display('ordinata=')
y(ind+2)
display('numero di
iterazioni=')
ind
a=
ascissa=
2.2190
ordinata=
ans =
-9.5557e-006
numero di iterazioni=
ind =
14
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.
SECANTI
Si procede poi calcolando xn+1, che sostituisce xn nella
definizione dell’intervallo:
b  xn
xn1  xn 
f (b)  f ( xn )
 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.
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
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.
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.
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
Scarica

METODI NUMERICI PER LA RICERCA DEGLI ZERI