[EX] Differenze finite e Roundoff error
Ciao a tutti,
propongo un esericizio/tematica che viene data spesso per "random", ma che in realtà non lo è. Considerata l'approssimazione con differenze finite della derivata prima di una funzione $f$ nel punto $x$, si ha
$$\frac{f(x+h)-f(x-h)}{2h} = f'(x) + \frac{f^{(3)}(x)}{6} h^2 + \mathcal{O}(h^4)$$
dove $h$ è l'ampiezza del passo spaziale della discretizzazione. E' evidente che questa approssimazione è del secondo ordine, tuttavia, plottando in un grafico logaritmico il valore di $h$ contro l'approssimazione della derivata prima di $\cos(x)$ a $x=1$, si vede che per valori molto piccoli di $h$ le cose vanno male (il codice Python usato per produrre il grafico è in spoiler)

Come si vede, da $h<10^{-5}$ in poi si ha che l'accuratezza mano a mano viene persa : si dice, anche nei libri, che ciò è dovuto agli errori di arrotondamento, senza dilungarsi troppo.
La domanda dunque è la seguente: è possibile, invece, dimostrare che $h \approx 10^{-5}$ è il valore dal quale in poi si perde accuratezza, assumendo di lavorare in precisione doppia (cioè con $\mu =2^{-53} \approx 10^{-16}$ unità di roundoff)?
Si può assumere che l'approssimazione di $f(x)$ in aritmetica di macchina soddisfi $$\text{fl}(f(x)) = f(x)(1+\delta) \text{ con }|\delta| \leq \mu$$
propongo un esericizio/tematica che viene data spesso per "random", ma che in realtà non lo è. Considerata l'approssimazione con differenze finite della derivata prima di una funzione $f$ nel punto $x$, si ha
$$\frac{f(x+h)-f(x-h)}{2h} = f'(x) + \frac{f^{(3)}(x)}{6} h^2 + \mathcal{O}(h^4)$$
dove $h$ è l'ampiezza del passo spaziale della discretizzazione. E' evidente che questa approssimazione è del secondo ordine, tuttavia, plottando in un grafico logaritmico il valore di $h$ contro l'approssimazione della derivata prima di $\cos(x)$ a $x=1$, si vede che per valori molto piccoli di $h$ le cose vanno male (il codice Python usato per produrre il grafico è in spoiler)

Come si vede, da $h<10^{-5}$ in poi si ha che l'accuratezza mano a mano viene persa : si dice, anche nei libri, che ciò è dovuto agli errori di arrotondamento, senza dilungarsi troppo.
La domanda dunque è la seguente: è possibile, invece, dimostrare che $h \approx 10^{-5}$ è il valore dal quale in poi si perde accuratezza, assumendo di lavorare in precisione doppia (cioè con $\mu =2^{-53} \approx 10^{-16}$ unità di roundoff)?
Si può assumere che l'approssimazione di $f(x)$ in aritmetica di macchina soddisfi $$\text{fl}(f(x)) = f(x)(1+\delta) \text{ con }|\delta| \leq \mu$$
Risposte
Soluzione in spoiler
