Numeri di
         macchina


Luca Zanni , Marco Prato

              Calcolo Numerico
Corsi di Laurea in Matematica e Inf...
Rappresentazione interna dei numeri

A causa della limitata lunghezza della locazione di memoria
disponibile per rappresen...
Numeri interi
Sia M il numero di bits riservati per la rappresentazione di un
numero in un elaboratore

Interi positivi

S...
Numeri interi
Il massimo numero intero positivo rappresentabile esattamente
con M bits è dato da

                        ...
Numeri interi
Interi negativi

Per unificare le operazioni di addizione e sottrazione si usa
rappresentare i numeri interi...
Numeri interi
Esempio: rappresentazione interna di n = -5 su M = 16 bits

- Si considera la rappresentazione di 5 su 16 bi...
Numeri interi
Il minimo numero intero negativo rappresentabile esattamente
con M bits è dato da

                         ...
Numeri interi
I numeri interi rappresentabili con M bits sono quindi

                      2(M-1) – 1 + 2(M-1) + 1 = 2M

...
Numeri reali
Sia x ≠ 0 il numero reale che si vuole rappresentare.
Consideriamo il numero scritto in rappresentazione bina...
Numeri reali
I bit riservati per la memorizzazione in precisione semplice (32
bit) e in precisione doppia (64 bit) di un n...
Numeri reali
              Precisione semplice

                        32 bits


          s      p                mantis...
Esempio
 Rappresentazione interna di x = (4.25)10 in precisione semplice

                    x = (100.01)2 = 1.0001 · 22
...
Numeri reali
Numero positivo più piccolo rappresentabile in precisione semplice:

                   xmin = 1.00…0 · 2-126...
Osservazione
Il valore di p corrispondente alla configurazione degli l bit in
precisione semplice è il seguente:

 configu...
Errore di rappresentazione
Rappresentando un numero reale x = ±m·βp su un calcolatore (con t
bit a disposizione per la man...
Errore di rappresentazione
Rappresentando un numero reale x = ±m·βp su un calcolatore (con t
bit a disposizione per la man...
Esempi
- β = 10, t = 4
                             tr(x) = 0.3478·103
       x = 0.347821·103
                           ...
Precisione di macchina
Teorema
Siano x un numero reale non nullo, x’ approssimazione di macchina
di x. L’errore relativo c...
Operazioni tra interi di macchina
Addizione tra interi di macchina

Siano x’ e y’ due numeri interi rappresentabili su M b...
Operazioni tra interi di macchina
Sottrazione tra interi di macchina

Siano x’ e y’ due numeri interi rappresentabili su M...
Operazioni tra interi di macchina
Moltiplicazione tra interi di macchina

Siano x’ e y’ due numeri interi rappresentabili ...
Operazioni tra interi di macchina
Moltiplicazione tra interi di macchina

Esempio: M = 6, x’ = 000011, y’ = 000101        ...
Operazioni tra interi di macchina
Moltiplicazione tra interi di macchina                R

               A        000011 ...
Operazioni tra interi di macchina
Moltiplicazione tra interi di macchina

Esempio: M = 3 , β = 10, x’ = 215, y’ = 162

A  ...
Operazioni tra interi di macchina
Divisione tra interi di macchina

Siano x’ e y’ due numeri interi rappresentabili su M b...
Operazioni tra interi di macchina
Divisione tra interi di macchina

Esempio: M = 6, x’ = 010000, y’ = 000101

Inizialmente...
Operazioni tra interi di macchina
Divisione tra interi di macchina

Esempio: M = 6, x’ = 010000, y’ = 000101
             ...
Operazioni tra interi di macchina
Divisione tra interi di macchina

Esempio: M = 4, β = 10, x’ = 3151, y’ = 0012

A       ...
Operazioni tra reali di macchina
Addizione e sottrazione tra reali di macchina

Siano

x’ = ±m’x·βp = (0.x1x2…xt) (x1 ≠ 0)...
Operazioni tra reali di macchina
Addizione e sottrazione tra reali di macchina

2. Somma delle mantisse: si esegue mz = m’...
Operazioni tra reali di macchina
Esempio: sommare i numeri di macchina

       x’ = 0.12345678·102, y’ = 0.23456789·10-1 (...
Operazioni tra reali di macchina
Esempio: sommare i numeri di macchina

       x’ = 0.75869978·102, y’ = 0.98151815·102 (β...
Operazioni tra reali di macchina
Esempio: sommare i numeri di macchina

      x’ = 0.75869978·102, y’ = -0.75868863·102 (β...
Operazioni tra reali di macchina
Moltiplicazione tra reali di macchina

Siano

x’ = ±m’x·βp = (0.x1x2…xt) (x1 ≠ 0) , y’ = ...
Operazioni tra reali di macchina
Moltiplicazione tra reali di macchina

2. Controllo della caratteristica: si pone s = p +...
Operazioni tra reali di macchina
Divisione tra reali di macchina

Siano

x’ = ±m’x·βp = (0.x1x2…xt) (x1 ≠ 0) , y’ = ±m’y·β...
Operazioni tra reali di macchina
Divisione tra reali di macchina
2. Divisione delle mantisse: si calcola mz = m’x / m’y . ...
Considerazioni sull’aritmetica
                  di macchina
In aritmetica di macchina non valgono le seguenti (*):
- prop...
Considerazioni sull’aritmetica
                 di macchina
Esempio: non validità delle proprietà associativa della somma
...
Considerazioni sull’aritmetica
                di macchina
Esempio: non unicità dell’elemento neutro per la somma
Siano
  ...
Considerazioni sull’aritmetica
                 di macchina
Esempio: il prodotto di macchina tra due numeri di macchina pu...
Errore sulle operazioni di macchina

Se x è un numero reale e x’ è la sua approssimazione di macchina,
valgono le formule ...
Errore sulle operazioni di macchina
                z ' = z (1 + ε ) = ( x' # y ' )(1 + ε ),     ε ≤ eps

Tenendo conto de...
Errore sulle operazioni di macchina
Somma
Sia S = x + y la somma algebrica di due numeri reali x e y; la somma
calcolata r...
Cancellazione di cifre
Consideriamo i numeri reali x = 0.12345789, y = -0.12343211. Siano
x’ = 0.12345·100, y’ = -0.12343·...
Errore sulle operazioni di macchina
Moltiplicazione
Sia P = x * y il prodotto algebrico tra due numeri reali x e y; il
pro...
Errore sulle operazioni di macchina
Divisione
Sia Q = x / y la divisione algebrica tra due numeri reali x e y; la
division...
Errore inerente e errore algoritmico
In generale, l’errore relativo commesso durante il calcolo di
un’espressione razional...
Errore inerente
 Errore relativo sui dati               Errore relativo sui risultati
            x − x'                  ...
Condizionamento
Le operazioni di moltiplicazione e di divisione tra due numeri reali
sono problemi ben condizionati

     ...
Errore inerente e errore algoritmico
L’errore relativo commesso durante il calcolo di un’espressione
razionale φ(x) a part...
Errore algoritmico e stabilità
                   Errore relativo sui risultati
                             φ( x) − fl (φ...
Errore totale
L’errore totale deve tener conto sia della presenza di dati
approssimati sia degli errori introdotti ad ogni...
Somma di tre numeri
Esempio: siano a, b, c numeri reali di cui si vuole calcolare la somma
s=a+b+c

Errore inerente (dati ...
Somma di tre numeri
Esempio: siano a, b, c numeri reali di cui si vuole calcolare la somma
s=a+b+c

Errore totale (dati pe...
Upcoming SlideShare
Loading in …5
×

Calcolo Numerico - 2 - Numeri Di Macchina

9,893 views

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,893
On SlideShare
0
From Embeds
0
Number of Embeds
138
Actions
Shares
0
Downloads
95
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Calcolo Numerico - 2 - Numeri Di Macchina

  1. 1. Numeri di macchina Luca Zanni , Marco Prato Calcolo Numerico Corsi di Laurea in Matematica e Informatica
  2. 2. Rappresentazione interna dei numeri A causa della limitata lunghezza della locazione di memoria disponibile per rappresentare i numeri, si possono rappresentare solo un intervallo limitato di numeri interi e un insieme finito di numeri reali I numeri rappresentabili esattamente sul calcolatore sono detti numeri finiti o numeri di macchina
  3. 3. Numeri interi Sia M il numero di bits riservati per la rappresentazione di un numero in un elaboratore Interi positivi Sono caratterizzati da una rappresentazione binaria con il primo bit uguale a 0 Ad esempio, n = 109 su 16 bit (M = 16) ha una rappresentazione interna 00000000 01101101 (109)10 = (1101101)2
  4. 4. Numeri interi Il massimo numero intero positivo rappresentabile esattamente con M bits è dato da Nmax = 2(M-1)-1 011……………1 Esempi: M = 16 Nmax = 215-1 = 32767 M = 32 Nmax = 231-1 = 2147483647
  5. 5. Numeri interi Interi negativi Per unificare le operazioni di addizione e sottrazione si usa rappresentare i numeri interi negativi nella forma complemento a due. Sia –n il numero intero negativo da rappresentare con M bits: - si considera la rappresentazione di n su M bits - si invertono logicamente tutte le M cifre - si somma 1 al risultato dell’inversione logica
  6. 6. Numeri interi Esempio: rappresentazione interna di n = -5 su M = 16 bits - Si considera la rappresentazione di 5 su 16 bits 00000000 00000101 - Si esegue l’inversione logica delle 16 cifre 11111111 11111010 - Si somma 1 al risultato dell’inversione logica 11111111 11111011
  7. 7. Numeri interi Il minimo numero intero negativo rappresentabile esattamente con M bits è dato da Nmin = -2(M-1) 100……………0 Esempi: M = 16 Nmin = -215 = -32768 M = 32 Nmin = -231 = -2147483648 Quando si cerca di rappresentare un numero n > Nmax o n < Nmin si parla di overflow
  8. 8. Numeri interi I numeri interi rappresentabili con M bits sono quindi 2(M-1) – 1 + 2(M-1) + 1 = 2M positivi negativi lo zero Esempio: M = 4 bits 0 111 7 1 111 -1 0 110 6 1 110 -2 0 101 5 1 101 -3 0 100 4 1 100 -4 0 011 3 1 011 -5 0 010 2 1 010 -6 0 001 1 1 001 -7 0 000 0 1 000 -8
  9. 9. Numeri reali Sia x ≠ 0 il numero reale che si vuole rappresentare. Consideriamo il numero scritto in rappresentazione binaria, con notazione posizionale e con la prima cifra significativa (che è sempre 1) a sinistra del punto radice1: x = (-1)s · 1.a1a2a3… · 2p Si devono memorizzare: - s (0 se x > 0, 1 se x < 0) 1 bit - le cifre a1a2a3… della mantissa t bits - la caratteristica p (Emin ≤ p ≤ Emax) l bits (la rappresentazione di p è traslata: si rappresenta p + bias) 1:rappresentazione nel formato IEEE (Institute of Electrical and Electronics Engineers) standard for binary floating-point arithmetic, documento 754 dell’ANSI
  10. 10. Numeri reali I bit riservati per la memorizzazione in precisione semplice (32 bit) e in precisione doppia (64 bit) di un numero reali sono così distribuiti: precisione precisione semplice doppia n. bit 32 (4 bytes) 64 (8 bytes) s 1 1 t 23 52 l 8 11 bias 127 1023 Emin -126 -1022 Emax 127 1023
  11. 11. Numeri reali Precisione semplice 32 bits s p mantissa 8 bits 23 bits Precisione doppia 64 bits s p mantissa 11 bits 52 bits
  12. 12. Esempio Rappresentazione interna di x = (4.25)10 in precisione semplice x = (100.01)2 = 1.0001 · 22 - s = 0 (x > 0) - le cifre della mantissa da memorizzare sono 0001 - l’esponente è 2 ma si deve memorizzare in forma traslata (p + bias) p 0 0 0 0 0 0 1 0 bias (127) 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 01000000 10001000 00000000 00000000 segno caratteristica mantissa
  13. 13. Numeri reali Numero positivo più piccolo rappresentabile in precisione semplice: xmin = 1.00…0 · 2-126 ~ 1.17 · 10-38 00000000 10000000 00000000 00000000 Numero positivo più grande rappresentabile in precisione semplice: xmax = 1.11…1 · 2127 ~ 3.40 · 1038 01111111 01111111 11111111 11111111 Precisione doppia: xmin = 1.00…0 · 2-1022 ~ 2.22 · 10-308 , xmax = 1.11…1 · 21023 ~ 1.7 · 10308
  14. 14. Osservazione Il valore di p corrispondente alla configurazione degli l bit in precisione semplice è il seguente: configurazione degli 8 bit p mantissa con tutti bit nulli: rappresentazione di 0 00000000 (*) 00000001 -126 (Emin) mantissa con bit non nulli: 00000010 -125 rappresentazione dei numeri denormalizzati 011111110 -1 011111111 0 10000000 1 10000001 2 mantissa con tutti bit nulli: rappresentazione di Inf 11111110 127 (Emax) 11111111 (**) mantissa con bit non nulli: rappresentazione di Nan
  15. 15. Errore di rappresentazione Rappresentando un numero reale x = ±m·βp su un calcolatore (con t bit a disposizione per la mantissa), si presenta uno dei seguenti quattro casi: 1. x può essere rappresentato in modo esatto (numero di macchina) 2. x è, in valore assoluto, più piccolo del più piccolo numero positivo rappresentabile (p < Emin). In questo caso si verifica un underflow e generalmente si assume 0 come valore approssimato di x (con eventuale segnalazione di warning) 3. x è, in valore assoluto, più grande del più grande numero positivo rappresentabile (p > Emax). In questo caso si verifica un overflow, x viene approssimato con ±∞ a seconda del segno e il sistema arresta il calcolo
  16. 16. Errore di rappresentazione Rappresentando un numero reale x = ±m·βp su un calcolatore (con t bit a disposizione per la mantissa), si presenta uno dei seguenti quattro casi: 4. la caratteristica è rappresentabile in modo esatto (Emin ≤ p ≤ Emax), ma la mantissa m di x non è rappresentabile con t cifre. In questo caso il numero x = ±a1a2a3…·βp viene approssimato con il numero di macchina x’ = ±m’·βp , con 0.a1a2 ...at troncamento    −t 1 m' =  at + β se at +1 ≥ 2 β  0.a1a2 ...at at =  arrotondamento a 1  se at +1 < β   t  2
  17. 17. Esempi - β = 10, t = 4 tr(x) = 0.3478·103 x = 0.347821·103 rd(x) = 0.3478·103 tr(x) = 0.3478·103 x = 0.347891·103 rd(x) = 0.3479·103 - β = 2, t = 4 tr(x) = 0.1011·210 x = 0.101101·210 rd(x) = 0.1011·210 tr(x) = 0.1011·210 x = 0.101110·210 rd(x) = 0.1100·210
  18. 18. Precisione di macchina Teorema Siano x un numero reale non nullo, x’ approssimazione di macchina di x. L’errore relativo che si commette approssimando x con x’ è  β 1−t troncamento x − x'  εx ≡ ≤ eps, eps =  1 1−t x  β −t arrotondamento 2 La quantità eps è detta precisione di macchina ed è definita come il più piccolo numero di macchina che sommato a 1 restituisce come numero di macchina un numero maggiore di 1 Su calcolatore la precisione di macchina è data da: N.B.: il +1 corrisponde alla 21-(23+1) = 2-23 ~ 1.19·10-7 (32 bit) cifra a sinistra del punto eps = radice che, essendo sempre 1, 21-(52+1) = 2-52 ~ 2.22·10-16 (64 bit) non viene memorizzata
  19. 19. Operazioni tra interi di macchina Addizione tra interi di macchina Siano x’ e y’ due numeri interi rappresentabili su M bit. Si possono avere due casi: 1. la somma z = x’ + y’ richiede M cifre la sua rappresentazione di macchina z’ coincide con z Esempio: M = 5, x’ = 10101, y’ = 00111 z = 11100 z’ = z 2. la somma z = x’ + y’ richiede M+1 cifre la sua rappresentazione di macchina z’ coincide con un numero congruo a z modulo 2M (ovvero, z - z’ = k · 2M, con k numero intero). In questo caso si dice che l’addizione ha provocato un traboccamento Esempio: M = 5, x’ = 10101, y’ = 01101 z = 100010 z’ = 00010
  20. 20. Operazioni tra interi di macchina Sottrazione tra interi di macchina Siano x’ e y’ due numeri interi rappresentabili su M bit. L’operazione z = x’ - y’ viene eseguita come la somma di x’ con il complemento a due di y’ Esempi: - M = 4, x’ = 0010, y’ = 0011 z = 0010 – 0011 = 0010 + 1101 = 1111 z’ = z - M = 4, x’ = 0101, y’ = 0011 z = 0101 – 0011 = 0101 + 1101 = 10010 z’ = 0010
  21. 21. Operazioni tra interi di macchina Moltiplicazione tra interi di macchina Siano x’ e y’ due numeri interi rappresentabili su M bit. L’operazione z = x’ * y’ può essere ricondotta ad una sequenza di addizioni e di spostamenti a destra della stringa delle cifre Per il calcolo si utilizzano due accumulatori A e B; l’accumulatore A è formato da M bit mentre l’accumulatore B è composto da due parti, la prima di M+1 bit (che chiameremo R) e la seconda di M bit. Il numero di macchina x’ viene memorizzato in A mentre y’ nella seconda parte di B. In R si memorizza il numero r inizializzato a 0 Seguiamo il procedimento con un esempio pratico
  22. 22. Operazioni tra interi di macchina Moltiplicazione tra interi di macchina Esempio: M = 6, x’ = 000011, y’ = 000101 R A 000011 B 0000000 000101 Si calcola 1*x’+r (1 è la cifra di y’ associata a 20) e il risultato lo si memorizza in R A 000011 B 0000011 000101 Si esegue uno spostamento di un bit verso destra in B A 000011 B 0000001 100010 passo 1 Si calcola 0*x’+r (0 è la cifra di y’ associata a 21) e il risultato lo si memorizza in R A 000011 B 0000001 100010 Si esegue uno spostamento di un bit verso destra in B A 000011 B 0000000 110001 passo 2
  23. 23. Operazioni tra interi di macchina Moltiplicazione tra interi di macchina R A 000011 B 0000000 110001 Ripetendo i passi precedenti si ottiene A 000011 B 0000011 110001 1*x’ + r passo 3 A 000011 B 0000001 111000 spostamento a destra A 000011 B 0000001 111000 0*x’ + r passo 4 A 000011 B 0000000 111100 spostamento a destra A 000011 B 0000000 111100 0*x’ + r passo 5 A 000011 B 0000000 011110 spostamento a destra A 000011 B 0000000 011110 0*x’ + r passo 6 A 000011 B 0000000 001111 spostamento a destra Dopo M passi, in B è memorizzato z = x’ * y’ e nella seconda parte di B la sua rappresentazione di macchina z’
  24. 24. Operazioni tra interi di macchina Moltiplicazione tra interi di macchina Esempio: M = 3 , β = 10, x’ = 215, y’ = 162 A 215 B 0000 162 A 215 B 0430 162 2*x’ + r passo 1 A 215 B 0043 016 spostamento a destra A 215 B 1333 016 6*x’ + r passo 2 A 215 B 0133 301 spostamento a destra A 215 B 0348 301 1*x’ + r passo 3 A 215 B 0034 830 spostamento a destra
  25. 25. Operazioni tra interi di macchina Divisione tra interi di macchina Siano x’ e y’ due numeri interi rappresentabili su M bit. L’operazione z = x’ / y’ può essere ricondotta ad una sequenza di sottrazioni e di spostamenti a sinistra della stringa delle cifre Per il calcolo si utilizzano due accumulatori A e B; l’accumulatore A è formato da M bit mentre l’accumulatore B è composto da due parti, entrambe di M bit (che chiameremo R e Q). Il numero di macchina y’ viene memorizzato in A mentre x’ in R. In Q si memorizza il numero q inizializzato a 0 Anche in questo caso seguiamo il procedimento con un esempio pratico
  26. 26. Operazioni tra interi di macchina Divisione tra interi di macchina Esempio: M = 6, x’ = 010000, y’ = 000101 Inizialmente si eseguono s spostamenti verso destra nell’accumulatore B, fino a quando in R c’è un numero r tale che y’ ≤ r < βy’. La divisione sarà composta da s + 1 passi R Q A 000101 B 010000 000000 s = 1 (y’ = 000101, βy’ = 001010) A 000101 B 001000 000000 Si calcola il numero intero q tale che qy’ ≤ r < (q+1)y’ e r = r – qy’. Al primo passo si ha q = 1 e r = 000011 A 000101 B 000011 000001 Si esegue lo spostamento di un bit verso sinistra in B A 000101 B 000110 000010 passo 1
  27. 27. Operazioni tra interi di macchina Divisione tra interi di macchina Esempio: M = 6, x’ = 010000, y’ = 000101 R Q A 000101 B 000110 000010 Si calcola il numero intero q tale che qy’ ≤ r < (q+1)y’ e r = r – qy’. Al secondo e ultimo passo (s + 1 = 2) si ha q = 1 e r = 000001 A 000101 B 000001 000011 passo 2 Alla fine del procedimento, in Q è memorizzato il quoziente della divisione (q = 000011) e in R rimane memorizzato il resto (r = 000001)
  28. 28. Operazioni tra interi di macchina Divisione tra interi di macchina Esempio: M = 4, β = 10, x’ = 3151, y’ = 0012 A 0012 B 3151 0000 A 0012 B 0031 5100 spostamento a destra (s = 2) A 0012 B 0007 5102 q = 2, r = 7 passo 1 A 0012 B 0075 1020 spostamento a sinistra A 0012 B 0003 1026 q = 6, r = 3 passo 2 A 0012 B 0031 0260 spostamento a sinistra A 0012 B 0007 0262 q = 2, r = 7 passo 3 resto quoziente
  29. 29. Operazioni tra reali di macchina Addizione e sottrazione tra reali di macchina Siano x’ = ±m’x·βp = (0.x1x2…xt) (x1 ≠ 0) , y’ = ±m’y·βq = (0.y1y2…yt) (y1 ≠ 0) due numeri reali di macchina rappresentati in base β con t cifre della mantissa. Si vuole calcolare z’ = ±m’z·βs, approssimazione di macchina di z = x’ ± y’. Si eseguono i seguenti tre passi: 1. Confronto degli esponenti: - se p = q, si va al passo 2 con m’y = m’y = 0.y1y2…yt - se p ≠ q (ad es. p > q), si divide m’y per βp-q e si costruisce m’y = 0.00…0y1y2…yt p-q
  30. 30. Operazioni tra reali di macchina Addizione e sottrazione tra reali di macchina 2. Somma delle mantisse: si esegue mz = m’x ± m’y - se mz = 0, allora z’ = 0 - se la somma ha provocato traboccamento, si divide mz per β, si sceglie come m’z il troncamento (arrotondamento) alla t- esima cifra del risultato di tale divisione e si pone s = p + 1 - se la somma non ha provocato traboccamento e le prime r ≥ 0 cifre di mz sono nulle, si moltiplica mz per βr, si sceglie come m’z il troncamento (arrotondamento) alla t-esima cifra del risultato di tale moltiplicazione e si pone s = p – r 3. Controllo della caratteristica: si esamina se Emin ≤ s ≤ Emax (intervallo di rappresentazione della caratteristica)
  31. 31. Operazioni tra reali di macchina Esempio: sommare i numeri di macchina x’ = 0.12345678·102, y’ = 0.23456789·10-1 (β=10, t=8) Seguendo il procedimento descritto si hanno p = 2 e q = -1, dunque m’y = 0.00023456789 p-q=3 Si sommano le mantisse: mz = 0.12345678 + 0.00023456789 = 0.12369134789 La somma non ha provocato traboccamento, r = 0, s = p - r = 2 e m’z = 0.12369134. Quindi z’ = 0.12369134·102
  32. 32. Operazioni tra reali di macchina Esempio: sommare i numeri di macchina x’ = 0.75869978·102, y’ = 0.98151815·102 (β=10, t=8) Seguendo il procedimento descritto si hanno p = 2 e q = 2, dunque m’y = 0.98151815 Si sommano le mantisse: mz = 0.75869978 + 0.98151815 = 1.74021793 La somma ha provocato traboccamento: si divide mz per 10 (mz = 0.174021793), si definisce m’z = 0.17402179 e si pone s = p + 1 = 3. Quindi z’ = 0.17402179·103
  33. 33. Operazioni tra reali di macchina Esempio: sommare i numeri di macchina x’ = 0.75869978·102, y’ = -0.75868863·102 (β=10, t=8) Seguendo il procedimento descritto si hanno p = 2 e q = 2, dunque m’y = 0.75868863 Si sottraggono le mantisse: r=4 mz = 0.75869978 - 0.75868863 = 0.00001115 La somma non ha provocato traboccamento: si moltiplica mz per 104 (mz = 0.1115), si definisce m’z = 0.11150000 e si pone s = p - r = -2. Quindi z’ = 0.11150000·10-2
  34. 34. Operazioni tra reali di macchina Moltiplicazione tra reali di macchina Siano x’ = ±m’x·βp = (0.x1x2…xt) (x1 ≠ 0) , y’ = ±m’y·βq = (0.y1y2…yt) (y1 ≠ 0) due numeri reali di macchina rappresentati in base β con t cifre della mantissa. Si vuole calcolare z’ = ±m’z·βs, approssimazione di macchina di z = x’ * y’. Si eseguono i seguenti due passi: 1. Moltiplicazione delle mantisse: si calcola mz = m’x * m’y (mz ha 2t cifre) - se la prima cifra di mz è 0, si moltiplica mz per β e si pone r = 1 - se la prima cifra di mz è diversa da 0, si pone r = 0 La mantissa m’z di z’ è il troncamento (arrotondamento) alla t-esima cifra di mz
  35. 35. Operazioni tra reali di macchina Moltiplicazione tra reali di macchina 2. Controllo della caratteristica: si pone s = p + q – r e si esamina se Emin ≤ s ≤ Emax (intervallo di rappresentazione della caratteristica) Esempio: moltiplicare i numeri di macchina x’ = 0.11111·101, y’ = 0.33333·103 (β=10, t=5) Moltiplicando le mantisse si ottiene mz = 0.11111 * 0.33333 = 0.0370362963 Essendo la prima cifra di mz nulla, si moltiplica mz per 10 (mz = 0.370362963), si definisce m’z = 0.37036 e si pone s = p + q - r = 3. Quindi z’ = 0.37036·103
  36. 36. Operazioni tra reali di macchina Divisione tra reali di macchina Siano x’ = ±m’x·βp = (0.x1x2…xt) (x1 ≠ 0) , y’ = ±m’y·βq = (0.y1y2…yt) (y1 ≠ 0) due numeri reali di macchina rappresentati in base β con t cifre della mantissa. Si vuole calcolare z’ = ±m’z·βs, approssimazione di macchina di z = x’ / y’. Si eseguono i seguenti tre passi: 1. Confronto delle mantisse - se m’x ≥ m’y , si definisce m’x come la divisione di m’x per β e si pone r=1 - se m’x ≥ m’y , si definisce m’x = m’x e si pone r = 0
  37. 37. Operazioni tra reali di macchina Divisione tra reali di macchina 2. Divisione delle mantisse: si calcola mz = m’x / m’y . La mantissa m’z di z’ è il troncamento (arrotondamento) alla t-esima cifra di mz 3. Controllo della caratteristica: si pone s = p - q + r e si esamina se Emin ≤ s ≤ Emax (intervallo di rappresentazione della caratteristica) Esempio: dividere i numeri di macchina x’ = 0.30200·10-2, y’ = 0.15000·103 (β=10, t=5) La mantissa di x’ è maggiore di quella di y’, dunque m’x = 0.030200 e r = 1. Quindi mz = 0.030200 / 0.15000 = 0.2013333 Si ha s = p – q + r = -4, z’ = 0.20133·10-4
  38. 38. Considerazioni sull’aritmetica di macchina In aritmetica di macchina non valgono le seguenti (*): - proprietà associativa per prodotto e somma: può accadere che fl(fl(x’+y’)+z’) ≠ fl(x’+fl(y’+z’)) ≠ fl(fl(x’+z’)+y’) fl(fl(x’*y’)*z’) ≠ fl(x’*fl(y’*z’)) ≠ fl(fl(x’*z’)*y’) - proprietà distributiva del prodotto rispetto alla somma: può accadere che fl(fl(x’+y’)*z’) ≠ fl(fl(x’*z’)+fl(y’*z’)) - legge dell’annullamento del prodotto (fl(x’*y’) = 0 non implica che uno tra x’ e y’ sia necessariamente uguale a 0) - unicità dell’elemento neutro rispetto alla somma: può accadere che fl(x’+y’) = x’ con y’ ≠ 0 (*) si indichi con x’ o con fl(x) il numero di macchina che approssima il numero reale x
  39. 39. Considerazioni sull’aritmetica di macchina Esempio: non validità delle proprietà associativa della somma Supponiamo di avere i tre numeri a = 0.1234567, b = 6666.325, c = -6666.325 e di utilizzare l’aritmetica di macchina con β = 10 e t = 7. Si ha a’ = 0.1234567·100, b’ = 0.6666325·104, c’ = -0.6666325·104 Eseguiamo la somma dei tre numeri in due modi diversi: 1. z = b’ + c’ calcolo di z’ s = z’ + a’ calcolo di s’ Si ottiene: z = 0; z’ = 0; s = 0.1234567·100; s’ = s 2. z = a’ + b’ calcolo di z’ s = z’ + c’ calcolo di s’ Si ottiene: z = 0.1234567·100 + 0.6666325·104 = 0.66664484567·104 z’ = 0.6666448·104; s = 0.0000123·104; s’ = 0.1230000·100
  40. 40. Considerazioni sull’aritmetica di macchina Esempio: non unicità dell’elemento neutro per la somma Siano x’ = 0.62379·107, y’ = 0.32881·101 due numeri di macchina rappresentati in base β = 10 con t = 5 cifre per la mantissa. Si ha z = x’ + y’ = (0.62379 + 0.00000032881)·107 = 0.62379032881·107 z’ = 0.62379·107 = x’
  41. 41. Considerazioni sull’aritmetica di macchina Esempio: il prodotto di macchina tra due numeri di macchina può essere nullo anche se entrambi i numeri sono non nulli Siano x’ = 1.0·10-30, y’ = 1.0·10-20 due numeri di macchina rappresentati in base β = 2 in precisione semplice (t = 32 cifre per la mantissa). Il prodotto tra x’ e y’ è z = x’ * y’ = 1.0·10-50 che il calcolatore arrotonda a 0 (underflow)
  42. 42. Errore sulle operazioni di macchina Se x è un numero reale e x’ è la sua approssimazione di macchina, valgono le formule equivalenti x' = x(1 + ε x ), ε x ≤ eps x − εx x' = , ηx ≤ eps, ηx = 1 + ηx 1 + εx Indichiamo con il simbolo # una generica operazione aritmetica. Il risultato z di un’operazione tra due numeri di macchina x’, y’ può non essere un numero di macchina: la sua approssimazione z’ è z ' = z (1 + ε ) = ( x' # y ' )(1 + ε ), ε ≤ eps oppure z x' # y ' z' = = , η ≤ eps 1+ η 1+ η
  43. 43. Errore sulle operazioni di macchina z ' = z (1 + ε ) = ( x' # y ' )(1 + ε ), ε ≤ eps Tenendo conto delle espressioni di x’ e y’ x' = x(1 + ε x ), y ' = y (1 + ε y ), ε x , ε y ≤ eps si ha z ' = ( x(1 + ε x )# y (1 + ε y ))(1 + ε ), ε x , ε y , ε ≤ eps Vediamo ora come si comportano le singole operazioni elementari nel dettaglio
  44. 44. Errore sulle operazioni di macchina Somma Sia S = x + y la somma algebrica di due numeri reali x e y; la somma calcolata risulta essere S ' = ( x(1 + ε x ) + y (1 + ε y ))(1 + ε ), ε x , ε y , ε ≤ eps L’errore relativo che si commette, trascurando i termini quadratici · dell’errore (simbolo =), risulta S '− S · x y εS = = εx + εy + ε S x+ y x+ y In dettaglio e passando ai valori assoluti x y x y εS = εx + εy + ε + εxε + εyε x+ y x+ y x+ y x+ y N.B.: si dice che  x y  f(x) ≤ O(g(x)) ≤ +  x+ y x+ y + 1eps + O (eps 2 )  se esiste C > 0 t.c.   |f(x)| ≤ C · |g(x)|
  45. 45. Cancellazione di cifre Consideriamo i numeri reali x = 0.12345789, y = -0.12343211. Siano x’ = 0.12345·100, y’ = -0.12343·100 le loro approssimazioni di macchina in base β = 10 con t = 5 cifre per la mantissa. La somma esatta risulta S = 0.2578·10-4 mentre la somma calcolata S’ = 0.00002·100 = 0.20000·10-4. L’errore relativo che si commette è S '− S εS = = 0.22420... ≈ 2.2 ⋅10 −1 S Poiché i due numeri risultavano essere quasi uguali in valore assoluto ma di segno opposto, la somma delle mantisse ha causato zeri dopo il punto radice e, dovendo normalizzare il risultato, sono entrate da destra delle cifre nulle (quelle in rosso). Questa patologia prende il nome di fenomeno della cancellazione di cifre
  46. 46. Errore sulle operazioni di macchina Moltiplicazione Sia P = x * y il prodotto algebrico tra due numeri reali x e y; il prodotto calcolato risulta essere P' = ( x(1 + ε x ) * y (1 + ε y ))(1 + ε ), ε x , ε y , ε ≤ eps L’errore relativo che si commette, trascurando i termini quadratici e cubici dell’errore, risulta P'− P · εP = = εx + ε y + ε P In dettaglio e passando ai valori assoluti εS = ε x + ε y + ε + ε x ε y + ε x ε + ε y ε + ε x ε y ε ≤ 3eps + O (eps 2 )
  47. 47. Errore sulle operazioni di macchina Divisione Sia Q = x / y la divisione algebrica tra due numeri reali x e y; la divisione calcolata risulta essere x(1 + ε x ) Q' = (1 + ε ), ε x , ε y , ε ≤ eps y (1 + ε y ) Moltiplicando numeratore e denominatore per (1-εy) e trascurando termini quadratici e cubici, l’errore relativo commesso risulta Q '−Q · εQ = = εx − ε y + ε Q In dettaglio e passando ai valori assoluti εQ = ε x − ε y + ε + ε x ε − ε y ε − ε x ε y − ε x ε y ε ≤ 3eps + O (eps 2 )
  48. 48. Errore inerente e errore algoritmico In generale, l’errore relativo commesso durante il calcolo di un’espressione razionale φ(x) a partire da un dato x si compone di due parti: l’errore inerente e l’errore algoritmico L’errore inerente dipende dal problema ed è dovuto al fatto che il dato x non è rappresentato in maniera esatta ma attraverso la corrispondente approssimazione di macchina x’ Dati Risultati x aritmetica esatta φ(x) x’ φ(x’)
  49. 49. Errore inerente Errore relativo sui dati Errore relativo sui risultati x − x' φ( x) − φ( x' ) εx = εdati = x φ( x) Se εdati è grande rispetto a εx, allora il problema si dice mal condizionato. Quello che succede è che a piccole variazioni sui dati corrispondono grandi variazioni sui risultati Il condizionamento è una caratteristica inerente al problema che si sta affrontando ed esprime quanto esso sia sensibile ad una variazione dei dati
  50. 50. Condizionamento Le operazioni di moltiplicazione e di divisione tra due numeri reali sono problemi ben condizionati ε P ≤ 3eps + O (eps 2 ) , εQ ≤ 3eps + O (eps 2 ) L’operazione di somma tra due numeri reali è un problema ben condizionato a meno che non abbiano valore assoluto molto simile e segno opposto. In tal caso, l’errore relativo può essere grande e, come abbiamo visto, si ha il fenomeno della cancellazione di cifre  x y  εS ≤  +  x+ y x+ y + 1eps + O (eps 2 )   
  51. 51. Errore inerente e errore algoritmico L’errore relativo commesso durante il calcolo di un’espressione razionale φ(x) a partire da un dato x si compone di due parti: l’errore inerente e l’errore algoritmico L’errore algoritmico non dipende intrinsecamente dal problema ma dipende dall’algoritmo usato per risolvere il problema stesso Dati Risultati x aritmetica esatta φ(x) fl(φ(x’))
  52. 52. Errore algoritmico e stabilità Errore relativo sui risultati φ( x) − fl (φ( x)) εalg = φ( x) Un algoritmo si dice stabile se l’errore relativo generato εalg è piccolo, ovvero se l’algoritmo non è troppo sensibile agli errori introdotti con le operazioni di macchina richieste dell’algoritmo stesso Al contrario del condizionamento, la stabilità è una proprietà dell’algoritmo e non del problema
  53. 53. Errore totale L’errore totale deve tener conto sia della presenza di dati approssimati sia degli errori introdotti ad ogni operazione elementare dall’algoritmo usato per risolvere il problema In prima approssimazione, l’errore totale è dunque la somma dell’errore inerente e dell’errore algoritmico Dati Risultati x aritmetica esatta φ(x) x’ fl(φ(x’))
  54. 54. Somma di tre numeri Esempio: siano a, b, c numeri reali di cui si vuole calcolare la somma s=a+b+c Errore inerente (dati perturbati, aritmetica esatta) dati: a ' = a (1 + ε a ), b' = b(1 + εb ), c ' = c(1 + εc ), εa , εb , εc ≤ eps algoritmo: 1. ~ = a '+b' z 2. v = ~ + c' z s−v · a b c errore: ε dati = = εa + εb + εc s a+b+c a+b+c a+b+c Errore algoritmico (dati esatti, aritmetica di macchina) dati: a ' = a, b' = b, c' = c algoritmo: 1. z = ( a + b)(1 + ε1 ) 2. w = ( z + c )(1 + ε 2 ), ε1 , ε 2 ≤ eps ˆ ˆ s−w · a+b errore: ε alg = = ε1 + ε2 s a+b+c
  55. 55. Somma di tre numeri Esempio: siano a, b, c numeri reali di cui si vuole calcolare la somma s=a+b+c Errore totale (dati perturbati, aritmetica di macchina) dati: a ' = a (1 + ε a ), b' = b(1 + εb ), c ' = c(1 + εc ), εa , εb , εc ≤ eps algoritmo: 1. z ' = ( a '+b' )(1 + ε1 ) 2. s ' = ( z '+ c ' )(1 + ε2 ), ε1 , ε2 ≤ eps errore: s − s' · a b c a+b εtot = = εa + εb + εc + ε1 + ε2 s a+b+c a+b+c a+b+c a+b+c errore inerente errore algoritmico

×