Numeri macchina

Xemitron
Salve. non ho ben chiaro perché se in matlab faccio una sottrazione tipo 1e10 + 0.1 - 1e10 il risultato non è esattamente 0.1. C'entra la cancellazione numerica?

Risposte
feddy
Cosa succede se fai 1e10 + 2^(-1) - 1e10 ?

Xemitron
Beh, in questo caso il risultato è quello che mi aspetterei, cioè 2^(-1). Quindi il problema nel caso precedente è il fatto che 0.1 non è rappresentabile in binario?

feddy
Hai colto il punto. Invece $2^k$, per $k$ in un opportuno range, lo è esattamente.

feddy
Per quanto riguarda la cancellazione, dai un'occhiata qui alla Nota 1.24: https://www.math.unipd.it/~alvise/CN/TE ... errori.pdf

Xemitron
"feddy":
Hai colto il punto. Invece $2^k$, per $k$ in un opportuno range, lo è esattamente.


Quindi l'approssimazione che fa il calcolatore di 0.1 rappresenta quella piccola perturbazione che modifica il risultato finale, essendo un problema mal condizionato? Ho detto giusto?

feddy
Quell'approssimazione di 0.1 è dovuta al fatto che la sua rappresentazione binaria è infinita, ma noi abbiamo a disposizione soltanto un numero finito di cifre. Non parlerei di problema mal condizionato. Piuttosto parlerei solamente di rappresentazione floating point di 0.1, $\text{fl}(x)$

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.