Salta al contenuto
Note per Studenti Metodo di bisezione e iterazioni di punto fisso

Metodo di bisezione e iterazioni di punto fisso

In questa pagina 4

Prerequisiti: Funzioni continue su un intervalloTeoremi sulle funzioni continue su un intervallo: zeri (con la bisezione), valori intermedi (f manda intervalli in intervalli), monotonia e continuità, continuità dell'inversa, Weierstrass (su [a, b] ci sono massimo e minimo).Funzioni continue su un intervallo → (teorema degli zeri), Teoremi di Rolle e di LagrangeRolle: f continua su [a,b], derivabile in ]a,b[, f(a) = f(b) ⇒ esiste c in ]a,b[ con f'(c) = 0. Lagrange (valor medio): stesse ipotesi senza f(a) = f(b) ⇒ esiste c con f'(c) = (f(b) − f(a))/(b − a): la tangente in c è parallela alla corda. Conseguenza: su un intervallo f è costante se e solo se f' = 0; su un insieme che non è un intervallo è solo costante a tratti (arctan x + arctan(1/x)).Teoremi di Rolle e di Lagrange → (valor medio), Condizionamento di un problema e stabilità di un algoritmoL'errore finale ha tre origini (dati, troncamento, arrotondamento). Un problema è ben posto se la soluzione esiste, è unica e dipende con continuità dai dati; il numero di condizionamento K = |x f'(x)/f(x)| misura di quanto un errore relativo sui dati si amplifica nel risultato (si perdono circa log10 K cifre). La stabilità riguarda invece l'algoritmo: un algoritmo instabile amplifica gli errori anche su un problema ben condizionato (ricorrenza I_n = 1 − n I_{n−1}); un problema mal condizionato non si salva con nessun algoritmo. Uno schema numerico converge se è consistente e stabile (derivata numerica: troncamento contro arrotondamento).Condizionamento di un problema e stabilità di un algoritmo → (condizionamento di una radice).

Si cerca uno zero α\alpha di una funzione continua f:[a,b]→Rf: [a,b] \to \mathbb{R}, cioè f(α)=0f(\alpha) = 0. Salvo casi particolari (polinomi di grado ≤2\le 2) non esiste una formula risolutiva (per x3−x−2=0x^3 - x - 2 = 0, ex=3xe^x = 3x, cos⁡x=x\cos x = x non si trova α\alpha con le funzioni elementari): si costruisce una successione x0,x1,x2,…x_0, x_1, x_2, \dots che converge ad α\alpha e ci si ferma quando l'errore è sotto una tolleranza.

Il metodo di bisezione

Teorema (degli zeri). Se ff è continua in [a,b][a,b] e f(a)f(b)<0f(a)f(b) < 0, esiste α∈ ]a,b[\alpha \in\, ]a,b[ con f(α)=0f(\alpha) = 0.

L'idea: se ff cambia segno su [a,b][a,b] la radice sta nell'intervallo; guardando il segno di ff nel punto medio si capisce in quale metà sta, e si ripete.

Procedura (bisezione). Dato [a0,b0]=[a,b][a_0, b_0] = [a,b] con f(a0)f(b0)<0f(a_0)f(b_0) < 0. Per n=0,1,2,…n = 0, 1, 2, \dots:

  1. cn=an+bn2c_n = \dfrac{a_n + b_n}{2} (punto medio).
  2. Se f(cn)=0f(c_n) = 0 ci si ferma. Se f(an)f(cn)<0f(a_n)f(c_n) < 0 si pone [an+1,bn+1]=[an,cn][a_{n+1}, b_{n+1}] = [a_n, c_n], altrimenti [an+1,bn+1]=[cn,bn][a_{n+1}, b_{n+1}] = [c_n, b_n].

Ad ogni passo ff cambia ancora segno nel nuovo intervallo, quindi α∈[an+1,bn+1]\alpha \in [a_{n+1}, b_{n+1}].

Teorema (stima dell'errore). Il punto medio cnc_n soddisfa ∣cn−α∣≤b−a2 n+1.|c_n - \alpha| \le \frac{b - a}{2^{\,n+1}}.

Dimostrazione. A ogni passo la lunghezza dell'intervallo si dimezza: bn−an=b−a2nb_n - a_n = \frac{b-a}{2^n}. Poiché α\alpha e cnc_n stanno entrambi in [an,bn][a_n, b_n] e cnc_n è il punto medio, ∣cn−α∣≤bn−an2|c_n - \alpha| \le \frac{b_n - a_n}{2} ∎.

Quante iterazioni? Per avere ∣cn−α∣≤tol|c_n - \alpha| \le \text{tol} basta b−a2n+1≤tol\frac{b-a}{2^{n+1}} \le \text{tol}, cioè n≥log⁡2b−atol−1.n \ge \log_2\frac{b-a}{\text{tol}} - 1. È una stima a priori: si sa dall'inizio quante iterazioni servono, indipendentemente da ff. Per b−a=1b-a = 1 servono n≥8,97→9n \ge 8{,}97 \to 9 per tol=10−3\text{tol} = 10^{-3}, n≥18,9→19n \ge 18{,}9 \to 19 per 10−610^{-6}, n≥32,2→33n \ge 32{,}2 \to 33 per 10−1010^{-10}: ogni 3,3 iterazioni si guadagna una cifra decimale.

Esempio svolto. f(x)=x3−x−2f(x) = x^3 - x - 2 su [1,2][1,2]: f(1)=−2<0f(1) = -2 < 0 e f(2)=4>0f(2) = 4 > 0, quindi c'è una radice (α=1,52138…\alpha = 1{,}52138\ldots).

Grafico interattivo: f(x) = x³ − x − 2: cambia segno in [1, 2], lo zero è α ≈ 1,5214

nn ana_n bnb_n cnc_n f(cn)f(c_n) ∣cn−α∣\lvert c_n - \alpha \rvert maggiorante 12n+1\frac{1}{2^{n+1}}
00 11 22 1,51{,}5 −0,1250-0{,}1250 0,02140{,}0214 0,50{,}5
11 1,51{,}5 22 1,751{,}75 +1,6094+1{,}6094 0,22860{,}2286 0,250{,}25
22 1,51{,}5 1,751{,}75 1,6251{,}625 +0,6660+0{,}6660 0,10360{,}1036 0,1250{,}125
33 1,51{,}5 1,6251{,}625 1,56251{,}5625 +0,2522+0{,}2522 0,04110{,}0411 0,06250{,}0625
44 1,51{,}5 1,56251{,}5625 1,531251{,}53125 +0,0591+0{,}0591 0,00990{,}0099 0,031250{,}03125
55 1,51{,}5 1,531251{,}53125 1,5156251{,}515625 −0,0341-0{,}0341 0,00580{,}0058 0,01560{,}0156

Come si legge una riga: a n=1n = 1, c0=1,5c_0 = 1{,}5 ha f(c0)=3,375−1,5−2=−0,125<0f(c_0) = 3{,}375 - 1{,}5 - 2 = -0{,}125 < 0, come f(a0)f(a_0); quindi la radice è in [c0,b0]=[1,5,2][c_0, b_0] = [1{,}5, 2]. A n=2n=2, c1=1,75c_1 = 1{,}75 ha f=5,359−1,75−2=+1,609>0f = 5{,}359 - 1{,}75 - 2 = +1{,}609 > 0, come f(b)f(b): la radice è in [1,5,1,75][1{,}5, 1{,}75].

Osservazioni:

Iterazioni di punto fisso

Si riscrive f(x)=0f(x) = 0 come x=g(x)x = g(x). Gli zeri di ff sono i punti fissi di gg: α=g(α)\alpha = g(\alpha). Si sceglie x0x_0 e si itera xk+1=g(xk),k=0,1,2,…x_{k+1} = g(x_k), \qquad k = 0, 1, 2, \dots Se gg è continua e xk→αx_k \to \alpha, allora passando al limite α=g(α)\alpha = g(\alpha): il limite è un punto fisso.

Per una data ff ci sono molte riscritture. Per x3−x−2=0x^3 - x - 2 = 0 ad esempio x=x3−2x = x^3 - 2, oppure x=x+23x = \sqrt[3]{x+2}, oppure x=2x2−1x = \frac{2}{x^2 - 1}. Non sono equivalenti dal punto di vista numerico.

Esempio: x=cos⁡xx = \cos x. La radice di cos⁡x−x=0\cos x - x = 0 è α=0,739085133…\alpha = 0{,}739085133\ldots (il punto in cui le curve y=cos⁡xy = \cos x e y=xy = x si incontrano).

Grafico interattivo: Punti fissi di g(x) = cos x: l'intersezione tra y = cos x e y = x, α ≈ 0,7391

Si parte da x0=1x_0 = 1 (in radianti) e si itera xk+1=cos⁡xkx_{k+1} = \cos x_k. Errore ek=xk−αe_k = x_k - \alpha:

kk xkx_k eke_k ek/ek−1e_k / e_{k-1}
00 1,0000001{,}000000 +0,2609+0{,}2609
11 0,5403020{,}540302 −0,1988-0{,}1988 −0,762-0{,}762
22 0,8575530{,}857553 +0,1185+0{,}1185 −0,596-0{,}596
33 0,6542900{,}654290 −0,0848-0{,}0848 −0,716-0{,}716
44 0,7934800{,}793480 +0,0544+0{,}0544 −0,641-0{,}641
55 0,7013690{,}701369 −0,0377-0{,}0377 −0,693-0{,}693
66 0,7639600{,}763960 +0,0249+0{,}0249 −0,660-0{,}660
1010 0,7442370{,}744237 +0,0052+0{,}0052 −0,671-0{,}671
1515 0,7383690{,}738369 −0,0007-0{,}0007 −0,674-0{,}674

Il rapporto tra errori successivi tende a un numero costante, −0,6736=g′(α)=−sin⁡α-0{,}6736 = g'(\alpha) = -\sin\alpha: l'errore si moltiplica per g′(α)g'(\alpha) a ogni passo. Il segno alterno dice che i valori oscillano attorno ad α\alpha (si vede nel grafico a "ragnatela": g′<0g'<0).

Condizioni di convergenza

Teorema (delle contrazioni, o del punto fisso). Sia g:[a,b]→[a,b]g: [a,b] \to [a,b] derivabile con ∣g′(x)∣≤L<1∀x∈[a,b].|g'(x)| \le L < 1 \quad \forall x \in [a,b]. Allora: (1) gg ha un solo punto fisso α∈[a,b]\alpha \in [a,b]; (2) per ogni x0∈[a,b]x_0 \in [a,b] la successione xk+1=g(xk)x_{k+1} = g(x_k) converge ad α\alpha; (3) valgono le stime ∣xk−α∣≤Lk ∣x0−α∣(velocitaˋ),∣xk−α∣≤Lk1−L ∣x1−x0∣(a priori),∣xk−α∣≤L1−L ∣xk−xk−1∣(a posteriori).|x_k - \alpha| \le L^k\,|x_0 - \alpha| \quad\text{(velocità)},\qquad |x_k - \alpha| \le \frac{L^k}{1-L}\,|x_1 - x_0| \quad\text{(a priori)},\qquad |x_k - \alpha| \le \frac{L}{1-L}\,|x_k - x_{k-1}| \quad\text{(a posteriori)}.

Dimostrazione (idea). Per il teorema di Lagrange (Teoremi di Rolle e di LagrangeRolle: f continua su [a,b], derivabile in ]a,b[, f(a) = f(b) ⇒ esiste c in ]a,b[ con f'(c) = 0. Lagrange (valor medio): stesse ipotesi senza f(a) = f(b) ⇒ esiste c con f'(c) = (f(b) − f(a))/(b − a): la tangente in c è parallela alla corda. Conseguenza: su un intervallo f è costante se e solo se f' = 0; su un insieme che non è un intervallo è solo costante a tratti (arctan x + arctan(1/x)).Teoremi di Rolle e di Lagrange →) per ogni x,y∈[a,b]x,y \in [a,b] esiste ξ\xi tra loro con ∣g(x)−g(y)∣=∣g′(ξ)∣∣x−y∣≤L∣x−y∣|g(x) - g(y)| = |g'(\xi)||x-y| \le L|x-y|: gg accorcia le distanze (contrazione).

  • Esistenza: h(x)=g(x)−xh(x) = g(x) - x è continua con h(a)=g(a)−a≥0h(a) = g(a) - a \ge 0 e h(b)=g(b)−b≤0h(b) = g(b) - b \le 0 (perché g(x)∈[a,b]g(x) \in [a,b]), quindi per gli zeri esiste α\alpha con h(α)=0h(\alpha) = 0.
  • Unicità: se α,β\alpha, \beta sono punti fissi, ∣α−β∣=∣g(α)−g(β)∣≤L∣α−β∣|\alpha - \beta| = |g(\alpha) - g(\beta)| \le L|\alpha - \beta|, quindi (1−L)∣α−β∣≤0(1-L)|\alpha-\beta| \le 0 e α=β\alpha = \beta.
  • Convergenza e stime: ∣xk−α∣=∣g(xk−1)−g(α)∣≤L∣xk−1−α∣≤⋯≤Lk∣x0−α∣|x_k - \alpha| = |g(x_{k-1}) - g(\alpha)| \le L|x_{k-1} - \alpha| \le \dots \le L^k|x_0 - \alpha|, che tende a 00 perché L<1L<1. Inoltre ∣xk+1−xk∣≤Lk∣x1−x0∣|x_{k+1} - x_k| \le L^k|x_1 - x_0| e, sommando la serie geometrica, ∣xk+m−xk∣≤Lk1−L∣x1−x0∣|x_{k+m} - x_k| \le \frac{L^k}{1-L}|x_1-x_0|; per m→∞m \to \infty si ha la stima a priori ∎.

Il caso locale: se gg è C1C^1, α=g(α)\alpha = g(\alpha) e ∣g′(α)∣<1|g'(\alpha)| < 1, per continuità ∣g′∣≤L<1|g'| \le L<1 in un intorno di α\alpha e l'iterazione converge per x0x_0 abbastanza vicino ad α\alpha. Se ∣g′(α)∣>1|g'(\alpha)| > 1 l'iterazione si allontana da α\alpha (il punto fisso è "repulsivo").

Velocità. Da xk+1−α=g(xk)−g(α)=g′(ξk)(xk−α)x_{k+1} - \alpha = g(x_k) - g(\alpha) = g'(\xi_k)(x_k - \alpha) si ha ek+1ek→g′(α)\frac{e_{k+1}}{e_k} \to g'(\alpha): la convergenza è lineare con tasso ∣g′(α)∣|g'(\alpha)|. Quanto più ∣g′(α)∣|g'(\alpha)| è piccolo, tanto più veloce. Per guadagnare una cifra decimale servono circa 1−log⁡10∣g′(α)∣\frac{1}{-\log_{10}|g'(\alpha)|} iterazioni: ≈5,8\approx 5{,}8 per ∣g′∣=0,67|g'| = 0{,}67 (cos⁡x\cos x), ≈1,2\approx 1{,}2 per ∣g′∣=0,144|g'| = 0{,}144.

Stesso problema, riscritture diverse

Esempio: x3−x−2=0x^3 - x - 2 = 0, α=1,5213797\alpha = 1{,}5213797.

  • g1(x)=x+23g_1(x) = \sqrt[3]{x + 2}. g1′(x)=13(x+2)−2/3g_1'(x) = \frac{1}{3}(x+2)^{-2/3}, e g1′(α)=13⋅3,521382/3=0,1440g_1'(\alpha) = \frac{1}{3\cdot 3{,}52138^{2/3}} = 0{,}1440. Su [1,2][1,2] g1g_1 è crescente con g1(1)=1,442g_1(1) = 1{,}442 e g1(2)=1,587g_1(2) = 1{,}587, quindi g1([1,2])⊂[1,2]g_1([1,2]) \subset [1,2] e ∣g1′∣≤13⋅3−2/3=0,160|g_1'| \le \frac13\cdot 3^{-2/3} = 0{,}160. Converge, con tasso 0,1440{,}144:
kk xkx_k eke_k ek/ek−1e_k / e_{k-1}
00 1,500000001{,}50000000 −2,14⋅10−2-2{,}14\cdot 10^{-2}
11 1,518294491{,}51829449 −3,09⋅10−3-3{,}09\cdot 10^{-3} 0,14430{,}1443
22 1,520935261{,}52093526 −4,44⋅10−4-4{,}44\cdot 10^{-4} 0,14410{,}1441
33 1,521315701{,}52131570 −6,40⋅10−5-6{,}40\cdot 10^{-5} 0,14400{,}1440
44 1,521370491{,}52137049 −9,22⋅10−6-9{,}22\cdot 10^{-6} 0,14400{,}1440
55 1,521378381{,}52137838 −1,33⋅10−6-1{,}33\cdot 10^{-6} 0,14400{,}1440

Ogni iterazione dà quasi una cifra decimale in più.

  • g2(x)=x3−2g_2(x) = x^3 - 2. g2′(x)=3x2g_2'(x) = 3x^2, g2′(α)=6,94>1g_2'(\alpha) = 6{,}94 > 1: il punto fisso è repulsivo. Da x0=1,5x_0 = 1{,}5 si ottiene 1,375, 0,5996, −1,784, −7,68…1{,}375,\ 0{,}5996,\ -1{,}784,\ -7{,}68\ldots: diverge.

La scelta di gg è parte del progetto del metodo. Una regola: se g′(α)=0g'(\alpha) = 0 la convergenza è più che lineare (è il caso del metodo di Newton, nella prossima nota).

Criteri di arresto

Si ferma l'iterazione quando una di queste grandezze è sotto la tolleranza:

  • Incremento ∣xk−xk−1∣|x_k - x_{k-1}|. Per una contrazione, l'errore è al più L1−L\frac{L}{1-L} volte l'incremento: se L=0,9L = 0{,}9 l'errore può essere 99 volte l'incremento. Con LL vicino a 11 un incremento piccolo non garantisce un errore piccolo.
  • Residuo ∣f(xk)∣|f(x_k)|. Vale ∣xk−α∣≈∣f(xk)∣∣f′(α)∣|x_k - \alpha| \approx \frac{|f(x_k)|}{|f'(\alpha)|}: se ∣f′(α)∣|f'(\alpha)| è piccolo (radice quasi multipla, problema mal condizionato) un residuo piccolo non significa errore piccolo. Esempio: f(x)=(x−1)3f(x) = (x-1)^3, x=1,01x = 1{,}01: f=10−6f = 10^{-6} ma l'errore è 10−210^{-2}.
  • Numero massimo di iterazioni, sempre, per evitare cicli infiniti.

Codice

python
import math

def bisezione(f, a, b, tol):
    n = 0
    while (b - a) / 2 > tol:          # errore di c_n <= (b-a)/2^(n+1)
        c = (a + b) / 2
        if f(a) * f(c) <= 0: b = c
        else: a = c
        n += 1
    return (a + b) / 2, n

def punto_fisso(g, x0, tol, nmax=200):
    x = x0
    for k in range(1, nmax + 1):
        xn = g(x)
        if abs(xn - x) <= tol:
            return xn, k
        x = xn
    return x, nmax

print(bisezione(lambda x: x**3 - x - 2, 1, 2, 1e-6))
print(punto_fisso(math.cos, 1.0, 1e-6))
print(punto_fisso(lambda x: (x + 2)**(1/3), 1.5, 1e-10))

Output:

(1.5213804244995117, 19)
(0.7390855263619245, 34)
(1.5213797067927244, 11)

Bisezione: 1919 passi per 10−610^{-6} (previsti 1919). Punto fisso con cos⁡\cos: 3434 iterazioni; con x+23\sqrt[3]{x+2}: 1111 iterazioni per 10−1010^{-10}. In MATLAB fzero(@(x) x.^3 - x - 2, [1 2]) combina bisezione e metodi più veloci.

Errori tipici

  • Applicare la bisezione senza controllare f(a)f(b)<0f(a)f(b) < 0, oppure su un'intervallo con radice di molteplicità pari.
  • Dimenticare che gg deve mandare [a,b][a,b] in sé: ∣g′∣<1|g'| < 1 da sola, senza g([a,b])⊂[a,b]g([a,b]) \subset [a,b], non basta per la convergenza globale.
  • Contare le iterazioni della bisezione dall'errore: cnc_n ha maggiorante b−a2n+1\frac{b-a}{2^{n+1}} (non 2n2^n).
  • Credere che ∣g′(α)∣<1|g'(\alpha)| < 1 garantisca la convergenza da ogni x0x_0: è una condizione locale, vale per x0x_0 abbastanza vicino ad α\alpha.

Domande d'esame

  1. Quante iterazioni di bisezione servono per ridurre l'errore sotto 10−810^{-8} partendo da un intervallo di lunghezza 22? Risposta: n≥log⁡2(2⋅108)−1=26,6→27n \ge \log_2(2\cdot 10^8) - 1 = 26{,}6 \to 27.
  2. Enunciare il teorema delle contrazioni. Risposta: se g([a,b])⊂[a,b]g([a,b]) \subset [a,b] e ∣g′∣≤L<1|g'| \le L<1, il punto fisso è unico e xk+1=g(xk)x_{k+1} = g(x_k) converge per ogni x0x_0 con ∣xk−α∣≤Lk1−L∣x1−x0∣|x_k - \alpha| \le \frac{L^k}{1-L}|x_1 - x_0|.
  3. Che ordine ha la convergenza di un'iterazione di punto fisso con 0<∣g′(α)∣<10<|g'(\alpha)|<1? Risposta: lineare, con tasso ∣g′(α)∣|g'(\alpha)|.
  4. Perché il residuo piccolo non basta come criterio di arresto? Risposta: l'errore è circa ∣f(xk)∣/∣f′(α)∣|f(x_k)|/|f'(\alpha)|, grande se f′(α)f'(\alpha) è piccola.

Versione ripasso

Bisezione (Funzioni continue su un intervalloTeoremi sulle funzioni continue su un intervallo: zeri (con la bisezione), valori intermedi (f manda intervalli in intervalli), monotonia e continuità, continuità dell'inversa, Weierstrass (su [a, b] ci sono massimo e minimo).Funzioni continue su un intervallo →): ff continua, f(a)f(b)<0f(a)f(b)<0. cn=an+bn2c_n=\frac{a_n+b_n}2; si tiene la metà dove ff cambia segno. ∣cn−α∣≤b−a2n+1,n≥log⁡2b−atol−1.|c_n-\alpha|\le\frac{b-a}{2^{n+1}},\qquad n\ge\log_2\frac{b-a}{\text{tol}}-1 .

  • Esempio x3−x−2x^3-x-2 su [1,2][1,2] (α=1,52138\alpha=1{,}52138): c0=1,5c_0=1{,}5 (f=−0,125f=-0{,}125) →[1,5,2]\to[1{,}5,2]; c1=1,75c_1=1{,}75 (f=+1,609f=+1{,}609) →[1,5,1,75]\to[1{,}5,1{,}75]; c2=1,625c_2=1{,}625, c3=1,5625c_3=1{,}5625, c4=1,53125c_4=1{,}53125, c5=1,515625c_5=1{,}515625 (errore 0,00580{,}0058). Per 10−610^{-6}: 1919 passi (n≥18,9n\ge18{,}9).
  • Robusto (solo continuità e cambio di segno) ma lento (lineare, fattore 12\frac12); l'errore effettivo non è monotono; non vale con radici di molteplicità pari.

Punto fisso x=g(x)x=g(x), xk+1=g(xk)x_{k+1}=g(x_k). Se converge, il limite è punto fisso. Molte riscritture possibili (x3−x−2=0x^3-x-2=0: x=x3−2x=x^3-2, x=x+23x=\sqrt[3]{x+2}).

Teorema delle contrazioni: g([a,b])⊂[a,b]g([a,b])\subset[a,b], ∣g′∣≤L<1|g'|\le L<1 ⇒\Rightarrow punto fisso unico, convergenza da ogni x0x_0, e ∣xk−α∣≤Lk∣x0−α∣,∣xk−α∣≤Lk1−L∣x1−x0∣,∣xk−α∣≤L1−L∣xk−xk−1∣.|x_k-\alpha|\le L^k|x_0-\alpha|,\quad|x_k-\alpha|\le\frac{L^k}{1-L}|x_1-x_0|,\quad|x_k-\alpha|\le\frac L{1-L}|x_k-x_{k-1}|.

Esempi.

  • g=cos⁡g=\cos, x0=1x_0=1: 0,5403, 0,8576, 0,6543, 0,7935,⋯→0,7390850{,}5403,\ 0{,}8576,\ 0{,}6543,\ 0{,}7935,\dots\to0{,}739085; ekek−1→−sin⁡α=−0,6736\frac{e_k}{e_{k-1}}\to-\sin\alpha=-0{,}6736 (oscilla). 3434 iterazioni per 10−610^{-6}.
  • g1=x+23g_1=\sqrt[3]{x+2}, x0=1,5x_0=1{,}5: g1′(α)=0,1440g_1'(\alpha)=0{,}1440, errori −2,1⋅10−2, −3,1⋅10−3, −4,4⋅10−4,…-2{,}1\cdot10^{-2},\ -3{,}1\cdot10^{-3},\ -4{,}4\cdot10^{-4},\dots (rapporto 0,1440{,}144), 1111 iterazioni per 10−1010^{-10}.
  • g2=x3−2g_2=x^3-2: g2′(α)=3α2=6,94>1g_2'(\alpha)=3\alpha^2=6{,}94>1, da 1,51{,}5: 1,375, 0,60, −1,78, −7,681{,}375,\ 0{,}60,\ -1{,}78,\ -7{,}68, diverge.

Passaggi principali.

  • Bisezione, numero di iterazioni per intervallo di lunghezza 11: 10−3→n≥8,97→910^{-3}\to n\ge8{,}97\to9; 10−6→18,9→1910^{-6}\to18{,}9\to19; 10−10→32,2→3310^{-10}\to32{,}2\to33 (una cifra decimale ogni 3,33{,}3 passi). Errori effettivi del primo esempio: 0,0214, 0,2286, 0,1036, 0,0411, 0,0099, 0,00580{,}0214,\ 0{,}2286,\ 0{,}1036,\ 0{,}0411,\ 0{,}0099,\ 0{,}0058 (non monotoni) contro i maggioranti 0,5, 0,25, 0,125,…0{,}5,\ 0{,}25,\ 0{,}125,\dots
  • Dimostrazione bisezione: bn−an=b−a2nb_n-a_n=\frac{b-a}{2^n} e α,cn∈[an,bn]\alpha,c_n\in[a_n,b_n] con cnc_n punto medio, quindi ∣cn−α∣≤bn−an2|c_n-\alpha|\le\frac{b_n-a_n}2.
  • Stima a priori: ∣xk+1−xk∣≤Lk∣x1−x0∣|x_{k+1}-x_k|\le L^k|x_1-x_0|, poi ∣xk+m−xk∣≤Lk1−L∣x1−x0∣|x_{k+m}-x_k|\le\frac{L^k}{1-L}|x_1-x_0| e m→∞m\to\infty. Per cos⁡\cos su [0,1][0,1] è L=sin⁡1=0,84L=\sin1=0{,}84: la stima è pessimistica (k≈87k\approx87 per 10−610^{-6}, mentre ne bastano 3434).
  • Cifre per iterazione: 1−log⁡10∣g′(α)∣\frac1{-\log_{10}|g'(\alpha)|}, cioè 5,85{,}8 per 0,670{,}67 e 1,21{,}2 per 0,1440{,}144.
  • g1′(x)=13(x+2)−2/3g_1'(x)=\frac13(x+2)^{-2/3}, massimo su [1,2][1,2] in x=1x=1: 0,1600{,}160; g1(1)=1,442g_1(1)=1{,}442, g1(2)=1,587g_1(2)=1{,}587 (immagine in [1,2][1,2]).

Arresto: incremento (errore ≤L1−L⋅\le\frac L{1-L}\cdotincremento: con L=0,9L=0{,}9 fino a 99 volte), residuo (∣xk−α∣≈∣f(xk)∣∣f′(α)∣|x_k-\alpha|\approx\frac{|f(x_k)|}{|f'(\alpha)|}; (x−1)3(x-1)^3 a 1,011{,}01: f=10−6f=10^{-6}, errore 10−210^{-2}), numero massimo di iterazioni. MATLAB: fzero.

Errori tipici: bisezione senza verificare f(a)f(b)<0f(a)f(b)<0; ∣g′∣<1|g'|<1 senza g([a,b])⊂[a,b]g([a,b])\subset[a,b]; 2n2^n al posto di 2n+12^{n+1}; convergenza locale scambiata per globale.

Esercizi su questo argomento

Teoria collegata