Cancellazione numerica
Nell'analisi numerica, la cancellazione numerica è la conseguenza più grave della rappresentazione con precisione finita dei numeri reali all'interno di un calcolatore.
Tale fenomeno consiste nella perdita di cifre significative, dovuta a un'operazione di sottrazione tra due numeri "quasi uguali". Il termine "quasi uguali", indica che i due operandi hanno le prime cifre uguali con .
Le cause di tale inconveniente non sono da attribuire all'operazione di sottrazione effettuata dalla macchina, ma dipendono dagli errori già presenti nei due operandi e da quelli introdotti dal processo di approssimazione effettuato dal calcolatore per poter memorizzare i numeri in memoria. L'operazione di sottrazione si limita ad amplificare gli errori già presenti nei due operandi.
La cancellazione numerica può essere evitata tramite l'apporto di opportune manipolazioni sui due operandi coinvolti nell'operazione di sottrazione.
Condizioni necessarie
[modifica | modifica wikitesto]Affinché si verifichi cancellazione numerica, le seguenti condizioni devono essere soddisfatte:
1) I due numeri devono avere lo stesso segno se si sottraggono, quindi segno opposto se si sommano.
2) I due numeri devono essere dello stesso ordine di grandezza e molto vicini tra loro.
3) Almeno uno dei due numeri deve essere soggetto ad un errore di approssimazione.
Esempio
[modifica | modifica wikitesto]Abbiamo i seguenti due numeri reali:
e
la cui differenza vale
Supponiamo che l'architettura del calcolatore ci permetta di memorizzare solo le prime 6 cifre dopo la virgola, quindi i due numeri per essere rappresentati all'interno del calcolatore, verrebbero troncati (supponiamo per semplicità mediante chopping) appena dopo la sesta cifra:
e
Effettuando la sottrazione e riscrivendo il risultato nella notazione floating point, si ha: