Proviamo il nostro algoritmo su una semplice funzione:
; dal momento che siamo sicuri della convergenza del metodo,
utilizzeremo la soluzione trovata con bisezione per verificare
anche gli altri metodi; dapprima verifichiamo se l'intervallo
scelto rispetta le richieste del metodo
» fxcosx(0)*fxcosx(1) ans = -0.45969769413186 »
possiamo utilizzare
come intervallo per la ricerca del
nostro zero, in quanto
è continua in quell'intervallo ed
ammette valori discordi agli estremi. Vediamo come si comporta
l'algoritmo:
» [x,it,tolf,nu]=bisezione(0,1,'fxcosx',1e-15)
x =
0.73908513321516
it =
49
tolf =
1.687500000000000e-015
nu =
50
L'algoritmo arriva ad un'approssimazione della funzione con un passo in meno del previsto; verifichiamo la bontà di tale approssimazione:
» fxcosx(x)
ans =
4.440892098500626e-016
»
l'approssimazione trovata è sicuramente buona. Lentamente ma il metodo di bisezione arriva ad un valore molto prossimo alla soluzione esatta.
Non sempre il metodo di bisezione è da disprezzare: inseriamo un esempio che ci farà comodo in seguito:
» type fx5
function y=fx5(x)
y=(x-5)^5;
» [x,it,tolf,nu]=bisezione(4,7,'fx5',1e-15)
x =
5.00000000000011
it =
43
tolf =
2.940041181101415e-065
nu =
52
»