La catastrophic cancellation è un effetto indesiderabile nei calcoli che utilizzano numeri a virgola mobile. Essa si verifica quando un'operazione su due numeri aumenta l’errore relativo più di quanto incrementi l’errore assoluto, ad esempio nel sottrarre due numeri quasi uguali.
Il risultato consiste nella perdita inaccettabile del numero di cifre significative. 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 troncamento effettuato dal calcolatore (in quanto potrebbe succedere che per poter memorizzare i numeri in memoria il calcolatore stesso debba troncare il numero dopo un tot stabilito di cifre dopo la virgola). L’operazione di sottrazione si limita ad amplificare ancora di più questi errori. L’esempio seguente dimostra la perdita di significatività per un numero decimale con 10 cifre significative.
Si consideri il numero decimale
0.1234567891234567890
Una rappresentazione a virgola mobile di questo numero su una macchina che supporta 10 cifre significative sarebbe
0.1234567891
Possiamo notare che la differenza tra i due numeri è molto piccola.
Infatti, calcolando:
0.1234567891234567890 − 0.1234567890 = 0.0000000001234567890
e
0.1234567891 − 0.1234567890 = 0.0000000001
La “perdita di significato” del risultato è data dalle cifre “elise” le quali, invece, in certi ambiti potrebbero essere essenziali.
Per ovviare alla catastrophic cancellation bisogna controllare la stabilità di un algoritmo, cioè vedere se un algoritmo amplifica poco (relativamente alle caratteristiche del calcolatore) gli errori di arrotondamento introdotti nelle singole operazioni.
Fonti: http://it.wikipedia.org/
Per ovviare alla catastrophic cancellation bisogna controllare la stabilità di un algoritmo, cioè vedere se un algoritmo amplifica poco (relativamente alle caratteristiche del calcolatore) gli errori di arrotondamento introdotti nelle singole operazioni.
Fonti: http://it.wikipedia.org/
Nessun commento:
Posta un commento