Sei sulla pagina 1di 19

1

Introduzione

Lanalisi numerica (calcolo numerico, matematica computazionale,. . . ) `e la disciplina che consente di risolvere in modo approssimato, generalmente mediante lutilizzo di un computer, un
qualunque problema matematico.
Da un punto di vista formale le fasi principali che consentono di passare da un problema reale
alla sua risoluzione pu`o essere schematizzato come segue:
Fasi per la risoluzione di un problema reale
1. Modello matematico continuo: F (x, y) = 0.
2. Modello matematico discreto, approssimazione del modello continuo: FN (xN , yN ) = 0.
3. Individuazione di un algoritmo eciente di risoluzione.
4. Implementazione su un calcolatore.
5. Interpretazione ed analisi dei risultati.
dove F (x, y) = 0 indica il problema matematico continuo, y indica il dato e x indica la soluzione,
FN (xN , yN ) = 0 indica il problema matematico discreto, yN indica il dato, xN indica la soluzione
ed N `e il parametro di discretizzazione. Il problema (continuo o discreto) F (x, y) = 0 `e detto
ben posto (o stabile) se ammette unica soluzione e se tale soluzione dipende in modo continuo
dai dati, cio`e se a piccole perturbazioni dei dati corrispondono piccole perturbazioni dei risultati.
Il problema discreto FN (xN , yN ) = 0 `e detto convergente se xN x quando N .
In ognuna delle fasi sopra si commettono degli errori, nei capitoli successivi, noi analizzeremo in
particolare gli errori che vengono commessi nelle fasi 2-5. Nella fase 3. per algoritmo eciente si
intende un algoritmo che non propaghi violentemente gli errori commessi ma anche un algoritmo
che permetta di risolvere il problema in tempi ragionevoli.
Si noti che, in alcuni casi si pu`o saltare la fase 1. e quindi passare direttamente dal problema
reale al modello matematico discreto.
Diamo di seguito, prima un esempio di risoluzione di un problema reale attraverso le fasi
schematizzate sopra e poi unaltra risoluzione dello stesso problema reale utilizzando uno schema
risolutivo dove la fase 1. viene saltata.
Esempio 1.1 In questo esempio si vuole risolvere il problema della propagazione di una epidemia
1. Modello matematico continuo: Modello S.I.R. di Kecmack Mekendrick (1927).
Siano T R, T > 0, il tempo di osservazione dellepidemia, t [0, T ] la variabile tempo,
S il numero dei suscettibili, cio`e il numero degli individui che si possono ammalare, I
il numero degli infetti, cio`e il numero degli individui che sono ammalati e sono fonte a
loro volta di infezioni, R il numero dei rimossi, cio`e il numero degli individui che si sono
ammalati e sono guariti (o deceduti) diventando cos` immuni. Allora, t [0, T ], S, I
e R devono soddisfare S(t) + I(t) + R(t) = N , dove N `e il numero dei soggetti sotto
osservazione, e
dS(t)
= r S(t) I(t),
S(0) = S,
dt
dI(t)
dt

= (r S(t) a) I(t), I(0) = I,

dR(t)
dt

= a I(t),

R(0) = R,
1

(1)

dove r `e una costante che rappresenta la probabilit`


a che ha un individuo di ammalarsi, a
`e una costante che rappresenta il tasso di crescita, cio`e la variazione dei rimossi rispetto
agli infetti (velocit`a di guarigione degli infetti), S, I, R rappresenta lo stato allinizio
dellosservazione, t = 0.
Come si osserva, in questo caso il problema reale `e stato trasformato in un problema
matematico continuo nella variabile indipendente tempo t > 0 e nelle variabili dipendenti
S(t), I(t), R(t), legate da tre equazioni dierenziali non lineari e da tre condizioni iniziali
(cio`e allistante t = 0).
2. Modello matematico discreto: per costruire questo modello abbiamo bisogno di conoscere
come approssimare una derivata. Sappiamo che la derivata di una generica funzione f (x)
`e denita come:
df (x)
f (x + x) f (x)
f (x) =
= lim
.
x0
dx
x
Potremmo pertanto pensare, per x sucientemente piccolo, di approssimare la derivata
con il rapporto incrementale, cio`e
df (x)
f (x + x) f (x)

.
dx
x

(2)

Possiamo ora tornare al nostro problema. Prendiamo un numero di tempi discreto


tn = n t,

n = 0, 1, 2, . . . nmax .

Indichiamo con
Sn = S(tn ), In = I(tn ), Rn = R(tn ),
dalla (2) si ha

n = 0, 1, 2, . . . nmax ,

dS(tn )
S(tn + t) S(tn )
Sn+1 Sn

=
.
dt
t
t

(3)

Valutando le equazioni (1) in tn , n > 0, ed usando lapprossimazione (3) e le equazioni


analoghe ottenute I ed R, si giunge al seguente modello discreto:
Sn+1 Sn
= r Sn In ,
0 n < nmax ,
S0 = S,
t
In+1 In
= (r Sn a) In ,
0 n < nmax ,
I0 = I,
t
Rn+1 Rn
= a In ,
0 n < nmax ,
R0 = R.
t
3. Algoritmo eciente di risoluzione: nel caso specico, conoscendo S0 , I0 , R0 , possiamo
calcolare S1 , I1 , R1 , e quindi conoscendo S1 , I1 , R1 , possiamo calcolare S2 , I2 , R2 , e cos`
via. Cio`e
Sn+1 = Sn r Sn In t,
In+1 = In + (r Sn a) In t,
Rn+1 = Rn + a In t.

0 n nmax 1,

Possiamo fare ora un semplice programma che ssato nmax , t, r, a, S, I, ed R permetta


di calcolare Sn , In e Rn per 0 < n nmax .
2

4. Implementazione su un calcolatore: il programma `e stato fatto in Matlab, la seguente


funzione restituisce i vettori S, I ed R aventi nmax+1 componenti ed aventi la prima
componente uguale a s0, i0, r0 rispettivamente.
function [S,I,R]=SIR(dt,nmax,r,a,s0,i0,r0)
S=0*[1:nmax+1]; I=S; R=S;
S(1)=s0; I(1)=i0; R(1)=r0;
for n=1:nmax
S(n+1)=S(n)-r*S(n)*I(n)*dt;
I(n+1)=I(n)+(r*S(n)-a)*I(n)*dt;
R(n+1)=R(n)+a*I(n)*dt;
end
5. Interpretazione ed analisi dei risultati: lanalisi dei risultati viene fatta in questo esempio
riportando i graci di S, I e R, dopo aver richiamato la funzione
[S,I,R]=SIR(t,nmax , r, a, S, I, R)
con i seguenti dati:
t = 0.1,

nmax = 140,

r = 0.0035,

a = 0.5,

S = 783,

I = 1,

R=0

800
700
600
500
400
300
200
100
0

20

40

60

80

100

120

140

Figure 1: Il problema `e la propagazione di un virus inuenzale su un insieme di 784 persone


tutte suscettibili tranne una gi`a infetta, risolto con il metodo SIR. S `e disegnata con una curva
blu, I `e disegnata con una curva rossa, ed R `e disegnata con una curva verde.
A volte la fase 1. pu`o essere saltata e quindi passare dal problema direttamente al modello
discreto. A seguire si fa vedere come lo stesso problema pu`o essere modellato nel discreto
utilizzando un particolare automa cellulare.
Automa cellulare
Un automa cellulare `e un modello discreto caratterizzato dalle seguenti propriet`a.
1. Una griglia regolare di celle. Griglia in un qualunque numero nito di dimensioni. Ciascuna cella pu`o assumere un numero nito di stati (ad esempio 0,1).
3

2. Un intorno relativo ad una specica cella generalmente contenente la cella stessa.


3. Uno stato iniziale (diciamo al tempo t = 0). Cio`e ogni cella al tempo t = 0 assume un
determinato stato.
4. Una regola di evoluzione di ogni cella che permette di passare da uno stato al successivo
(pu`o essere una funzione matematica). Tale regola di evoluzione determina il nuovo stato
di una cella in termini dello stato corrente della cella stessa e dello stato delle celle nel
suo intorno.
La griglia pu`o essere nita od innita. In due dimensioni possiamo pensare ad un rettangolo
anziche ad un piano. Nel caso di griglia nita dobbiamo stabilire le condizioni sulle celle del
bordo o sullintorno delle celle di bordo.
Esempio 1.2 Vediamo come si pu`o ottenere un altro schema di risoluzione del problema della
propagazione di una epidemia dove si salta la fase 1..
2. Modello matematico discreto. Nel caso specico del problema della propagazione di una
epidemia prendiamo in considerazione un automa bidimensionale nito dove ogni cella
rappresenta un individuo. Ciascuna cella pu`o assumere solo tre stati S = suscettibile,
I = infetta, R = immune. Allinizio (t = 0) supponiamo che tutte le celle siano allo stato
S tranne una che `e allo stato I. Supponiamo inoltre che tutte le celle del bordo siano
allo stato R e quindi non modicano il loro stato nei tempi successivi. Come intorno
di una cella prendiamo le celle immediatamente vicine (intorno di Moore). La regola di
evoluzione `e la seguente:
Se una cella `e allo stato R vi rimane indenitamente (cio`e se un individuo `e immune
non pu`o ammalarsi).
o passare allo stato R dopo un certo tempo. Cio`e se un
Se una cella `e allo stato I pu`
individuo `e infetto ha una probabilit`
a Pim di guarire e diventare immune.
Se una cella `e allo stato S dopo un certo tempo pu`o passare allo stato I con una
probabilit`a Pinf se vicino ha almeno una cella nello stato I. Cio`e un individuo
suscettibile pu`o ammalarsi se a contatto con una persona gi`a infetta. Ovviamente
la probabilit`a di ammalarsi `e tanto pi`
u alta quanto pi`
u alto `e il numero di persone
infette che si trovano immediatamente vicine.
Pinf = 1 (1 Pcon )Ni
dove Ni `e il numero di celle nellintorno della cella suscettibile che si trovano nello
stato I, e Pcon `e la probabilit`a che ha una persona infetta di contagiare una persona
suscettibile vicina.
3. Algoritmo eciente di risoluzione. Lalgoritmo `e anche in questo caso molto semplice.
Allistante t + t facciamo un ciclo su tutte le celle interne (non di bordo). Data una
cella se al tempo t era nello stato R al tempo t + t rimane nello stato R. Se era nello
stato I estraiamo un numero a caso tra 0 e 1 e se tale numero `e minore di Pim la cella
passa nello stato R altrimenti rimane nello stato I. Se la cella al tempo t era nello stato
S, contiamo quante celle Ni nel suo intorno al tempo t erano nello stato I, calcoliamo
Pinf e estraiamo un numero a caso tra 0 e 1, se tale numero `e minore di Pinf la cella
passa nello stato I altrimante rimane nello stato S.
4

4. Implementazione su un calcolatore: il programma `e stato fatto in Matlab, la seguente


funzione restituisce i vettori S, I ed R aventi nmax+1 componenti ed aventi la prima
componente uguale a s0, i0, r0 rispettivamente. Lautoma cellolare `e dato da AC una
matrice L L contenente lo stato delle celle (0 S, 1 I, 2 R)
function [S,I,R] = ACPI(nmax,L,pim,pcon,s0,i0,r0)
S=0*[1:nmax+1]; I=S; R=S; S(1)=s0; I(1)=i0; R(1)=r0;
AC=zeros(L,L); AC(1,:)=2*ones(1,L); AC(L,:)=2*ones(1,L); AC(:,1)=2*ones(L,1);
AC(:,L)=2*ones(L,1); AC(L/2,L/2)=1;
for n=1:nmax
VAC=AC; S(n+1)=S(n); I(n+1)=I(n); R(n+1)=R(n);
for h=2:L-1
for k=2:L-1
if (VAC(h,k)==0)
NI=mod(VAC(h-1,k-1),2)+mod(VAC(h-1,k),2)+mod(VAC(h-1,k+1),2)...
+mod(VAC(h+1,k-1),2)+mod(VAC(h+1,k),2)+mod(VAC(h+1,k+1),2)...
+mod(VAC(h,k-1),2)+mod(VAC(h,k+1),2);
if rand < 1-(1-pcon)NI
AC(h,k)=1; S(n+1)=S(n+1)-1; I(n+1)=I(n+1)+1;
end;
else if VAC(h,k)==1
if rand < pim
AC(h,k)=2; I(n+1)=I(n+1)-1; R(n+1)=R(n+1)+1;
end;
end;
end;
end;
end;
end;
Interpretazione ed analisi dei risultati: lanalisi dei risultati viene fatta in questo esempio
riportando i graci di S, I e R, dopo aver richiamato la funzione
[S,I,R] = ACPI(nmax ,L,Pim ,Pcon ,s0 ,i0 ,r0 )
con i seguenti dati:

nmax = 140,

L = 30,

Pim = 0.04,

Pcon = 0.1,

dove la cella infetta `e alla posizione 15,15.

s0 = 783,

i0 = 1,

r0 = 0

800
700
600
500
400
300
200
100
0

20

40

60

80

100

120

140

Figure 2: Il problema `e la propagazione di un virus inuenzale su un insieme di 784 persone


tutte suscettibili tranne una gi`a infetta, risolto con un automa cellulare. S `e disegnata con una
curva blu, I `e disegnata con una curva rossa, ed R `e disegnata con una curva verde.

Errori

Diamo prima alcune denizioni elementari. Se indichiamo con xT il valore esatto e con xA il
valore approssimato di un numero (grandezza) possiamo dare le seguenti denizioni
Errore: E = xA xT ;
Errore assoluto: EA = |xA xT |;
Errore realtivo: Er =

EA
;
|xT |

Errore percentuale: Ep = Er 100;


Errore realtivo con segno: Ers =

E
xT

Possiamo osservare che il calcolo di Er quando xT `e prossimo allo zero `e molto complicato e
che in generale il valore vero xT non si conosce. Pertanto lerrore relativo viene approssimato
nel seguente modo
EA
Er
.
|xA |
Per come abbiamo denito EA si potrebbe obiettare che anche questo non lo possiamo calcolare
se non conosciamo xT . Tuttavia nella realt`a si conosce proprio EA indipendentemente da xT .
Pensiamo infatti ad una serie di n misurazioni Xi , i = 1, 2, . . . n, eettuate per stimare una
certa grandezza X (ad esempio la profondit`a h di un pozzo utilizzando il tempo t di caduta di
un sasso lasciato cadere dal bordo del pozzo `e data da h gt2 /2 dove g `e laccelerazione di
gravit`a), allora si ha
(
)
EA =

max Xi min Xi /2.

1in

1in

Definizione 2.3 Si dice che xA ha m cifre esatte se


Er 10m .
Si dice che xA ha m cifre significative se
Er 0.5 10m .
6

Ad esempio sia xT = 200/3 = 66.6 e siano xA = 66.66, xA = 66.67 allora Er = 104 e


(2)
dunque 66.66 ha 4 cifre esatte, Er = 0.5 104 e dunque 66.67 ha 4 cifre signicative.
(1)

(2)

(1)

Definizione 2.4 Gli errori di troncamento si commettono quando, nelle fasi di risoluzione
di un problema, si passa dal modello continuo al modello discreto. Ossia quando un problema
la cui risoluzione comporta eettuare un numero innito di operazioni viene risolto con un
numero nito di operazioni.
Ad esempio, si commette un errore di troncamento ogni volta che si ha un procedimento che
comporta la stima di un limite come nel calcolo della derivata in un punto, nel calcolo
di un
integrale denito etc. Come esempio consideriamo il calcolo della somma S della serie k=0 dk .

Se indichiamo con SN = N
SN . Se
k=0 dk la somma sei primi N + 1 termini allora S = limN
approssimiamo S con SN commettiamo un errore di troncamento Etr = S SN =
k=N +1 dk .
Definizione 2.5 Data una funzione f : [a, b] R, y = f (x), dato x lerrore sulla variabile indipendente si denisce errore di propagazione f = f (x + x) f (x), cio`e lerrore
commesso sulla variabile dipendente.
Utilizzando la (2) si pu`o dunque dire che se x `e piccolo possiamo approssimare lerrore di
propagazione nel seguente modo
f = f (x + x) f (x) f (x)x.

(4)

Analogamente per funzioni in n variabili indipendenti y = f (x1 , x2 , . . . , xn ) si ha la seguente


approssimazione dellerrore di propagazione
n

f
xk ,
f = f (x1 + x1 , . . . , xn + xn ) f (x1 , . . . , xn )
xk
k=1

dove

f
xk

(5)

indica la derivata parziale di f rispetto alla variabile xk .

Esempio 2.6 Vediamo alcuni esempi.


1. Lerrore di propagazione di f (x) = xx `e
f (1 + ln x)xx x.
2. Data f (x, y) = xy allora
f yx + xy,

Ers (f ) Ers (x) + Ers (y).

3. Data f (x, y) = x/y allora


f

x xy
2 ,
y
y

Ers (f ) Ers (x) Ers (y).

Infatti per la 1. si ha ln f (x) = ln xx = x ln x e dunque derivando ambo i membri f (x)/f (x) =


ln x + 1 da cui segue la stima per f . Per la 2. si ha f /x = y e f /y = x, Ers (f ) =
f /f (yx + xy)/(xy). Per la 3. si ha f /x = 1/y e f /y = x/y 2 , Ers (f ) = f /f
(x/y xy/y 2 )/(x/y). In particolare abbiamo visto che lerrore relativo con segno in un
prodotto `e pari alla somma degli errori relativi con segno commessi sui singoli fattori. Lerrore
relativo con segno in un quoziente `e pari alla dierenza degli errori relativi con segno commessi
sui singoli fattori. Come esercizio, ripetere lo stesso procedimento per f (x, y) = xy .
7

Definizione 2.7 Un generico problema matematico F (x, y) = 0 `e detto matematicamente


stabile se ammette ununica soluzione e questa dipende con continuit`
a dal dato.
Pi`
u precisamente, un problema F (x, y) = 0 `e matematicamente stabile, se detta y la perturbazione sul dato, a tale perturbazione corrisponde una perturbazione x sulla soluzione tale che
x + x `e lunica soluzione del problema con dato y + y e se la perturbazione sul dato tende a
zero y 0, tende a zero anche la perturbazione sulla soluzione x 0.
Ad esempio vediamo che il problema del calcolo delle soluzioni di unequazione di secondo grado
`e matematicamente stabile:
F (x, y) = ax2 + bx + c
dove il dato `e y = (a, b, c), a = 0 e la soluzione `e x = (x1 , x2 ) dove

b b2 4ac
x1,2 =
2a
essendo x1 e x2 funzioni continue rispetto alle variabili a, b e c allora la soluzione dipende con
continuit`a dal dato.
Dunque abbiamo detto che se un problema `e matematicamente stabile e y 0 allora anche
x 0. Tuttavia poiche non sempre `e possibile mandare a zero la perturbazione o errore sul
dato `e interessante capire come tende a zero la perturbazione sulla soluzione quando tende a
zero la perturbazione sul dato. Nel senso che non vogliamo che a piccole perturbazione sul dato
possano corrispondere grandi perturbazione sulla soluzione.
Definizione 2.8 Un generico problema matematico F (x, y) = 0 `e detto numericamente stabile se a piccole perturbazione sul dato y corrispondono piccole perturbazione sulla soluzione
x, se questo non accade il problema `e detto malcondizionato.
Il grado di buon o mal condizionamento numerico di un problema `e stabilito dal numero di
condizionato
K = max
y

||x||/||x||
,
||y||/||y||

||x||/||x||
y0 ||y||/||y||

K = lim

(6)

dove il massimo `e fatto su tutte le perturbazioni y e || || rappresenta un modo di misurare


la distanza nello spazio dove vive il dato oppure la soluzione. In particolare, nellesempio della
risoluzione di unequazione di secondo grado, per il dato || || `e la distanza in R3 mentre per
la soluzione || || `e la distanza in R2 . Questo argomento sar`a trattato pi`
u in dettaglio nei vari
argomenti che verranno arontati nel corso.
Oltre al condizionamento numerico va anche presa in considerazione la stabilit`a del metodo
di soluzione e/o dellalgoritmo. In eetti, dato un generico problema matematico F (x, y) = 0
matematicamente stabile, per misurarne il grado di condizionamento stimiamo il numero di
condizionamento K e se K O(1) diciamo che il problema `e ben condizionato. Tuttavia ci
sono diversi modi per risolvere o approssimare F (x, y) = 0, indichiamo con FN (x, y) = 0 il
problema approssimato scelto. Dobbiamo allora capire se FN (x, y) = 0 `e ben condizionato.
Se indichiamo con KN il numero di condizionamento FN , diciamo che FN (x, y) = 0 `e ben
condizionato se KN K.
A seguire riportiamo alcuni esempi che ci permettono di capire i concetti n qui esposti.
Esempio 2.9 (Problema matematicamente instabile o mal posto) Trovare il numero dele radici
reali della seguente equazione polinomiale di quarto grado per ogni a R
x4 (2a 1)x2 + a(a 1) = 0
8

(7)

Posto t = x2 abbiamo t2 (2a


1)t + a(a 1) = 0 e dunque t1,2 = (2a 1 1)/2 cio`e t1 = a,
t2 = a 1, pertanto x1,2 = a, x3,4 = a 1 e quindi: se a > 1 lequazione ammette 4
radici reali, se a = 1 lequazione ammette 3 radici reali, se 0 < a < 1 lequazione ammette
2 radici reali, se a = 0 lequazione ammette 1 radice reale, mentre se a < 0 lequazione non
ammette radici reali. Dunque la soluzione del problema non dipende in modo continuo dai dati
e quindi il problema `e matematicamente instabile o mal posto.
Esempio 2.10 (Problema numericamente mal condizionato) Risolvere lequazione
x ay = 0,

a > 0,

dove il dato `e y.
Perturbando y con y si ha x + x = ay+y e dunque
x
ay+y ay
=
= ay 1,
x
ay
y

a 1
|x/x|
= |y ln(a)| ,
K = lim
= lim y
y0 |y/y|
y0
y
e dunque se a `e vicino a zero oppure se y `e molto grande il numero di condizionamento K `e
grande e dunque il problema `e mal condizionato.
Un altro modo per vedere che il problema `e mal condizionato `e quello di calcolare lerrore
relativo di f (y) = ay
Er (f ) =

|f (y)y|
ay | ln(a)y|
|f |

=
= |y ln(a)| Er (y),
|f |
f
ay

e dunque anche se lerrore sul dato Er (y) `e piccolo lerrore sulla soluzione Er (f ) `e grande se a
`e vicino a zero oppure se y `e molto grande.
Esempio 2.11 (Instabilit`a dellalgoritmo o del metodo) Calcolare
1
I=
x30 ex1 dx.
0

Poiche per n 1
1

n x1

x e

dx =

xn ex1 |10

1
n1 x1

dx = 1 n

Se indichiamo con

xn1 ex1 dx.


0

xn ex1 dx,

an =

(8)

si ha che

an = 1 nan1 ,

n 1,

a0 =
0

1
ex1 dx = ex1 |10 = 1 ,
e

dalla (8) possiamo calcolare a1 conoscendo a0 e quindi a2 conoscendo a1 no ad a30 . Inplementando tale algoritmo con il Matlab su di un computer in duplice precisione si ottiene che
a30 = 3.2968 1015 , mentre I 0.0344828, dunque questo algoritmo `e instabile. In genere
gli algoritmi di ricorsione sono instabili.
9

La rappresentazione dei numeri

Un generico numero reale z R nel sistema numerico decimale ha la seguente rappresentazione posizionale
z = an an1 . . . a1 a0 .a1 a2 . . . ,

(9)

dove n Z, n 0, = 1 `e il segno, le cifre sono ai Z, 0 ai 9, inoltre il numero


di cifre prima del punto `e nito mentre il numero di cifre dopo il punto pu`o essere
illimitato.

Si pensi ai numeri periodici come 1/3 = 0.3 o ai numeri irrazionali algebrici 2, 3 etc. o
agli irrazionali trascendenti come o e (numero di Nepero). Il sistema numerico decimale `e
un sistema posizionale, le cifre cio`e assumono signicato dierente secondo la posizione in cui
si trovano. Ad esempio il numero z1 = 3725.632 `e somma di 3 migliaia (=103 ), 7 centinaia
(=102 ), 2 decine (=101 ), 5 unit`a (=100 ), 6 decimi (=101 ), 3 centesimi (=102 ) e 2 millesimi
(=103 ). Questo vuol dire che la rappresentazione (9) pu`o essere scritta in forma polinomiale
n

z=

ak 10k

k=

si noti che se z ha un numero nito m N di cifre dopo il punto lespressione sopra diventa
z=

ak 10k ,

k=m

e si dice che z ha una rappresentazione posizionale finita. Oltre alla rappresentazione (9)
si pu`o prendere in esame anche la rappresentazione posizionale normalizzata
z = (.b1 b2 . . . bt . . . ) 10p ,

(10)

dove `e il segno, le cifre sono bi Z, 0 bi 9, b1 = 0, p Z `e lesponente della base


decimale e (.b1 b2 . . . bt . . . ) `e detta mantissa. Si noti che ogni numero reale non nullo ha una
rappresentazione posizionale normalizzata.
Se la mantissa ha un numero di cifre illimitato allora la (10) si pu`o anche scrivere
z=

bk 10pk

(11)

k=1

se invece la mantissa ha solo t N cifre allora la (10) si pu`o anche scrivere


z=

bk 10pk ,

(12)

k=1

e si dice che z ha una rappresentazione posizionale normalizzata finita.


Quanto detto sopra continua a valere per una qualunque base N, 2, in genere comunque
si prendono basi pari. In particolare ogni numero reale non nullo z ha una rappresentazione
posizionale normalizzata in una qualunque base N, > 1, e se z ha una rappresentazione
posizionale normalizzata in base con una mantissa avente solo t cifre allora
z = (.b1 b2 . . . bt ) p ,

(13)

dove = 1 `e il segno, le cifre sono bi Z, 0 bi 1, b1 = 0. Si noti che la base = 2 `e


quella usualmente utilizzata nei calcolatori digitali (digit: 0 o 1).
10

3.1

Cambio di base

Un numero z R in base nella forma (9) con cifre ai Z, 0 ai 1, i = n, n 1, . . . ,


pu`o essere facilmente scritto in base 10 utilizzando la sua forma polinomiale:
z=

ak k .

k=

Ad esempio
101.111=2 =
=
23.32=4 =
=

1 22 + 0 21 + 1 20 + 1 21 + 1 22 + 1 23
4 + 1 + 0.5 + 0.25 + 0.125 = 5.875=10
2 41 + 3 40 + 3 41 + 2 42
8 + 3 + 3 0.25 + 0.125 = 11.875=10 .

Ovviamente si pu`o fare anche il procedimento inverso, cio`e passare da un numero in base 10
alla sua rappresenzazione in base .
Se z N `e un numero intero positivo la sua rappresentazione in base si ottiene tramite
lalgoritmo delle suddivisioni successive. Detto b0 = z, per ogni i = 0, 1, 2, . . . , n, deniamo qi
e ri rispettivamente il quoziente ed il resto della divisione di bi per (bi = qi + ri ), e se qi = 0
poniamo bi+1 = qi altrimenti n = i, allora in base si ha
z = rn rn1 . . . r0 .
Ad esempio la rappresentazione di 18 nelle basi = 2, 4 si ottiene nel seguente modo
=2
n bn qn rn
0 18 9 0
1 9 4 1
2 4 2 0
3 2 1 0
4 1 0 1
18=10 = 10010=2

=4

(14)

n bn qn rn
0 18 4 2
1 4 1 0
2 1 0 1

(15)

18=10 = 102=4

(16)

Se z R, 0 < z < 1, `e un numero positivo minore di uno, la sua rappresentazione in base si


ottiene tramite lalgoritmo delle moltiplicazioni successive. Detto b1 = z, per ogni i = 1, 2, . . . ,
deniamo ii e fi rispettivamente la parte intera e la parte frazionaria della moltiplicazione di bi
per (bi = ii + fi , ii Z, ii 0, 0 fi < 1), e se fi = 0 poniamo bi+1 = fi altrimenti n = i
e lalgoritmo termina. Quindi, se lalgoritmo termina, z ha la seguente rappresentazione nita
in base
z = .i1 i2 . . . in
altrimenti z ha la seguente rappresentazione non nita in base
z = .i1 i2 . . . .
Ad esempio la rappresentazione di .25 nelle basi = 2, 4 si ottiene nel seguente modo
=2
n bn in fn
1 .25 0 .5
2 .5 1 0
.25=10 = .01=2

=4
n bn in fn
1 .25 1 0
.25=10 = .1=4
11

(17)
(18)
(19)

Si noti che un numero avente una quantit`a nita di cifre in una base pu`o avere innite cifre in
unaltra base. Ad esempio 5.2=6 = 5 60 + 2 61 = 5.3=10 mentre
=2
n bn in
1 .8 1
2 .6 1
3 .2 0
4 .4 0
5 .8 1

=4
fn
.6
.2
.4
.8
.6

n
1
2
3

.8=10 = .1100=2

bn in
.8 3
.2 0
.8 3

(20)
fn
.2
.8
.2

.8=10 = .30=4

(21)

(22)

Ogni numero reale z R si pu`o scrivere come z = (I(z) + F (z)) con I(z) Z, I(z) 0, la
sua parte intera e F (z) R, 0 F (z) < 1 la sua parte frazionaria e dunque
z = (I(z) + F (z) ).
Ad esempio 18.25=10 = 10010.01=2 , 18.25=10 = 102.1=4 , 18.8=10 = 10010.1100=2 ,
16.8=10 = 100.30=4 .

3.2

La rappresentazione dei numeri interi relativi Z

Verranno illustrati tre dierenti tipi di rappresentazione di un numero intero x Z su di un


calcolatore che lavora in base 2 ( = 2).
3.2.1

Rappresentazione in modulo e segno

Dato x Z, nella rappresentazione in modulo e segno di x su k bit (RMSk x), un bit `e riservato
al segno ( 0 corrisponde al segno + mentre 1 corrisponde al segno ) ed i restanti k 1 bit
sono per la rappresentazione in binario del valore assoluto del numero (|x|). In genere il bit
riservato al segno `e il primo bit da sinistra, cio`e il bit MSB (Most Signicant Bit).
Ad esempio se k = 8 si ha
x
2
+5
+0
0

RMS8 x
10000010
00000101
00000000
10000000

Tale rappresentazioni ha due principali difetti:


lo zero ha due rappresentazioni;
non `e possibile utilizzare le usuali regolo di calcolo per eseguire le operazioni, ad esempio
si ha
x
+5
x
5
x + (x) 0

RMS8
00000101
10000101

10001010=RMS8 (10)
12

Inoltre valgono le seguenti propriet`a:


Il pi`
u grande numero positivo rappresentabile in modulo e segno su k bit `e 2k1 1.
Il pi`
u piccolo numero negativo rappresentabile in modulo e segno su k bit `e x = 2k1 +1.
Il pi`
u grande numero positivo rappresentabile in modulo e segno su k bit `e x tale che RMSk x =
011 . . . 1 (1 ripetuto k 1 volte) che corrisponde a x = +11 . . . 12 (1 ripetuto k 1 volte) ed
essendo il suo successivo pari a 2k1 si ha x = 2k1 1.
Il pi`
u piccolo numero negativo rappresentabile in modulo e segno su k bit `e x tale che RMSk x =
11 . . . 1 (1 ripetuto k volte) che corrisponde a x = 11 . . . 12 (1 ripetuto k 1 volte) e quindi
x = (2k1 1).
Dunque su k bit si possono rappresentare in modulo e segno tutti gli interi nellintervallo
[2k1 + 1, 2k1 1] che `e detto range della rappresentazione.
3.2.2

Rappresentazione in complemento ad uno

Dato x Z, se x 0 la rappresentazione in complemento ad uno di x su k bit (RCUk x) `e uguale


alla sua rappresentazione in modulo e segno (RCUk x=RMSk x), se x < 0 la rappresentazione
in complemento ad uno di x su k bit la si ottiene dalla rappresentazione di |x| (RCUk |x|)
invertendo le cifre (0 1). Quindi il bit MSB rappresenta il segno, e 0 corrisponde al segno +
mentre 1 corrisponde al segno . Ad esempio se k = 8 si ha
x
+5
5
+0
0

RCU8 x
00000101
11111010
00000000
11111111

Tale rappresentazioni ha gli stessi difetti della rappresentazione in modulo e segno, cio`e:
lo zero ha due rappresentazioni;
non `e possibile utilizzare le usuali regolo di calcolo per eseguire le operazioni, ad esempio
si ha

x
x
x+x

5
5
10

RCU8
11111010
11111010
(1)11110100= RCU8 (11)

Inoltre la rappresentazione in complemento ad uno su k bit ha lo stesso range della rappresentazione in modulo e segno su k bit cio`e [2k1 + 1, 2k1 1].
Infatti, il pi`
u grande numero positivo rappresentabile in complemento ad uno su k bit `e x tale
che RCUk x = 011 . . . 1 =RMSk x (1 ripetuto k 1 volte) e quindi x = 2k1 1.
Il pi`
u piccolo numero negativo rappresentabile in complemento ad uno su k bit `e x tale che
RCUk x = 100 . . . 0 (0 ripetuto k 1 volte) che corrisponde a x = 11 . . . 12 (1 ripetuto k 1
volte) e quindi x = (2k1 1).

13

3.2.3

Rappresentazione in complemento a due

Dato x Z, la rappresentazione in complemento a due di x su k bit (RCDk x) `e dk1 dk2 . . . d1 d0 ,


con di {0, 1}, i = 0, 1, . . . , k 1, se e solo se
x=

k2

di 2i dk1 2k1 .

i=0

Ad esempio se k = 8 si ha
x
+15
15
+0

RCD8 x
00001111
11110001
00000000

Tale rappresentazioni ha le seguenti propriet`a:


1. ha range [2k1 , 2k1 1];
2. il bit MSB rappresenta il segno, inoltre 0 corrisponde al segno + mentre 1 corrisponde al
segno ;
3. lo zero ha ununica rappresentazione;
4. `e possibile utilizzare le usuali regolo di calcolo per eseguire le operazioni.
Infatti
1.
2

k1

dk1 2

k1

x=

k2

di 2 dk1 2
i

k1

i=0

k2

di 2
i

i=0

k2

2i = 2k1 1

i=0

inoltre RCDk (2k1 1) = 01 . . . 1 e RCDk (2k1 ) = 10 . . . 0.


2.
x=

k2

di 2 dk1 2
i

k1

02

k1

i=0

k2

di 2i dk1 2k1 dk1 = 0

i=0

i
k1
i
= 0 dalla 2. dk1 = 0 che implica k2
3. Se x = k2
i=0 di 2 dk1 2
i=0 di 2 = 0 e quindi
di = 0 per ogni i = 0, 1, . . . , k 1.
Definizione 3.12 Si denisce complemento a due di un numero negativo x Z su k bit (CDk x)
come quel valore che sommato al valore assoluto del numero da come risultato 2k , cio`e
CDk x + |x| = 2k

CDk x = 2k |x| .

La rappresentazione in complemento a due di un numero x Z su k bit ha le seguenti propriet`a:


a) se x 0, RCDk x si ottiene mettendo 0 nel bit MSB e codicando il numero in binario
sui restanti k 1 bit;
b) se x < 0, RCDk x si ottiene codicando in binario su k bit CDk x.
14

c) dato x Z, x [2k1 , 2k1 1], x = 0, invertendo le cifre di RCDk (x) e aggiungendo


uno si ottiene RCDk (x).

Infatti se x 0 allora dk1 = 0 e x = k2


di 2i che prova la a) e dunque RCDk x=RCUk x=RMSk x.
i=0
i
k1
Se invece x < 0 allora dk1 = 1, x = k2
ed inoltre
i=0 di 2 2
k

CDk x = 2 + x = 2 +

k2

di 2 2
i

k1

k1

=2

(2 1) +

k2

i=0

di 2 =

i=0

k1

di 2i

i=0

e dunque
RCDk x = dk1 dk . . . d0 CDk x = (dk1 dk . . . d0 )2
che prova la b), inoltre
RCDk x = (CDk x)2 = (2k |x|)2 = (2k 1 |x| + 1)2 = (2k 1)2 RCDk (x) + 12
dove le ultime operazioni sono fatte in base = 2 e (2k 1)2 RCDk (x) si ottiene da
RCDk (x) scambiando le cifre, e questo dimostra la c) per x < 0, e invertendo RCDk x con
RCDk (x) si prova la c) per x > 0.
Le propriet`a sopra danno due modi diversi per calcolare la rappresentazione in complemento a
due di un numero x Z su k bit.
Ad esempio si ha:
volendo calcolare RCD8 (5), consideriamo CD8 (5) = 28 5 = (100000000 101)2 =
111110112 dunque RCD8 (5) = 11111011 pari alla rappresentazione in binario su 8 bit
di CD8 (5);
volendo calcolare RCD8 (1), consideriamo CD8 (1) = 28 1 = (100000000 1)2 =
111111112 dunque RCD8 (1) = 11111111;
volendo calcolare RCD8 (15) consideriamo RCD8 ((15)) = RCD8 (15) = 00001111
invertendone le cifre si ottiene 11110000 ed aggiungendo 1 si ha 11110000+1 = 11110001 =
RCD8 (15).
Consideriamo il seguente esempio con k = 8:
x
x
x+x

RCD8
65 01000001
65 01000001
130 10000010

x
x
x x

65
65
130

RCD8
10111111
10111111
(1)01111110

il risultato del calcolo nella rappresentazione in complemento a due `e errato come si vede
dal fatto che i due risultati hanno segno opposto a quello che dovrebbero avere. Lerrore `e
dovuto al fatto che il risultato reale `e fuori dal range della rappresentazione [-128,127]. Questo
tipo di errore `e detto errore di overflow e si ha quando il numero di bit a disposizione non `e
` possibile controllare se, sommando
suciente per rappresentare il risultato di una operazione. E
due numeri, c`e stato o meno errore di overow nel seguente modo:
la somma di numeri di segno opposto non genera errori di overfow (infatti il risultato `e
ancora un valore nel range);
se sommando due numeri con lo stesso segno si ottiene un numero di segno opposto allora
si ha errore di overow altrimenti no.
15

Si osservi che a causa della dimensione nita della memoria, non valgono pi`
u le usuali regole
delle operazioni, come ad esempio lassociativa. Infatti se ad esempio A `e vicino al pi`
u grande
numero nel range della rappresentazione allora loperazione (A + A) A dar`a un errore di
overow mentre loperazione A + (A A) dar`a come risultato A.

3.3

La rappresentazione dei numeri reali R

Passiamo ora a vedere come possono essere rappresentati i numeri reali su un calcolatore introducendo i numeri oating-point ed i numeri macchina.
3.3.1

I numeri floating-point e i numeri macchina

Linsieme dei numeri oat `e linsieme di tutti quei numeri reali che hanno una rappresentazione
posizionale normalizzata nita in base con mantissa limitata ed esponente limitato. In particolare, dati , t, L, U Z con > 1, U, t > 0 e L < 0, si denisce linsieme dei numeri
floating-point
F = F(, t, L, U ) = {x R : x =

di i , p, di Z, 0 di 1, d1 = 0, L p U }

i=1

dove `e la base utilizzata dalla macchina, = 1 `e il segno, t `e il numero di cifre nella


mantissa, d1 d2 . . . dt `e la mantissa e [L, U ] `e il range dellesponente o caratteristica p. Si noti
che F non contiene lo zero, L ed U sono
rispettivamente il minimo e massimo esponente di
un numero oat e se x F, x = p ti=1 di i , allora la sua rappresentazione posizionale
normalizzata in base `e
x = (.d1 d2 . . . dt ) p .

(23)

Allinsieme dei oat F si associa linsieme dei numeri macchina NM che sono dati da
NM (, t, L, U ) = F(, t, L, U ) {0}.
Osservazione 3.13 Linsieme dei oat F(, t, L, U ) ha le seguenti propriet`
a.
1. La cardinalita di F(, t, L, U ) `e 2( 1) t1 (U L + 1).
2. Il pi`
u piccolo numero oat positivo `e L1 .
3. Il pi`
u grande numero oat positivo `e (1 t ) U .
4. I numeri oat sono distribuiti in modo simmetrico rispetto allo zero, i oat che hanno lo
stesso esponente sono ugualmente distanziati, la minima distanza tra due oat consecutivi
(aventi lo stesso segno) `e Lt , la massima distanza tra due oat consecutivi (aventi lo
stesso segno) `e U t ,
Dimostrazione.
1. Il numero dei oat si ottiene moltiplicando il numero di possibili valori che pu`o assumere
un qualunque parametro nella rappresentazione (23) di un oat. In particolare ci sono
due modi per scegliere il segno di un oat, il suo esponente p pu`o essere scelto tra
U L + 1 possibili valori infatti L p U, d1 pu`o essere scelto tra 1 possibili valori
infatti 1 d1 1, le restanti t 1 cifre della mantissa di , i = 2, 3, . . . , t possono
essere scelte tra possibili valori infatti 0 di 1. Dunque la cardinalita di F `e
pari a 2( 1) t1 (U L + 1)
16

2. Il pi`
u piccolo numero oat positivo si ha quando si prende la mantissa e lesponente il
pi`
u piccoli tra le possibili scelte e quindi la sua rappresentazione `e (.10 . . . 0) L , dove
si hanno t 1 cifre pari a 0, e corrisponde al numero L1 .
3. Il pi`
u grande numero oat positivo si ha quando si prende la mantissa e lesponente il pi`
u
grande tra le possibili scelte e quindi la sua rappresentazione `e(.( 1)(
1)
.
.
.
(
1))

U , dove si hanno t cifre pari a ( 1) e corrisponde al numero [ ti=1 ( 1) i ] U =


[( 1) 1 + ( 1) 2 + ( 1) 3 + . . . ( 1) t ] U = [1 1 + 1 2 + 2
3 + . . . t+1 t ] U = (1 t ) U .
4. Il pi`
u piccolo numero oat positivo con eponente p `e (.10 . . . 0) p (con t 1 zeri nella
mantissa), il successivo `e (.10 . . . 01) p (con t 2 zeri nella mantissa), il successivo `e
(.10 . . . 010) p (con t 2 zeri nella mantissa) ecc., dunque due numeri oat positivi
successivi aventi stesso esponente p distano (.0 . . . 01) p che corrisponde a pt , e
dunque la minima distanza si ottiene per p = L e la massima per p = U . Quindi i
numeri oat sono distribuiti in modo non uniforme negli intervalli [ L1 , (1 t ) U ] e
[(1 t ) U , L1 ], infatti la loro distanza `e piccola vicino allo 0 ed `e grande vicino
a (1 t ) U . 
Ogni volta che il risultato di unoperazione `e un valore nellintervallo ( L1 , L1 ) si ha un
errore di underflow, mentre se `e un valore in modulo maggiore di (1 t ) U si ha un errore
di overflow.
Dato che linsieme dei oat F(, t, L, U ) ha un numero nito di elementi `e interessante capire
come un numero reale x pu`o essere approssimato da un oat. Dato x R denotiamo con Fl (x) la
sua rappresentazione di macchina con una mantissa lunga t. Fl (x) pu`o essere ottenuta con due
tecniche: troncamento e arrotondamento. Se x ha rappresentazione posizionale normalizzata
in base pari a (.d1 d2 d3 . . . dt dt+1 . . . ) p allora
chopping (troncamento) Fl (x) = (.d1 d2 . . . dt ) p
rounding (arrotondamento)

se 0 dt+1 < 2
(.d1 d2 . . . dt ) p ,
Fl (x) =
.

(.d1 d2 d3 . . . (dt + 1)) p , se 2 dt+1 <


Si noti che |x Fl (x)| pt se Fl (x) `e ottenuto per troncamento, mentre |x Fl (x)| 21 pt
se Fl (x) `e ottenuto per arrotondamento.
La precisione di macchina (o errore di macchina) M `e denita come il pi`
u piccolo reale M
tale che
Fl (1 + M ) > 1
{

ed `e data da
M =

0.5 1t se Fl `e ottenuto per arrotondamento


1t
se Fl `e ottenuto per troncamento.

Infatti Fl (1) = (.10 . . . 0) dove si hanno t 1 cifre pari a 0 mentre il oat successivo di 1
`e (.10 . . . 01) dove si hanno t 2 cifre pari a 0. Se Fl `e ottenuto per troncamento allora il
pi`
u piccolo reale 1 + M il cui oat `e il successivo di 1 `e (.10 . . . 010 . . . ) dove il secondo 1 `e
alla posizione t e dunque
M = (.00 . . . 010 . . . ) = 1t .
17

Se Fl `e ottenuto per arrotondamento allora il pi`


u piccolo reale 1 + M il cui oat `e il successivo
di 1 `e

(.10 . . . 0 0 . . . )
2

dove 2 `e alla posizione t + 1 e dunque

M = (.00 . . . 0 0 . . . ) = t1+1 .
2
2
Si noti che se t 1 L allora M `e un oat e quindi possiamo anche dire che M `e il pi`
u piccolo
oat tale che Fl (1 + M ) > 1.
3.3.2

Rappresentazione floating-point o in virgola mobile

La rappresentazione oating-point o in virgola mobile di un numero reale x R in un calcolatore


che lavora in binario = 2 su k bit si basa sui numeri oat con = 2, F(2, t, L, U ). In particolare
un bit viene riservato al segno di Fl (x), t bit per la mantissa d1 d2 . . . dt ed i restanti k t 1
bit per la rappresentazione dellesponente intero nel range [L, U ].
Nella notazione della IEEE (Institute for Electrical and Electronic Engineers) del 1985 ha
denito il Binary Floating Point Arithmetic Standard con il primo bit diverso da zero prima
della virgola. Cio`e nella notazione Real Long k = 64 si ha = 2, t = 52
BFl (x) = (1)s 2e1023 (1 + f ),
dove f = .a1 a2 . . . at ed s = 0, 1 `e il segno, quindi L = 1023 e , U = 1024. Come nel caso della
rappresentazione degli interi, operazioni matematicamente equivalenti possono dare in pratica
risultati diversi inoltre possono vericarsi errori di overow o underow, dovuti allimpossibilit`a
di rappresentare numeri molto grandi o molto piccoli, rispettivamente. Inoltre si possono avere
altri tipi di errori di rappresentazione che andremo ad analizzare.
Lerrore di approssimazione si ha quando si passa da un numero x R alla sua rappresentazione di macchina Fl (x), ed `e dovuto al fatto che non tutti i numeri reali hanno una
rappresentazione di macchina esatta. Il corrispondente errore relativo
Er (x) =

|x Fl (x)|
|x|

`e maggiorato dallerrore di macchina, Er (x) M .


Lerrore di abbreviazione si ha quando sommando due valori il risultato non pu`o essere
rappresentato esattamente con t cifre signicative. Ad esempio supponiamo t = 8e = 2:
x
y
x+y

158 (10011110)2
133 (10000101)2
291

Fl
(.10011110) 28
(.10000101) 28
(1.00100011) 28

(.10010001) 29 = (290)10

nellesempio sopra siamo partiti da due numeri x e y aventi rappresentazioni esatte (Er (x) =
Er (y) = 0) ed abbiamo ottenuto un risultato approssimato, in particolare se indichiamo con
loperazione eseguita dal calcolatore si ha Er (x y) 0.0034.
Lerrore di incolonnamento si commette eseguendo somme e sottrazioni di numeri macchina
con esponente abbastanza diverso, in quanto per poter eseguire loperazione i numeri vanno
incolonnati in modo da avere lo stesso esponente (il pi`
u grande). Ad esempio supponiamo t = 8
e = 2:
18

x
y
x+y

96.5 (1100000.1)2
1.75
(1.11)2
98.25

Fl
(.11000001) 27
(.11100000) 2

(.11000001) 27
(.00000011) 27
(.11000100) 27 = (98)10

nellesempio sopra siamo partiti da due rappresentazioni esatte di x e y (Er (x) = Er (y) = 0) ma
per poterli sommare abbiamo dovuto approssimare y per poterlo riportare allo stesso esponente
di x ottenendo Er (x y) 0.0025.
Lerrore di cancellazione si commette quando si sottraggono numeri macchina con esponenti
vicini. Ad esempio supponiamo t = 8 e = 2:
x
y
xy

15.8
15.5
0.3

(1111.1100 . . . )2

(1111.1)2

(.11111100) 24
(.11111000) 24
(.00000100) 24

(.10000000) 21 = (0.25)10

si noti che lerrore di cancellazione `e nullo se i valori iniziali x e y sono numeri macchina, mentre
nel caso contrario ha come eetto quello di propagare violentemente lerrore infatti nellesempio
sopra Er (x) = 0, Er (y) 0.003 mentre Er (x y) = 0.16.
Osservazione 3.14 Per eetto degli errori sopra elencati, nellinsieme dei numeri macchina
possono non valere propriet`a vere nei numeri reali.
Vediamo ad esempio come non `e pi`
u valida la propriet`a associativa. Ad esempio supponiamo
t = 8 e siano x = 0.75, y = 65.6, z = 64, allora (x y) z = x (y z). Infatti Fl (x) =
(.11000000) 20 , Fl (y) = (.10000011) 27 , Fl (z) = (.10000000) 27 , le rappresentazioni di x
e z sono esatte quella di y `e approssimata.
x
y
xy
xy
z
(x y) z
y
z
yz
x
yz
x (y z)

(.11000000) 20
(.10000011) 27
(.10000100) 27
(.10000000) 27
(.00000100) 27
(.10000011) 27
(.10000000) 27
(.00000011) 27

(.11000000) 20
(.11000000) 2

(.00000001) 27
(.10000011) 27
(.10000100) 27

err. inc.

(.10000000) 22 = (2)10

err. canc.

(.11000000) 2 err. canc.

(.01100000) 2
(.11000000) 2
(1.00100000) 2

(.10010000) 22 = (2.25)10

Come si osserva i due risultati sono dierenti e rispetto al valore vero x + y z = 2.35 il pi`
u
preciso `e x (y z).

19