Salta al contenuto
Note per Studenti Esercizio - Passo ottimo nella derivata numerica di ln x, differenze in avanti e centrate

Esercizio - Passo ottimo nella derivata numerica di ln x, differenze in avanti e centrate

In questa pagina 3

Teoria: 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 → (troncamento contro arrotondamento); gli sviluppi sono in Formula di Taylor con resto di LagrangeSe f ha n+1 derivate continue su [a,b], l'errore tra f e il suo polinomio di Taylor si scrive esattamente come f^(n+1)(c)(x-x0)^(n+1)/(n+1)! per un c opportuno: serve a stimare l'errore su tutto un intervallo e a scegliere il grado del polinomio.Formula di Taylor con resto di Lagrange →.

Testo

Si vuole approssimare f′(10)f'(10) per f(x)=ln⁡xf(x) = \ln x (valore esatto f′(10)=0,1f'(10) = 0{,}1) in doppia precisione, con unità di arrotondamento u=1,11⋅10−16u = 1{,}11\cdot 10^{-16}.

  • (a) Per la differenza in avanti Dh+=f(x+h)−f(x)hD_h^+ = \frac{f(x+h) - f(x)}{h} ricavare l'errore di troncamento, la stima dell'errore di arrotondamento, l'errore relativo totale E+(h)E^+(h) e il passo ottimo h+h^+.
  • (b) Fare lo stesso per la differenza centrata Dhc=f(x+h)−f(x−h)2hD_h^c = \frac{f(x+h) - f(x-h)}{2h}.
  • (c) Confrontare con i valori misurati.
  • (d) Domanda teorica: perché, a parità di costo, la differenza centrata permette di arrivare a una precisione molto migliore?

Soluzione

Si ha f(10)=ln⁡10=2,3026f(10) = \ln 10 = 2{,}3026, f′=1x=0,1f' = \frac1x = 0{,}1, f′′=−1x2=−0,01f'' = -\frac{1}{x^2} = -0{,}01, f′′′=2x3=0,002f''' = \frac{2}{x^3} = 0{,}002.

(a) Differenza in avanti

  • Troncamento. Da Taylor f(x+h)=f(x)+hf′(x)+h22f′′(ξ)f(x+h) = f(x) + hf'(x) + \frac{h^2}2f''(\xi), quindi Dh+−f′(x)=h2f′′(ξ)D_h^+ - f'(x) = \frac h2f''(\xi). In valore relativo a f′f': h2⋅∣f′′∣f′=h2⋅0,010,1=h20\frac{h}{2}\cdot\frac{|f''|}{f'} = \frac h2\cdot\frac{0{,}01}{0{,}1} = \frac{h}{20}.
  • Arrotondamento. Ciascuno dei due valori di ln⁡\ln ha errore assoluto ≲u∣f∣=2,56⋅10−16\lesssim u|f| = 2{,}56\cdot 10^{-16}; la differenza ha errore ≲2u∣f∣\lesssim 2u|f|, e dopo la divisione per hh: 2u∣f∣h\frac{2u|f|}{h}. In relativo a f′f': 2⋅2,56⋅10−160,1 h=5,1⋅10−15h\frac{2\cdot 2{,}56\cdot 10^{-16}}{0{,}1\,h} = \frac{5{,}1\cdot 10^{-15}}{h}.
  • Errore totale: E+(h)=h20+5,1⋅10−15hE^+(h) = \dfrac{h}{20} + \dfrac{5{,}1\cdot 10^{-15}}{h}.
  • Minimo: E+′=120−5,1⋅10−15h2=0⇒h+=20⋅5,1⋅10−15=1,02⋅10−13=3,2⋅10−7E^{+\prime} = \frac1{20} - \frac{5{,}1\cdot 10^{-15}}{h^2} = 0 \Rightarrow h^+ = \sqrt{20\cdot 5{,}1\cdot 10^{-15}} = \sqrt{1{,}02\cdot 10^{-13}} = \mathbf{3{,}2\cdot 10^{-7}}, con E+(h+)=2⋅h+20=3,2⋅10−8E^+(h^+) = 2\cdot\frac{h^+}{20} = \mathbf{3{,}2\cdot 10^{-8}}.

(La formula generale h+=2u ∣f∣/∣f′′∣h^+ = 2\sqrt{u\,|f|/|f''|} dà 21,11⋅10−16⋅230,26=3,2⋅10−72\sqrt{1{,}11\cdot 10^{-16}\cdot 230{,}26} = 3{,}2\cdot 10^{-7} ✓.)

(b) Differenza centrata

  • Troncamento. Sommando gli sviluppi di f(x+h)f(x+h) e −f(x−h)-f(x-h) i termini in h2h^2 si cancellano: Dhc−f′(x)=h26f′′′(ξ)D_h^c - f'(x) = \frac{h^2}6f'''(\xi). Relativo a f′f': h26⋅0,0020,1=h2300\frac{h^2}{6}\cdot\frac{0{,}002}{0{,}1} = \frac{h^2}{300}.
  • Arrotondamento. Differenza di due valori divisa per 2h2h: errore ≲2u∣f∣2h=u∣f∣h\lesssim \frac{2u|f|}{2h} = \frac{u|f|}{h}, relativo 2,56⋅10−160,1 h=2,56⋅10−15h\frac{2{,}56\cdot 10^{-16}}{0{,}1\,h} = \frac{2{,}56\cdot 10^{-15}}{h}.
  • Errore totale: Ec(h)=h2300+2,56⋅10−15hE^c(h) = \dfrac{h^2}{300} + \dfrac{2{,}56\cdot 10^{-15}}{h}. Derivando: 2h300=2,56⋅10−15h2\frac{2h}{300} = \frac{2{,}56\cdot 10^{-15}}{h^2}, cioè h3=3,84⋅10−13h^3 = 3{,}84\cdot 10^{-13} e hc=7,3⋅10−5h^c = \mathbf{7{,}3\cdot 10^{-5}}. Il minimo vale Ec(hc)=1,8⋅10−11+3,5⋅10−11=5,3⋅10−11E^c(h^c) = 1{,}8\cdot 10^{-11} + 3{,}5\cdot 10^{-11} = \mathbf{5{,}3\cdot 10^{-11}}.

(c) Confronto con il calcolo

Errori relativi misurati (doppia precisione):

hh 10−210^{-2} 10−410^{-4} 10−610^{-6} 3⋅10−73\cdot 10^{-7} 10−810^{-8} 10−1210^{-12}
in avanti 5,0⋅10−45{,}0\cdot 10^{-4} 5,0⋅10−65{,}0\cdot 10^{-6} 5,5⋅10−85{,}5\cdot 10^{-8} 2,1⋅10−82{,}1\cdot 10^{-8} 8,3⋅10−88{,}3\cdot 10^{-8} 8,0⋅10−48{,}0\cdot 10^{-4}
hh 10−210^{-2} 10−410^{-4} 7⋅10−57\cdot 10^{-5} 10−610^{-6} 10−810^{-8}
centrata 3,3⋅10−73{,}3\cdot 10^{-7} 2,9⋅10−112{,}9\cdot 10^{-11} 1,9⋅10−111{,}9\cdot 10^{-11} 1,6⋅10−91{,}6\cdot 10^{-9} 8,3⋅10−88{,}3\cdot 10^{-8}

I minimi si trovano dove previsto: h≈3⋅10−7h \approx 3\cdot 10^{-7} per il metodo in avanti (errore 2,1⋅10−82{,}1\cdot 10^{-8}, inferiore alla stima 3,2⋅10−83{,}2\cdot 10^{-8} perché la stima è un maggiorante) e h≈7⋅10−5h \approx 7\cdot 10^{-5} per quello centrato (errore 1,9⋅10−111{,}9\cdot 10^{-11} contro 5,3⋅10−115{,}3\cdot 10^{-11}).

(d) Perché la centrata è migliore

Il troncamento della centrata è O(h2)O(h^2) invece di O(h)O(h), quindi si ottiene lo stesso errore di troncamento con un passo molto più grande; un passo più grande significa meno cancellazione (∝u/h\propto u/h). Il punto di compromesso scende da ≈10−8\approx 10^{-8} (u\sqrt u) a ≈10−5\approx 10^{-5} (u1/3u^{1/3}) e la precisione raggiunta da u1/2u^{1/2} a u2/3u^{2/3}: qui da 10−810^{-8} a 10−1110^{-11}, con due valutazioni di ff in entrambi i casi.

Risultati. h+=3,2⋅10−7h^+ = \mathbf{3{,}2\cdot 10^{-7}}, errore ≈3⋅10−8\approx 3\cdot 10^{-8}; hc=7,3⋅10−5h^c = \mathbf{7{,}3\cdot 10^{-5}}, errore ≈5⋅10−11\approx 5\cdot 10^{-11}.

Errori tipici

  • Prendere hh più piccolo possibile ("più preciso"): sotto h+h^+ l'errore cresce come 1/h1/h.
  • Usare h=uh = \sqrt u anche per la centrata: il passo giusto è ∼u1/3\sim u^{1/3}.
  • Dimenticare di dividere l'errore di arrotondamento per hh.

Versione ripasso

Dati: f=ln⁡xf=\ln x in x=10x=10, f=2,3026f=2{,}3026, f′=0,1f'=0{,}1, f′′=−0,01f''=-0{,}01, f′′′=0,002f'''=0{,}002, u=1,11⋅10−16u=1{,}11\cdot10^{-16} (Formula di Taylor con resto di LagrangeSe f ha n+1 derivate continue su [a,b], l'errore tra f e il suo polinomio di Taylor si scrive esattamente come f^(n+1)(c)(x-x0)^(n+1)/(n+1)! per un c opportuno: serve a stimare l'errore su tutto un intervallo e a scegliere il grado del polinomio.Formula di Taylor con resto di Lagrange →).

(a) In avanti. Troncamento h2f′′(ξ)\frac h2f''(\xi), relativo h20\frac h{20}; arrotondamento 2u∣f∣h\frac{2u|f|}{h}, relativo 5,1⋅10−15h\frac{5{,}1\cdot10^{-15}}h.

  • E+(h)=h20+5,1⋅10−15hE^+(h)=\frac h{20}+\frac{5{,}1\cdot10^{-15}}h, minimo per h+=20⋅5,1⋅10−15=3,2⋅10−7h^+=\sqrt{20\cdot5{,}1\cdot10^{-15}}=3{,}2\cdot10^{-7}, E+=3,2⋅10−8E^+=3{,}2\cdot10^{-8}.
  • Formula generale h+=2u∣f∣/∣f′′∣h^+=2\sqrt{u|f|/|f''|}.

(b) Centrata. Troncamento h26f′′′(ξ)\frac{h^2}6f'''(\xi), relativo h2300\frac{h^2}{300}; arrotondamento relativo 2,56⋅10−15h\frac{2{,}56\cdot10^{-15}}h.

  • Ec(h)=h2300+2,56⋅10−15hE^c(h)=\frac{h^2}{300}+\frac{2{,}56\cdot10^{-15}}h, h3=3,84⋅10−13h^3=3{,}84\cdot10^{-13}, hc=7,3⋅10−5h^c=7{,}3\cdot10^{-5}, Ec=1,8⋅10−11+3,5⋅10−11=5,3⋅10−11E^c=1{,}8\cdot10^{-11}+3{,}5\cdot10^{-11}=5{,}3\cdot10^{-11}.

(c) Misure. In avanti: 5⋅10−45\cdot10^{-4} (h=10−2h=10^{-2}), 5,5⋅10−85{,}5\cdot10^{-8} (10−610^{-6}), minimo 2,1⋅10−82{,}1\cdot10^{-8} (3⋅10−73\cdot10^{-7}), 8⋅10−48\cdot10^{-4} (10−1210^{-12}). Centrata: 2,9⋅10−112{,}9\cdot10^{-11} (10−410^{-4}), 1,9⋅10−111{,}9\cdot10^{-11} (7⋅10−57\cdot10^{-5}). Le stime sono maggioranti.

(d) Troncamento O(h2)O(h^2): passo maggiore, meno cancellazione; il compromesso passa da u\sqrt u a u1/3u^{1/3} e la precisione da u1/2u^{1/2} a u2/3u^{2/3}.

Errori tipici: hh il più piccolo possibile; h=uh=\sqrt u anche per la centrata; non dividere per hh l'errore di arrotondamento.

Teoria collegata