SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
Numeri di
         macchina


Luca Zanni , Marco Prato

              Calcolo Numerico
Corsi di Laurea in Matematica e Informatica
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
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
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
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
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
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
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
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
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
Numeri reali
              Precisione semplice

                        32 bits


          s      p                mantissa

               8 bits              23 bits

               Precisione doppia

                     64 bits


s     p                            mantissa

    11 bits                          52 bits
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
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
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
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
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
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
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
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
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
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
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
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’
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
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
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
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)
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
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
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)
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
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
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
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
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
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
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
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
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
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’
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)
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+ η
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
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)|
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
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 )
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 )
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’)
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
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 )
                                   
                                  
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’))
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
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’))
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
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

Mais conteúdo relacionado

Mais procurados

Ch1 transistor as small signal amplifier
Ch1   transistor as small signal amplifierCh1   transistor as small signal amplifier
Ch1 transistor as small signal amplifier
Norlaili MSafri
 
Lec 02 data representation part 1
Lec 02 data representation part 1Lec 02 data representation part 1
Lec 02 data representation part 1
Abdul Khan
 

Mais procurados (20)

Floating point representation
Floating point representationFloating point representation
Floating point representation
 
14827 shift registers
14827 shift registers14827 shift registers
14827 shift registers
 
Ch1 transistor as small signal amplifier
Ch1   transistor as small signal amplifierCh1   transistor as small signal amplifier
Ch1 transistor as small signal amplifier
 
Microprocessor 8086-lab-mannual
Microprocessor 8086-lab-mannualMicroprocessor 8086-lab-mannual
Microprocessor 8086-lab-mannual
 
Power the world with mbed LPC1768
Power the world with mbed LPC1768Power the world with mbed LPC1768
Power the world with mbed LPC1768
 
Boolean algebra & logic gates
Boolean algebra & logic gatesBoolean algebra & logic gates
Boolean algebra & logic gates
 
Adder & subtractor (Half adder, Full adder, Half subtractor, Full subtractor)
Adder & subtractor (Half adder, Full adder, Half subtractor, Full subtractor)Adder & subtractor (Half adder, Full adder, Half subtractor, Full subtractor)
Adder & subtractor (Half adder, Full adder, Half subtractor, Full subtractor)
 
Digital signal processing through speech, hearing, and Python
Digital signal processing through speech, hearing, and PythonDigital signal processing through speech, hearing, and Python
Digital signal processing through speech, hearing, and Python
 
Data convertors
Data convertorsData convertors
Data convertors
 
BCD Adder
BCD AdderBCD Adder
BCD Adder
 
Digital Components
Digital ComponentsDigital Components
Digital Components
 
Quick tutorial on IEEE 754 FLOATING POINT representation
Quick tutorial on IEEE 754 FLOATING POINT representationQuick tutorial on IEEE 754 FLOATING POINT representation
Quick tutorial on IEEE 754 FLOATING POINT representation
 
Binary
BinaryBinary
Binary
 
Lec 02 data representation part 1
Lec 02 data representation part 1Lec 02 data representation part 1
Lec 02 data representation part 1
 
Voltage to-frequency and frequency-to-voltage converter
Voltage to-frequency and frequency-to-voltage converterVoltage to-frequency and frequency-to-voltage converter
Voltage to-frequency and frequency-to-voltage converter
 
Op amp
Op ampOp amp
Op amp
 
Dac s05
Dac s05Dac s05
Dac s05
 
Operational amplifier
Operational amplifierOperational amplifier
Operational amplifier
 
Op amplifier
Op amplifier Op amplifier
Op amplifier
 
Linear block code
Linear block codeLinear block code
Linear block code
 

Destaque

Calcolo Numerico - 2 - Rappresentazione Dei Numeri
Calcolo Numerico - 2 - Rappresentazione Dei NumeriCalcolo Numerico - 2 - Rappresentazione Dei Numeri
Calcolo Numerico - 2 - Rappresentazione Dei Numeri
Majong DevJfu
 
Calcolo Numerico - Esercizi 1
Calcolo Numerico - Esercizi 1Calcolo Numerico - Esercizi 1
Calcolo Numerico - Esercizi 1
Majong DevJfu
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
Majong DevJfu
 
5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria
Majong DevJfu
 
Linguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: FrontendLinguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: Frontend
Majong DevJfu
 
Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86
Majong DevJfu
 
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04
Majong DevJfu
 
4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color
Majong DevJfu
 
esercizio sigda n 11
esercizio sigda n 11esercizio sigda n 11
esercizio sigda n 11
Majong DevJfu
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
Majong DevJfu
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
Majong DevJfu
 
Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07
Majong DevJfu
 
Introduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneIntroduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazione
Majong DevJfu
 

Destaque (20)

Calcolo Numerico - 2 - Rappresentazione Dei Numeri
Calcolo Numerico - 2 - Rappresentazione Dei NumeriCalcolo Numerico - 2 - Rappresentazione Dei Numeri
Calcolo Numerico - 2 - Rappresentazione Dei Numeri
 
Calcolo Numerico - Esercizi 1
Calcolo Numerico - Esercizi 1Calcolo Numerico - Esercizi 1
Calcolo Numerico - Esercizi 1
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
 
5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria
 
Linguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: FrontendLinguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: Frontend
 
8 Www2009 Parte1
8 Www2009 Parte18 Www2009 Parte1
8 Www2009 Parte1
 
Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86
 
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04
 
3 H2 N Parte3
3 H2 N Parte33 H2 N Parte3
3 H2 N Parte3
 
4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color
 
esercizio sigda n 11
esercizio sigda n 11esercizio sigda n 11
esercizio sigda n 11
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
 
2 sistemi informativi d azienda
2 sistemi informativi d azienda2 sistemi informativi d azienda
2 sistemi informativi d azienda
 
E6 Concorre
E6 ConcorreE6 Concorre
E6 Concorre
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
 
9 Ftp Telnet Email
9 Ftp Telnet Email9 Ftp Telnet Email
9 Ftp Telnet Email
 
6 Dns Parte2
6 Dns Parte26 Dns Parte2
6 Dns Parte2
 
esercizio sigda n 8
esercizio sigda n 8esercizio sigda n 8
esercizio sigda n 8
 
Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07
 
Introduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneIntroduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazione
 

Semelhante a Calcolo Numerico - 2 - Numeri Di Macchina

2 Rappresentazione Dei Dati
2   Rappresentazione Dei Dati2   Rappresentazione Dei Dati
2 Rappresentazione Dei Dati
guest60e9511
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)
STELITANO
 
Lezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteLezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parte
STELITANO
 
Laboratorio Programmazione: Istruzioni Iterative
Laboratorio Programmazione: Istruzioni IterativeLaboratorio Programmazione: Istruzioni Iterative
Laboratorio Programmazione: Istruzioni Iterative
Majong DevJfu
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
STELITANO
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
STELITANO
 
(Ebook computer - ita - pdf) fondamenti di informatica - teoria
(Ebook   computer - ita - pdf) fondamenti di informatica - teoria(Ebook   computer - ita - pdf) fondamenti di informatica - teoria
(Ebook computer - ita - pdf) fondamenti di informatica - teoria
UltraUploader
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)
STELITANO
 
Lezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteLezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parte
STELITANO
 
Contenuti 2 modificato
Contenuti 2 modificatoContenuti 2 modificato
Contenuti 2 modificato
Nicola Trillo
 
ECDL modulo 1 ud1: algoritmi rappr informazione
ECDL modulo 1 ud1: algoritmi rappr informazioneECDL modulo 1 ud1: algoritmi rappr informazione
ECDL modulo 1 ud1: algoritmi rappr informazione
Fabio Cantaro
 

Semelhante a Calcolo Numerico - 2 - Numeri Di Macchina (20)

03 2 arit_bin
03 2 arit_bin03 2 arit_bin
03 2 arit_bin
 
2 Rappresentazione Dei Dati
2   Rappresentazione Dei Dati2   Rappresentazione Dei Dati
2 Rappresentazione Dei Dati
 
Codifica
CodificaCodifica
Codifica
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)
 
Reti Logic
Reti LogicReti Logic
Reti Logic
 
Lezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteLezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parte
 
Sistemi di numerazione
Sistemi di numerazioneSistemi di numerazione
Sistemi di numerazione
 
Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe Sportelli
Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe SportelliSistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe Sportelli
Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe Sportelli
 
Laboratorio Programmazione: Istruzioni Iterative
Laboratorio Programmazione: Istruzioni IterativeLaboratorio Programmazione: Istruzioni Iterative
Laboratorio Programmazione: Istruzioni Iterative
 
Metodo di Newton
Metodo di NewtonMetodo di Newton
Metodo di Newton
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 
(Ebook computer - ita - pdf) fondamenti di informatica - teoria
(Ebook   computer - ita - pdf) fondamenti di informatica - teoria(Ebook   computer - ita - pdf) fondamenti di informatica - teoria
(Ebook computer - ita - pdf) fondamenti di informatica - teoria
 
SISTEMI BINARIO ed ESADECIMALE - ALGORITMI - LINGUAGGI
SISTEMI BINARIO ed ESADECIMALE - ALGORITMI - LINGUAGGISISTEMI BINARIO ed ESADECIMALE - ALGORITMI - LINGUAGGI
SISTEMI BINARIO ed ESADECIMALE - ALGORITMI - LINGUAGGI
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)
 
07 2 ricorsione
07 2 ricorsione07 2 ricorsione
07 2 ricorsione
 
Lezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteLezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parte
 
Contenuti 2 modificato
Contenuti 2 modificatoContenuti 2 modificato
Contenuti 2 modificato
 
ECDL modulo 1 ud1: algoritmi rappr informazione
ECDL modulo 1 ud1: algoritmi rappr informazioneECDL modulo 1 ud1: algoritmi rappr informazione
ECDL modulo 1 ud1: algoritmi rappr informazione
 
Integrale indefinito
Integrale indefinitoIntegrale indefinito
Integrale indefinito
 

Mais de Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
Majong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
Majong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
Majong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
Majong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
Majong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
Majong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
Majong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
Majong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
Majong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
Majong DevJfu
 

Mais de Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

Calcolo Numerico - 2 - Numeri Di Macchina

  • 1. Numeri di macchina Luca Zanni , Marco Prato Calcolo Numerico Corsi di Laurea in Matematica e Informatica
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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