Abbiamo visto vari tipi di floating point :
1)il primo è stato single con 32 bit (8byte,1word)
2) poi abbiamo visto double, è di precisione doppia rispetto a single infatti è a 64 bit (16 byte, 2 word).
Questi due tipi di floating point su su base 2. Invece
3) decimal utilizza 128 bit, e lavora diversamente dai primi due tipi. In quanto mentre i primi due lavorano su base 2 cioè il sistema nativo del computer. Decimale lavora in base dieci ed è il sistema che usiamo nella vita di tutti i giorni. E' una floating point di dieci, utile per quando si fa riferimento agli importi monetari, ad esempio le transazioni bancarie. Cioè nei calcoli finanziari. Siccome abbiamo visto che tramite queste sequenze di bit, noi riusciamo a rappresentare soltanto un insieme finito di valori di un certo range. Da un numero minimo ad uno massimo. Possiamo incorrere in rounding error→ cioè accumulazione di errori di approssimazione e non sono evitabili perché sono insiti nel tipo di rappresentazione e nel fatto che il numero delle rappresentazioni possibili è comunque finito.
problemi che si possono verificare
Con riferimento alla rappresentazione floating point, si possono verificare i seguenti problemi :
se prendo due valori molto vicini tra loro ad esempio: A e B
e facciamo la sottrazione di questi due numeri quasi uguali. Tutte le cifre che esprimono la precisione di questa osservazione vengono trasformate in zero. Passiamo da numero con una certa precisione a numeri che annullano questa precisione quindi c'è una perdita di significatività.
Che viene definita catastrophic cancellation e non è l'effetto cumulativo di tanti errori di approssimazione. Ma in un colpo solo abbiamo ottenuto una perdita catastrofica. Questo problema esce fuori nel calcolo della varianza di una variabile. Cioè quando scriviamo
Un altro esempio di cancellazione catastrofica si può ottenere sommando due numeri A+B con A>>B o simmetricamente B<<A . Mi perdo la precisione del numero piccolo.
Il problema diventa maggiore se ho una sequenza di operazioni. Cioè sommo numero grande con un numero piccolo con un numero grande con un numero piccolo ecc.
Questo porta ad perdita catastrofica di significatività. Sono stati inventati degli algoritmi che introducono dei termini di correzione, per fare in modo che vegono preservate le cifre significative, che normalmente andrebbero perse. Uno di questi è l'algoritmo di Newmaier, per la media avevamo visto l'algoritmo di Knuth per evitare la perdita di significatività.
Nessun commento:
Posta un commento