L’errore di arrotondamento è la differenza tra un numero reale o un risultato matematico esatto e il valore effettivamente rappresentato in aritmetica finita. Nei calcolatori nasce perché i numeri reali sono memorizzati con un numero finito di bit, tipicamente in virgola mobile.
Se x è il valore reale e \operatorname{fl}(x) il valore memorizzato, si usa spesso il modello relativo
dove \varepsilon_M è l’epsilon di macchina, cioè una misura della precisione relativa disponibile.
Errore assoluto e relativo
L’errore assoluto misura la distanza diretta tra valore esatto e valore rappresentato:
L’errore relativo normalizza tale distanza rispetto alla scala del problema:
Nel calcolo numerico l’errore relativo è spesso più informativo: sbagliare di 10^{-6} è trascurabile se la grandezza vale 10^3, ma può essere enorme se la grandezza vale 10^{-9}.
Propagazione nelle operazioni
Ogni operazione floating point può essere modellata come il risultato esatto seguito da un arrotondamento:
dove \circ indica addizione, sottrazione, moltiplicazione o divisione, entro le ipotesi ordinarie di assenza di overflow e underflow.
In una catena lunga di operazioni gli errori non restano necessariamente isolati: possono cancellarsi, accumularsi oppure amplificarsi. L’amplificazione dipende sia dal condizionamento numerico del problema sia dalla stabilità dell’algoritmo usato.
Cancellazione numerica
La situazione più critica è la sottrazione tra numeri quasi uguali. Se a e b hanno molte cifre iniziali coincidenti, la differenza a-b può perdere cifre significative e rendere visibili gli errori già presenti negli ultimi bit.
Per esempio, la formula
è numericamente delicata per x molto piccolo. La forma algebricamente equivalente
evita la sottrazione tra quantità quasi uguali e riduce la perdita di precisione.
Confronto con l’errore di troncamento
L’errore di arrotondamento non va confuso con l’errore di troncamento. Il primo dipende dalla precisione finita della macchina; il secondo dipende dalla sostituzione di un oggetto continuo o infinito con un’approssimazione finita.
| Errore | Origine | Come si riduce | Rischio operativo |
|---|---|---|---|
| Arrotondamento | rappresentazione finita dei numeri | precisione maggiore, formule stabili, scalamento | accumulo, cancellazione, overflow |
| Troncamento | discretizzazione o serie tagliata | passo più piccolo, ordine più alto | costo maggiore, possibile instabilità |
Nelle simulazioni il compromesso tra i due è essenziale: un passo troppo grande aumenta il troncamento, mentre un passo eccessivamente piccolo può aumentare il peso relativo dell’arrotondamento.
Errori comuni
- Confrontare numeri floating point con uguaglianza esatta invece di usare una tolleranza coerente con la scala.
- Riscrivere formule solo per eleganza algebrica, senza valutare la stabilità numerica.
- Interpretare ogni discrepanza numerica come errore di codice: spesso è una conseguenza prevedibile della precisione finita.
- Ignorare il numero di condizionamento del problema quando gli errori di arrotondamento sembrano crescere senza controllo.