Sei sulla pagina 1di 22

1

Analisi degli errori




Sistemi di numerazione
I sistemi di rappresentazione numerica sono posizionali: ogni cifra
occupa una posizione corrispondente ad una potenza della base
del sistema adottato.
Sistema decimale (base 10)
10258,5 = 1 x 10
4
+ 0 x 10
3
+ 2 x 10
2
+ 5 x 10
1
+ 8 x 10
0
+ 5 x 10
-1

Sistema binario (base 2)
(10010,1)
2
= 1 x 2
4
+ 0 x 2
3
+ 0 x 2
2
+ 1 x 2
1
+ 0 x 2
0
+ 1 x 2
-1
=
(18,5)
10

Sistema esadecimale ( base 16)
(2A1)
16
= 2 x 16
2
+ 10 x 16
1
+ 1 x 16
0
= (673)
10

Le cifre di questi sistemi sono :
decimale: 0, 1, , 9
binario:0, 1
esadecimale: 0, 1, , 9, A, B, C, D, E, F
Quindi, scelta una base b, ogni reale a pu essere scritto:
a = (a
m
b
m
+ a
m-1
b
m-1
+ + a
0
+ a
-1
b
-1
+ ),
dove: 0 a
i
b - 1
2
Tale rappresentazione unica tranne se la parte frazionaria
contiene infinite cifre consecutive a
-k
= b - 1. In tal caso, una
rappresentazione equivalente quella di considerare il nuovo
numero ottenuto sopprimendo la successione e aggiungendo
ununit allultima cifra rimasta.
Per esempio, nel sistema decimale 0, 729999 e
0, 73 rappresentano lo stesso numero.
Per la rappresentazione dei numeri in diverse basi
si ha il seguente

Teorema
Sia b N, b 2, x R, x 0
1
e Z, {a
i
}
i =1, 2,
a
i
N :

e i
i
i
b b a x ) (
1

=
=
0 a
i
b - 1, a
1
0, a
i
definitivamente b 1.
Rappresentazione numerica in un calcolatore
Poich in un calcolatore lo spazio di memoria finito, la
sommatoria precedente pu estendersi fino a t (numero finito):

e i
t
i
i
b b a x ) (
1

=
=
con t < , U e L


3
Abbiamo due tipi di rappresentazione:
Rappresentazione in virgola fissa
Sono fissati il numero di cifre N che rappresenta il numero e il
numero di cifre prima e dopo la virgola N
1
, N
2
: N = N
1
+ N
2
Ad esempio: N = 10, N
1
= 4, N
2
= 6
27,325 0027 325000
0,024 0000 024000
Quindi, se N sono le posizioni di memoria ed una per il segno,
N - k - 1 per la parte intera e k per quella decimale, si ha:

i
N
i
i
k s
b a b x

=
2
0
) 1 (
dove b la base ed s scelto in base al segno di x.
4
Rappresentazione in virgola mobile o floating point
In questo caso la posizione della virgola di un numero decimale
non fissa ma data dallesponente.
x R si pu scrivere come

e s
b m x = ) 1 (
con
R m
.
Tale rappresentazione non unica. Infatti:
x = mb
e
= mb
e-1
= mb
e+1
=
m = mb, m =
b
m

Tale rappresentazione si dice normalizzata se:
b
-1
|m| < 1
In tal caso chiamiamo m mantissa ed e esponente (caratteristica) di
x. x = (-1)
s
mb
e
, m = .a
1
a
2
a
t

t N, 0 a
i
b - 1, L < e < U
Il numero di cifre t d il numero di cifre significative.
Lo spazio riservato ad ogni x R :

Linsieme dei numeri la cui mantissa rappresentabile da t cifre e
la cui caratteristica compresa tra L ed U, che sono interi che
variano per ogni calcolatore, detto insieme dei numeri
macchina.
F = F(b, t, L, U) = {0} {x R :
e
t
1 i
i
i
b b a x |

\
|
=

=

}
s e
|m|

5
poich 0 ha una rappresentazione particolare.
F un insieme finito e numerabile la cui cardinalit :
card(F) = 1 + 2 (b - 1) b
t -1
(U - L + 1)
Lo standard internazionale (IEEE) prevede per i numeri floating-
point F(2,24,-125,128) per la rappresentazione in singola
precisione ed F(2,54,-1021,1024) per la rappresentazione in
doppia precisione.
Per memorizzare e spesso si agisce nel seguente modo: fissato L si
memorizza e
*
= e - L che sempre non negativa, tenendo presente
che il numero memorizzato a meno di b
L
.
In un calcolatore a 32 bit si hanno 23 bit per la mantissa, 1 bit per
il segno e 8 bit per lesponente: L = -127, U = +127, -127 e 127
0 e
*
255.
Il pi grande e il pi piccolo numero rappresentabili sono:
x
mi n
= (.1)
2
2
-127
=
2
1
2
-127
= 2
-128
x
max
= (.11)
2
2
127

2
128
infatti: (.11)
2
= ) 2 1 ( 2 1 2
2
1
1
2
1
1
2
1
23
23
23
23
1
2
1

=
=
|
|
|

\
|
=

\
|

= |

\
|
|

\
|

i
i

2
Cambiando lultimo bit della mantissa di x
mi n
si ha:
127 23
2 2
2
1

|

\
|
+
= x
mi n
+ 2
-150
che una differenza molto piccola.
Cambiando lultimo bit della mantissa per x
max
si ha:
6
((.11)
2
- 2
-23
)2
127
= x
max
- 2
104
che una differenza molto grande.
Quindi meglio rappresentare numeri piccoli.



Un numero decimale per essere rappresentato nel computer viene
convertito in binario. Tale conversione pu comportare una
rappresentazione approssimata. Per vedere ci vediamo come si
opera tale conversione.
Si hanno due casi:
1) numero maggiore di 1. Si divide per due: se c il resto si mette
1 altrimenti 0 e si assegnano potenze di due crescenti.
Esempio:





2) numero minore di 1. Si divide per , ovvero si moltiplica per 2.
Se il prodotto minore di uno si ha 0 altrimenti 1. Quando il
numero diventa maggiore di uno si sottrae 1 procedendo come
prima.
37
18
9
4
2
1
0
2
2
2
2
2
2
1 x 2
0
0 x 2
1
1 x 2
2
0 x 2
3
0 x 2
4
1 x 2
5
(100101)
2
= (37)
10
7






Si ha quindi una rappresentazione finita in decimale e una
rappresentazione approssimata in binario e ci d luogo ad un
errore di arrotondamento.
Conversione da base 10 a base qualunque
Sia n un numero in base 10, vogliamo convertirlo in un numero
in base b N. Sia
b j j
a a a a n ) (
0 1 1
L

=


Dividendo n per b si ha:

=
b
n
(a
j
b
j -1
) + (a
j -1
b
j -2
) + + (a
1
b
0
) +
b
a
0

n = bn
0
+ a
0
dove n
0
< n

Quindi a
0
, lultima cifra della rappresentazione, il resto intero
di n/b.
Per ottenere la penultima cifra si divide n
0
/b:
=
b
n
0
(a
j
b
j -2
) + + (a
2
b
0
) +
b
a
1
= n
1
+
b
a
1

Il procedimento si arresta ad a
j
tale che n
j
= 0.
0,2
0,4
0,8
1,6 0,6
1,2 0,2
0,4
0,8
1,6 0,6
2
2
2
2
2
2
2
2
0 x 2
-1
0 x 2
-2
1 x 2
-3
1 x 2
-4
0 x 2
-5
0 x 2
-6
1 x 2
-7
1 x 2
-8
(0,2)
10
= (. 0011)
2
8

Esempio: 741 = (a
9
a
8
a
7
a
1
a
0
)
2
= (1011100101)
2


Nellaritmetica in virgola mobile (floating point) si ha il
problema:
Dato x R come scegliere fl(x) F = {0} {x R :
e
t
1 i
i
i
b b a x |

\
|
=

=

}
Si fanno i seguenti casi:
1) e < L underflow fl(x) = 0 warning
2) e > U overflow segnale di errore e arresto del programma.
3) L e U
i) a
m
= 0 , m t + 1 x F
ii) x F, fl(x) x e si ha:
a) chopping o troncamento: si esclude la parte destra
della t-esima cifra
fl(x) =
e
t
1 i
i
i
b b a
|
|

\
|

fl(x) < x
b) rounding o arrotondamento
x =
e
1 t
1 t
t
t 1
b ...
b
a
b
a
...
b
a
|

\
|
+ + + +
+
+

fl(x) =
e
t
t
1 - t
1 - t 1
b
b

b
a
...
b
a
|

\
|
+ + +

9
con

+
<
=
+
+
1 b a
2
b
1 a
b/2 a 0 a
1 t t
1 t t
t


fl(x) x
cio si aggiunge
t
b
2
1

e si tronca alla t-esima cifra.
Vediamo adesso di calcolare l' errore assoluto e l' errore relativo
che si commettono con i due tipi di approssimazione.
Ricordiamo che se x il valore vero e
c
x
quello calcolato, si
definiscono errore assoluto ed errore relativo:
c A
x x E =
,
x
x x
E
c
R

=


Poich le mantisse dei numeri macchina
p
, con b
-1

p
< 1, non
hanno pi di t cifre, la distanza tra due mantisse di macchina
consecutive b
-t
. Quindi, se 1
p
, 2
p
>0, e 2
p
consecutivo a 1
p
si ha:
2
p
= 1
p
+ b
-t
Quindi con a) tutte le mantisse p vengono sostituite con 1
p
e
quindi
1
p p
< b
-t
, invece con b) tutte le mantisse in ( 1
p
, 1
p
+
t
b
2
1

)
sono sostituite con 1
p
e tutte le mantisse in ( 1
p
+
t
b
2
1

,
2 p
2
p
) con 2
p
.
Pertanto se
p
la mantissa associata a p si ha:
t
b
2
1
p p


.
Quindi, per lerrore assoluto si ha:
10

rounding
chopping
x fl x
e t
e t
b b
2
1
b b
) (

Per lerrore relativo:

+
+
rounding
chopping
1 t
1 t
b
2
1
b
x
fl(x) x


Lerrore relativo generalmente pi importante. Mostriamolo
con un esempio.
Calcolo A: x = 5 10
-5
, x
c
= 4 10
-5
E
A
= 10
-5
E
R
= 0,2 20%

Calcolo B: x = 5000, x
c
= 4950
E
A
= 50 E
R
= 0,01 1%
Si definisce precisione o epsilon di macchina il sup dellerrore
relativo, cio:

=
+
+
rounding
chopping
M 1 t
1 t
b
2
1
b


che il pi piccolo numero per cui si ha 1 +
M

> 1
Non ha senso cercare delle approssimazioni con precisione
inferiore ad
M

.

11
Distribuzione dei numeri in floating point
I numeri in floating point non sono equispaziati ma si addensano
in prossimit del pi piccolo numero rappresentabile. La
spaziatura tra due x
1
, x
2
F almeno b
-1
M

|x
2
| ed al pi vale
M

|x
2
| se
M

= b
1-t
Allinterno dellintervallo [b
e
, b
e+1
] i punti sono invece
equispaziati e la loro distanza b
e-t
.
Quindi ogni volta che si aumenta (o diminuisce) e di una unit si
ha un aumento (o una diminuzione) di un fattore b della distanza
tra due numeri consecutivi. Per questo si prediligono basi piccole.
Il fenomeno, detto wobbling precision, ha quindi un andamento
oscillatorio:


Altra fonte di errori e data dal fatto che il risultato di operazioni
aritmetiche pu non essere un numero macchina.
Siano x = fl(x), y = fl(y). Se: x op y F si deve definire op il cui
risultato appartiene ad F:
x op y = fl(x op y)
valida se non c overflow.
12
Ad esempio nel caso della somma: si rendono uguali gli esponenti,
si sommano le mantisse in accumulatore con 2m cifre, si
aggiustano gli esponenti.
Ci pu portare alla non validit delle propriet commutativa,
distributiva ed associativa della somma e della moltiplicazione.
Esempio: Supponiamo di avere 4 cifre per la mantissa e vogliamo
eseguire la:

=
11
1 i
i
x
con:
1 p p x 1 p

x
1
= 0,5055 10
4
, x
i
= 0,4000 10
0
i = 2,,11
x
1
+ x
2
= 0,5055 10
4
+ 0,00004 10
4
= 0,50554 10
4
= 0,5055 10
4
e quindi

=
11
1 i
i
x
= 0,5055 10
4
Se invece si esegue prima la:

=
11
2 i
i
x
= 0,4 10
1
si avr:

=
11
1 i
i
x
= x
1
+

=
11
2 i
i
x
= 0,5055 10
4
+ 0,0004 10
4
= 0,5059 10
4
Quindi, per minimizzare la propagazione degli errori per
sommare molti numeri dello stesso segno si devono sommare dal
pi piccolo al pi grande.




13
Diagramma di flusso per il calcolo dell' epsilon macchina
M

nel
caso in cui la base sia b

























= 1
= / b
v = 1 +
v > 1
si
= *b
STOP
14
Consistenza, stabilit e convergenza
Consideriamo il problema astratto: trovare x tale che
F(x,d) = 0 (1)
dove: d dati da cui dipende la soluzione x
F relazione funzionale tra x e d.

Il problema (1) detto:
diretto se F e d sono dati ed x incognito;
inverso se F ed x d ;
di identificazione se x e d F (non trattato qui).

Diremo che il problema (1) ben posto o stabile se, per un certo
dato, la soluzione esiste, unica e dipende con continuit dai dati.
Un problema che non ben posto si dir mal posto o instabile e
per poterlo affrontare numericamente si dovr trasformarlo in uno
ben posto.
La dipendenza continua dei dati significa che piccole
perturbazioni sui dati danno luogo a piccole variazioni della
soluzione, dove piccolo pu essere inteso in senso relativo o
assoluto.

15
Un esempio di problema mal posto il seguente:

) 1 ( ) 1 2 ( ) (
2 4
+ = a a a x x x p

a

Al variare continuo di a si ha una variazione discontinua delle
radici reali. Infatti:
per
1 a
4 radici reali
< 1 0 a 2
< 0 a nessuna radice reale

Daltronde abbiamo visto che si commettono errori sia nel
rappresentare i numeri reali, sia nellesecuzione di operazioni
aritmetiche.
Nascono a questo punto due problemi: ci si chiede
1) alterando i dati del problema di quanto si altera la soluzione;
2) come si propagano gli errori.
Il primo problema connesso con la dipendenza continua dai dati
della soluzione e pu essere stimato con il numero di
condizionamento del problema, numero che non dipende dalluso
dellaritmetica finita del calcolatore ma dal tipo di problema.
Supponiamo di alterare di d i dati del problema precedente e ci
chiediamo di quanto si altera la soluzione:
d + d x + x
16
Diremo numero di condizionamento relativo:
d / d
x / x
K =

Se x = 0, d = 0 si calcola il numero di condizionamento assoluto:
d / x K
ASS
=

Se K grande il problema mal condizionato. Se un problema
ben posto ma K grande basta riformulare il problema.
Il secondo problema dipende dalla stabilit dellalgoritmo.
Ad ogni problema numerico si possono associare pi algoritmi. Un
algoritmo stabile se la propagazione degli errori dovuti
allaritmetica di macchina limitata. Un algoritmo pi stabile di
un altro se in esso linfluenza degli errori minore.
Dora in poi supporremo che il problema
F(x,d) = 0
sia ben posto.
Approssimare numericamente tale problema consiste nel costruire
una successione di problemi approssimati

0 ) , ( =
n n n
d x F

1 n
(2)
dipendenti da un parametro n, sperando che
x x
n

per
n
.
Perch ci si verifichi deve essere
d d
n

ed
n
F
deve approssimare
F.
17
Il problema (2) si dir consistente se:

0 ) , ( d x F
n
per
n

dove x la soluzione di (1) corrispondente al dato d.
Analogamente al problema continuo (1), richiederemo che un
metodo sia ben posto (o stabile) ovvero che in corrispondenza a
n
d
per n fissato, la soluzione
n
x
esista, sia unica e dipenda con continuit dai
dati. I numeri di condizionamento assoluto e relativo sono definiti per il
problema numerico da risolvere.
Un esempio di problema mal posto si ha nel caso della cancellazione.
Supponiamo di voler calcolare f(x) = x( x 1 x + ) con sei cifre decimali
per la mantissa:
x
(x) f
~
f(x)
1 0,414210 0,414214
10 1,54340 1,54347
10
2
4,99000 4,98756
10
3
15,8000 15,8074
10
4
50,0000 49,9988
10
5
100,000 198,113
Le cifre sottolineate sono affette da errore. Per 10
5
linformazione
persa. Per evitare lerrore commesso nel calcolare la differenza
di numeri vicini si pu procedere cos:
18
( )
( )( )
x 1 x
x
x 1 x
x 1 x
x
x 1 x
x 1 x x 1 x x
x 1 x x f(x)
+ +
=
+ +
+
=
+ +
+ + +
= + =

Abbiamo quindi trasformato il problema da mal posto a ben posto.
Altro esempio: p(x) = ax
2
+ bx + c
2a
4ac b b
x ,
2a
4ac b b
x
2
2
2
1
+
=

=

Algoritmo stabile:

s SI NO














b>0
Stampa x1, x2
a,b,c
2a
4ac b b
x
2
1

=
2a
4ac b b
x
2
2
+
=
1
2
ax
c
x =
2
1
ax
c
x =
STOP
19
Il metodo numerico (2) si dir convergente se:
: 0 , 0 0 > > > < >
n
d n n ,
0


+ ) ( ) (
n n
d d x d x

dove x(d) la soluzione di (1) corrispondente al dato d
ed
) (
n n
d d x +
la soluzione di (2) " "
n
d d +
.
Misure della convergenza di
n
x
ad x sono date dall' errore assoluto
e dall' errore relativo.

Relazione tra stabilit e convergenza
Se il problema (1) ben posto, C.N. perch il metodo numerico (2)
sia convergente che sia stabile.
Ci vuol dire che se il metodo instabile non converger ma la
stabilit non sufficiente per la convergenza. Pertanto cercheremo
sempre dei metodi stabili che sono quelli che possono essere
convergenti. La stabilit invece una condizione sufficiente se il
metodo (2) consistente con il problema (1). Questo un teorema
fondamentale dell' analisi numerica noto come teorema di
equivalenza di Lax-Richtmyer:
Per un metodo consistente la stabilit equivalente alla
convergenza.

20
Ci chiediamo adesso quale delle quattro operazioni aritmetiche
possa provocare una perdita di precisione. Abbiamo detto che i
risultati di operazioni aritmetiche tra numeri di macchina in
generale non sono numeri di macchina. Loperazione di macchina
associa a due numeri di macchina un terzo numero di macchina.
Indichiamo con:
i
x
= fl(
i
x
)=
) 1 (
i i
x +
, |
i
|
M

Esaminiamo lerrore relativo:
( ) ( )
2 1
2 1 2 1
opx x
x op x opx x

prodotto:
( ) ( )
2 1 2 1
2 1
2 2 1 1 2 1

x x
1 x 1 x x x
=
+ +

2 1


divisione:
( )
( )
2
2 1
2 1
2 2
1 1
2
1
1

/x x
1 x
1 x
x
x
+
+
=
+
+

2 1
+

somma algebrica:
( ) ( ) ( ) | |
2
2 1
2
1
2 1
1
2 1
2 2 1 1 2 1

x x
x

x x
x
x x
1 x 1 x x x
+

=
+
+ + + +


+
2 1
i
x x
x
per x
1
+ x
2
0
Osservazioni:
- : nessun problema per lerrore assoluto, ma si ha un errore
relativo grande se x
1
x
2
* : ok per lerrore relativo, lerrore assoluto dipende dallordine di
grandezza dei fattori
/: ok per lerrore relativo, lerrore assoluto grande se x
2
0.
21
Altro problema importante determinare la complessit
computazionale di un algoritmo ovvero il costo delle operazioni
in termini di un numero caratteristico. Ad esempio, nel caso di un
sistema lineare tale numero il numero di equazioni del sistema
che, in un sistema con matrice dei coefficienti quadrata, uguale
al numero delle incognite n . Nel caso del metodo di Gauss, che
esamineremo pi avanti, il costo computazionale .
3
4
3
n
Come esempio, vediamo uno schema che serve a diminuire
il costo computazionale del calcolo di un polinomio.

Schema di Hrner (nested multiplication)

Si vuole eseguire il calcolo di:
d cx bx ax x f + + + =
2 3
) (
Sono necessarie tre somme e sei moltiplicazioni per un totale di 9
operazioni floating point (9 flops).
In generale, per calcolare:

0 1
1
1
... ) ( a x a x a x a x f
n
n
n
n
+ + + + =


occorrono n somme ed
2
) 1 ( + n n
moltiplicazioni, per un totale di
2
) 3 (
2
) 1 ( +
=
+
+
n n n n
n n
2
flops

22

Se invece si applica lo schema di Hrner:
)...)) ( ... ( ( ) (
1 2 1 0 n n
xa a x a x a x a x f + + + + + =


otteniamo n somme ed n moltiplicazioni per un totale di: n flops.