Metodo di bisezione

Da testwiki.
Versione del 5 nov 2019 alle 14:14 di imported>Pirrica (refuso)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Template:RisorsaTemplate:Navigazione lezione

Il metodo di bisezione si basa sul teorema di esistenza degli zeri per una funzione continua, il quale garantisce l'esistenza di almeno una radice α della funzione f su un intervallo [a,b] se f(a) e f(b) hanno segno opposto. Se su [a,b] la funzione f è anche monotona, ovvero se f(x)>0x[a,b], allora lo zero della funzione è unico. Stabilita l'esistenza della soluzione, l'algoritmo definisce la successione xk come la successione dei punti medi degli intervalli di larghezza decrescente che soddisfano le ipotesi del teorema degli zeri. In pratica, dato un intervallo di partenza con all'interno una radice, si continua a dividere a metà gli intervalli finché l'ultimo è sufficientemente piccolo da assicurarci un buona approssimazione dello zero.

Teorema degli zeri

L'enunciato del teorema di esistenza degli zeri per le funzioni continue (o Teorema di Bolzano) dice

Sia f:[a,b] una funzione continua tale che f(a)f(b)<0.

Allora esiste almeno un punto x nell'intervallo aperto (a,b) tale che f(x)=0.

La dimostrazione può essere trovata qui.

Algoritmo di bisezione

Data fC0([a,b]) che soddisfi le ipotesi del teorema degli zeri e data una tolleranza ϵ

  1. xk=a+b2,k1;
  2. se ek=|bxk|ϵ:esci;
  3. se f(xk)=0: esci;
    altrimenti se f(a)f(xk)>0: a=xk;
    altrimenti :b=xk;
  4. torna al passo 1;

Nel primo passo viene definito il nuovo valore della successione: il nuovo punto medio. Nel secondo passo viene effettuato il controllo sulla tolleranza: se l'errore commesso è inferiore alla tolleranza prestabilita accettiamo xk come radice di f. Il terzo passo consiste nel valutare la funzione in xk: se f(xk)=0 abbiamo trovato la soluzione; altrimenti, avendo diviso l'intervallo in due, dobbiamo capire da che parte è rimasto lo zero. Per fare ciò utilizziamo le ipotesi del teorema degli zeri, cerchiamo, cioè, il nuovo intervallo tale per cui la funzione agli estremi è di segno opposto e ridefiniamo quindi l'intervallo, spostando a o b in xk. Infine, se non abbiamo ancora trovato una buona approssimazione per la soluzione, torniamo al punto di partenza.

Analisi di convergenza

Ad ogni iterazione l'intervallo k=[ak,bk] viene diviso a metà, dove abbiamo indicato con ak e bk gli estremi dell'intervallo alla iterazione k0. Ovviamente 0=[a,b]. Indichiamo con |k|=meas(k) la lunghezza dell'intervallo k. In particolare si ha

|k|=|k1|2=|k2|22=...=|0|2k=ba2k.

Si noti che αk,k0, e quindi

ek|k|.

Da questo si ha che limkek=0, poiché limk12k=0. Quindi si ha

limkxk=α,

che dimostra la convergenza globale del metodo.

La convergenza del metodo di bisezione è molto lenta. Sebbene l'errore, in generale, non diminuisca in maniera monotona, la velocità media di convergenza è 1/2 e quindi, modificando leggermente la definizione di ordine di convergenza, è possibile dire che il metodo di bisezione converge linearmente con fattore di convergenza 1/2. Non crei confusione il fatto che, su alcuni testi o in altre fonti, talvolta, l'errore venga dato dalla relazione ek=ba2k+1. Questo è dovuto al fatto che la successione viene definita per k0 invece che per k1.

Esempio

Si consideri la funzione f(x)=cosx in [0,3π]. In questo intervallo la funzione ha 3 zeri: α1=π2, α2=3π2 e α3=5π2.

Teoricamente il metodo di bisezione converge in un'iterazione a α2. Nella pratica, tuttavia, il metodo converge o α1 o a α3. Infatti, dato che le operazioni vengono fatte in aritmetica finita, x13π2 e a seconda delle approssimazioni del calcolatore f(x1) potrà essere positivo o negativo, ma mai nullo. Così l'algoritmo di bisezione in questo caso escluderà automaticamente la radice α2 alla prima iterazione, in quanto l'errore sarà ancora molto grande (e1=α2).

Supponiamo che l'algoritmo converga a α1 e vediamo quante iterazioni sono richieste affinché l'errore sia minore di 1010. Bisogna quindi richiedere che

ek3π2k1010,

e quindi, risolvendo la disequazione, che

klog2(31010π)36.46,

e quindi, poiché k è un numero naturale, si ha k37.

Riferimenti

Template:Reflist

Altre risorse sul metodo di bisezione

Guarda la pagina altre risorse sulla risoluzione di equazioni non lineari. Template:Ip