Calcolo numerico/Rappresentazione floating dei numeri
Riepilogo
è definito come Matlab di default lavora con la doppia precisione.
Rappresentando i numeri macchina sulla retta reale, esistono (barriera di underflow) e (barriera di overflow) tali che al di fuori di i numeri non siano rappresentabili. All'aumentare dei numeri, i numeri si diradano. Lo spacing nell'intervallo è .
Floating di un numero
Ci sono varie possibilità:
- se , e in particolare se , si ha (numero troppo piccolo per essere rappresentato);
- se invece , allora non viene rappresentato, ci troviamo nella bariera di overflow e viene dato un messaggio d'errore;
- quando , e ha più cifre di mantissa di quelle che abbiamo a disposizione, allora rappresento dove viene determinata in base al procedimento del rounding.
Procedura del rounding
Nel caso , il calcolatore applica la procedura del rounding:
- se , si ha (rounding per difetto);
- se , si ha (rounding per eccesso);
- se , e si applica il rounding to even, cioè si pone se è pari, altrimenti . Il numero da rappresentare ha distanza uguale dai due estremi.
Esempio 1.3
Supponiamo di avere . Scrivere il floating dei seguenti numeri:
1.
2.
3.
4.
5.
è spostato più a destra dell'intervallo, quindi si approssima per eccesso.
Errore di rappresentazione
Dato un generico numero reale, lo si rappresenta sul calcolatore come , e ci si chiede di quanto è l'errore di rappresentazione.
Esempio 1.4
Consideriamo
(differiscono sulla quarta cifra decimale)
Consideriamo poi
(l'errore assoluto differisce molto da quello precedente)
(l'errore relativo è uguale a prima).
L'errore assoluto valuta il numero e l'ordine di grandezza. L'errore relativo non considera l'ordine di grandezza dei numeri confrontati.
Teorema 1.2
Supponiamo di essere nell'intervallo , dove lo spacing è di ; consideriamo , di cui bisogna fare il floating. Allora valgono le due seguenti affermazioni:
- (l'errore assoluto () è minore di metà dello spacing)
- (l'errore relativo è strettamente minore della round of unit).
Dal teorema emerge che l'errore assoluto dipende anche dall'ordine di grandezza del numero (), e aumenta in corrispondenza della grandezza del numero. L'errore relativo dipende solo dal numero di cifre di mantissa ().
Dimostrazione (Secondo punto)
Dimostriamo il punto 2.
, allora
e siccome allora proseguendo con le disuguaglianze:
Per poter dimostrare la disuguaglianza stretta (primo punto del teorema), notiamo la seguente osservazione:
Osservazione 1.2
Supponiamo di essere in base 2 con la doppia precisione, l'errore relativo che commettiamo rappresentando un numero con il suo floating è di .
Dimostrazione (Primo punto)
Nella disuguaglianza vale l'uguale nel caso in cui (errore assoluto pari a metà dello spacing). Allora , e tutte le cifre successive sono nulle. Approssimiamo al pari più vicino (rounding to even).
dove , ma allora , quindi
allora questo numero è strettamente maggiore di , quindi la prima disuguaglianza nella catena sopra è stretta.
L'errore di rappresentazione in aritmetica floating-point è sempre più piccolo della round of unit.
cvd
Definizione 1.4
Supponiamo che approssima il numero con , allora si dice che cifre della rappresentazione di sono esatte.
Se approssima in modo tale che le prime cifre coincidono, allora . Non vale viceversa: non è vero che se l'errore è più piccolo della quantità , allora le prime cifre coincidono.
Esempio 1.5
Consideriamo
Siamo nel caso del rounding to even.