Vai al contenuto

Calcolo numerico/Rappresentazione floating dei numeri

Wikibooks, manuali e libri di testo liberi.
Indice del libro

è 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

[modifica | modifica sorgente]

Definizione

Supponiamo di avere tale che

Chiamiamo floating di , il numero in che associo a , cioè il numero sul calcolatore con cui vogliamo rappresentarlo.

Ci sono varie possibilità:

  1. se , e in particolare se , si ha (numero troppo piccolo per essere rappresentato);
  2. se invece , allora non viene rappresentato, ci troviamo nella bariera di overflow e viene dato un messaggio d'errore;
  3. 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

[modifica | modifica sorgente]

Nel caso , il calcolatore applica la procedura del rounding:

  1. se , si ha (rounding per difetto);
  2. se , si ha (rounding per eccesso);
  3. se , e si applica il rounding to even, cioè si pone se è pari, altrimenti . Il numero da rappresentare ha distanza uguale dai due estremi.

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

[modifica | modifica sorgente]

Dato un generico numero reale, lo si rappresenta sul calcolatore come , e ci si chiede di quanto è l'errore di rappresentazione.

Definizione

L'errore assoluto è uguale a . L'errore relativo è uguale a , con . Viene chiamato errore percentuale .

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.

Supponiamo di essere nell'intervallo , dove lo spacing è di ; consideriamo , di cui bisogna fare il floating. Allora valgono le due seguenti affermazioni:

  1. (l'errore assoluto () è minore di metà dello spacing)
  2. (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)

[modifica | modifica sorgente]

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

[modifica | modifica sorgente]

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)

[modifica | modifica sorgente]

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

[modifica | modifica sorgente]

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.

Consideriamo

Siamo nel caso del rounding to even.