Sei sulla pagina 1di 65

Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Laurea triennale in Informatica


Calcolo Scientifico:analisi degli errori

R. Vermiglio
DIPARTIMENTO DI SCIENZE MATEMATICHE, INFORMATICHE E FISICHE
Universita degli Studi di Udine
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Outline

Lo strumento di calcolo
Numeri di macchina
Precisione di macchina
Aritmetica di macchina
Analisi dellerrore
Errore inerente
Errore analitico
Errore algoritmico
Conclusioni
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Numeri reali

Le proprieta dellinsieme dei numeri reali R sono note. In particolare sap-


piamo sono infiniti e che, in generale, sono necessarie infinite cifre di per
la loro rappresentazione in base B 2, B N. Vale


di N, 0 di B 1, d1 6= 0
R = {0} (d1 B 1 + d2 B 2 + . . .) B p | di non definitivamente = B 1
pZ

Example

x= 1/4 = 0.25 100 x = 1/30 = 0.3333.... 101


5 = 0.22360679774..... 101 = 0.314159265358 . . . 101
x = 0.1 100 = 0.1100 23
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Numeri di macchina o floating-point


Il sistema di numeri di macchina o floating-point (virgola mobile) e il
sottoinsieme F := F(B, t, pmin , pmax ) di R definito da

0 di B 1,
F = {0} (d1 B 1 + d2 B 2 + . . . + dt B t ) B p | i = 1, .., t, d1 6= 0
pmin p pmax }

ed e caratterizzato dai quattro interi


B: base di rappresentazione
t
di B i
P
t: numero cifre della mantissa
i=1
pmin , pmax > 0 : forniscono limitazioni inferiore e superiore
dellesponente p, i.e. pmin p pmax

Infine si definisce c = p + pmin la caratteristica del numero, mentre d2 ...dt


e chiamata frazione.

Tale rappresentazione si dice normalizzata, perche la cifra piu significativa


d1 6= 0, per x 6= 0. Nei sistemi binari, i.e. B = 2, risulta d1 = 1.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Le proprieta dellinsieme F

linsieme F e finito e la sua cardinalita e data da

1 + 2(B 1)B t1 (pmax + pmin + 1)

il piu piccolo numero positivo normalizzato di F e

realmin = B pmin 1

il piu grande numero positivo normalizzato di F e

realmax = B pmax (1 B t )

i numeri di F non sono uniformemente distribuiti


sono equispaziati solo tra due potenze successive di B
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

I numeri denormalizzati
Linsieme dei numeri di macchina F puo essere esteso includendo
anche i numeri denormalizzati, che sono i numeri reali con cifra
significativa principale d1 = 0 e con esponente p = pmin .
Tali numeri sono distribuiti tra realmin e lo zero e sono equispaziati
con spaziatura pari a B pmin t .

Exercise
Quanti sono i numeri denormalizzati? Che valore ha il piu piccolo
numero denormalizzato positivo?

Exercise
Descrivi linsieme dei numeri di macchina F caratterizati da B = 2,
t = 3, pmin = 2, pmax = 1, includendo anche i numeri
denormalizzati.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Approssimazione dei numeri reali


Solitamente i calcolatori lavorano in una base B 6= 10, pertanto anche
un numero che e rappresentabile con un numero finito di cifre decimali,
puo richiedere per la sua rappresentazione in una base diversa un numero
infinito di cifre.

Example
x = (0.3)10 = (0.01001)2 = (0.1001)2 21 .

Dato x R si cerchera un numero floating point fl(x) F che lo ap-


prossimi, definendo cos unapplicazione
fl : R F
tale che
fl segnala errore di overflow quando |x| > realmax.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Approssimazione dei numeri reali


Solitamente i calcolatori lavorano in una base B 6= 10, pertanto anche
un numero che e rappresentabile con un numero finito di cifre decimali,
puo richiedere per la sua rappresentazione in una base diversa un numero
infinito di cifre.

Example
x = (0.3)10 = (0.01001)2 = (0.1001)2 21 .

Dato x R si cerchera un numero floating point fl(x) F che lo ap-


prossimi, definendo cos unapplicazione
fl : R F
tale che
fl segnala errore di overflow quando |x| > realmax.
fl segnala errore di underflow quando |x| < min{|y |, y F, y 6= 0}.
In alcuni sistemi viene posto fl(x) = 0.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Approssimazione dei numeri reali


Solitamente i calcolatori lavorano in una base B 6= 10, pertanto anche
un numero che e rappresentabile con un numero finito di cifre decimali,
puo richiedere per la sua rappresentazione in una base diversa un numero
infinito di cifre.

Example
x = (0.3)10 = (0.01001)2 = (0.1001)2 21 .

Dato x R si cerchera un numero floating point fl(x) F che lo ap-


prossimi, definendo cos unapplicazione
fl : R F
tale che
fl segnala errore di overflow quando |x| > realmax.
fl segnala errore di underflow quando |x| < min{|y |, y F, y 6= 0}.
In alcuni sistemi viene posto fl(x) = 0.
fl(x) = x quando x F
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Quando x
/ F, ma
min{|y |, y F, y 6= 0} < |x| < realmax
allora fl(x) F viene scelto secondo una delle seguenti strategie:
Troncamento: la mantissa di x viene troncata alla t-esima cifra.
Esempio: B = 10, t = 3:
fl(0.1234567) = 0.123; fl(0.9876543) = 0.987, fl(0.1235) = 0.123.

Arrotondamento (rounding): il numero fl(x) e il numero di


macchina piu vicino a x.
Esempio: B = 10, t = 3:
fl(0.1234567) = 0.123 e fl(0.9876543) = 0.988.

Quando x e equidistante da due numeri di macchina, fl(x) puo


essere scelto in modi diversi. In particolare ricordiamo
round away from zero dove fl(x) e il numero piu grande;
round to even dove fl(x) e il numero di macchina con la
cifra dt pari. Esempio: B = 10, t = 3: fl(0.1245) = 0.125
(away from zero); fl(0.1245) = 0.124 (to even).
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Precisione di macchina

Laccuratezza di un sistema di numeri di macchina e caratterizzata


da una quantita definita precisione di macchina u
Ogni numero reale x nel range di F sara approssimato da fl(x) con
un errore relativo (errore di rappresentazione di x) maggiorato
dalla precisione di macchina u

|fl(x) x|
x = u.
|x|

Vale:
u := B 1t nel caso di troncamento

B 1t
u := 2 nel caso dellarrotondamento
La precisione di macchina u non va confusa con realmin ! In tutti i
sistemi vale 0 < realmin < u < realmax
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Sistemi di numeri di macchina F

Modello B t pmin pmax u


IEEE - SP 2 24 -125 128 6 108
IEEE - DP 2 53 -1021 1024 1 1016
IEEE - EX 2 64 -16381 16384 5 1020
Cray- SP 2 48 -8192 8191 4 1015
Cray - DP 2 96 -8192 8191 1 1029
HP 28 and 48G calculator 10 12 -499 499 5 1012
IBM3090 - SP 16 6 -64 63 5 107
IBM3090 - SP 16 14 -64 63 1 1016
IBM3090 - SP 16 28 -64 63 2 1023
DEC VAX G - SP 2 53 -1023 1023 1 1016
DEC VAX G - DP 2 56 -127 127 1 1017
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Lo standard IEEE-DP (1985):


B = 2, t = 53, pmin = 1021,pmax = 1024

realmin = 21022 2.2251e 308


realmax = 21024 (1 253 ) 1.7977e + 308
u = 253 1.11 1016 (arrotondamento alla cifra pari)
Lesponente puo assumere anche i valori p = pmin 1 = 1022 e p =
pmax + 1 = 1025 per usi speciali:
p = 1022, frazione d2 ....d53 = 0 rappresentazione dello zero 0
p = 1022, frazione d2 ....d53 6= 0 numeri denormalizzati
p = +1025, frazione d2 ....d53 = 0 Infinity (Inf) rappresenta una
situazione di overflow, divisione per zero
p = +1025, frazione d2 ....d53 6= 0 Not a Number (NaN)
rappresenta operazioni indefinite o indeterminate 00 , 0 Inf , Inf
Inf .

La caratteristica c soddisfa 0 c 2047 = 211 1. Tenendo conto del


bit necessario per il segno e delle 52 cifre della frazione risulta che per
memorizzare un numero di macchina ho bisogno di 64 cifre binarie.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

MATLAB
Il MATLAB esegue tutti i suoi calcoli nello standard IEEE-DP. La funzione
logica isieee ritorna il valore 1 vero se sta usando laritmetica IEEE e 0
falso in caso contrario
>> isieee
ans = 1
La funzione eps ci fornisce la distanza tra x = 1.0 e il successivo numero
floating point ed e uguale al doppio della precisione di macchina
>>eps
eps = 2.2204e-16
Le funzioni MATLAB realmax e realmin forniscono rispettivamente i
numeri (normalizzati) realmax e realmin:
>>realmax
ans =1.7977e+308
>>realmin
ans=2.2251e-308
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

MATLAB continua

Se il risultato di una computazione e piu grande di realmax, si ha overflow


segnalato dall infinito

>>realmax*2
ans = Inf

Se il risultato di una computazione e piu piccolo di realmin si ottiene in


risposta un numero denormalizzato o il valore zero se e piu piccolo di
eps realmin (i.e. il piu piccolo numero denormalizzato).

>>realmin*eps
ans =4.9407e-324
>>realmin*eps/2
ans = 0
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

MATLAB continua
I risultati di operazioni matematiche non valide producono un NaN :
>>0/0
Warning: Divide by zero ans = NaN
>>Inf/Inf
ans = NaN
>>Inf-Inf
ans = NaN
>>0*NaN
ans = NaN
Con il comando format hex , i numeri binari floating point sono rappre-
sentati nel formato esadecimale:
>>format hex
>>eps
eps = 3cb0000000000000
>>realmax
ans =7fefffffffffffff
>>realmin
ans = 0010000000000000
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Aritmetica di macchina
Addizione e sottrazione

Le operazioni elementari (op = , /, ) che operano su numeri di macchina


non e detto diano come risultato esatto un numero di macchina. Di qui la
necessita di definire le operazioni di macchina fl(op).
Addizione o sottrazione Lo shift della mantissa necessario per rendere
uguali gli esponenti dei numeri, puo causare la perdita di cifre (anche tutte)
nel numero piu piccolo nella fase di arrotondamento.
Example
Sia B = 10,t = 3. Dati x1 = 0.123 101 ,x2 = 0.123 101
= 0.00123 101 ,vale

x1 + x2 = 0.12423 101
/F (aritmetica esatta)
Il risultato deve essere approssimato: rimane cos definita unoperazione
approssimata fl(+), tale che

x1 fl(+) x2 = 0.124 101 F (aritmetica di macchina)


Osserva che le ultime due cifre di x2 non hanno effetto sul risultato.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Aritmetica di macchina
Moltiplicazione

Moltiplicazione Il prodotto di due mantisse di t cifre contiene fino a 2t


cifre e quindi il risultato puo non essere rappresentabile. Inotre si puo
verificare overflow.
Example
Sia B = 10,t = 3 e pmax = 2. Dati x1 = 0.123 101 , x2 = 0.123 102 , in
aritmetica esatta si ottiene

x1 x2 = 0.015129 103 = 0.15129 102


/ F.

Il risultato deve essere pertanto approssimato: rimane cos definita


unoperazione approssimata, fl(), tale che

x1 fl()x2 = 0.151 102 F.

Dati x1 = 0.123 102 , x2 = 0.124 102 , in aritmetica esatta si ottiene

x1 x2 = 0.015252 104 = 0.15252 103


/ F.

In questo caso si verifica overflow.


Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Aritmetica di macchina
Divisione

Divisione Il quoziente di due mantisse di t cifre puo contenere piu di t


cifre e quindi non essere rappresentabile.
Example
Sia B = 10,t = 3 e p = 2. Dati x1 = 0.123 101 , x2 = 0.456 101 , in
aritmetica esatta si ottiene

x1 /x2 = 0.2697368421052632...100
/ F.

Il risultato deve essere pertanto approssimato: rimane cos definita


unoperazione approssimata, fl(/), tale che

x1 fl(/) x2 = 0.270 100 .


Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Modello di calcolo

Per analizzare gli errori di arrotondamento in un algoritmo, dobbiamo fare


delle assunzioni sullaccuratezza nelle operazioni di base. Prendiamo come
modello di aritmetica di macchina il seguente:
tutte le operazioni aritmetiche elementari (op = , /, ) sono calcolate in
modo da soddisfare per ogni x1 , x2 F

|(x1 fl(op)x2 ) (x1 op x2 )|


errop = u, op = , /, .
|x1 op x2 |

Si considera tale maggiorazione valida anche per op = .
Il modello asserisce che il valore calcolato e buono quanto il valore ot-
tenuto dallarrotondamento del valore esatto, cioe idealmente si assume

x1 fl(op) x2 = fl(x1 op x2 ).

Per lo standard IEEE tale modello e valido.


Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Limiti dellaritmetica di macchina


Laritmetica di macchina non soddisfa tutte le proprieta dellaritmetica
esatta. Si conservano le proprieta commutativa della somma e del prodotto.

x1 fl(+)x2 = x2 fl(+)x1 , x1 fl() x2 = x1 fl()x2

NON sono valide, per esempio, la proprieta associativa della somma e del
prodotto
(x1 fl(+)x2 )fl(+)x3 6= x1 fl(+)(x2 )fl(+)x3 )
,
(x1 fl()x2 )fl()x3 6= x1 fl()(x2 )fl()x3 )
la proprieta distributiva della somma rispetto al prodotto

(x1 fl(+)x2 )fl()x3 6= x1 fl() x3 fl(+)x2 fl()x3 ,

e la legge di cancellazione

(x1 fl()x2 )fl(/)x2 6= x1


.
(x1 fl(/)x2 )fl()x2 6= x1
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Example
Sia B = 10, t = 3. Presi
x1 = 0.123 102 , x2 = 0.123 101 = 0.000123 102 , vale
x1 + x2 = 0.123123 102 , ma x1 fl(+) x2 = 0.123 102 . Osserva che
x2 > 0 non ha effetto sul risultato in aritmetica approssimata.

Example
Sia B = 10, t = 3. Presi x1 = 0.559, x2 = 0.555, x3 = 0.4 102 ,
si ottiene
(x1 fl(+)x2 )fl(+)x3 = 0.111 101 fl(+) 0.0004 101 = 0.111 101 ,
mentre x1 fl(+)(x2 fl(+)x3 ) = 0.559fl(+)0.559 = 0.112 101 che e
il risultato esatto arrotondato.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Limiti dellaritmetica di macchina: continua

Example
Vale (1 + x) + x = 1 ma 1 + (x + x) > 1, dove x e un numero di
macchina positivo leggermente piu piccolo della precisione u.

Luso dellaritmetica di macchina comporta che


algoritmi matematicamente equivalenti non lo siano numeri-
camente!
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Errore nel calcolo di una funzione f : R R


Prendiamo in esame il problema del calcolo del valore
y = f (x)
(modello matematico) dove x R = dato di input e y R = dato di
output.
Oss: Tutte le definizioni che seguono di errore possono essere estese al
caso piu generale di y = F (x) con F : Rn Rm , n, m, 1 usando le
norme.
Sia g la funzione che rappresenta lalgoritmo (modello numerico) scelto
per approssimare la funzione f in aritmetica esatta e sia infine g la funzione
effettivamente calcolata in aritmetica di macchina.
A causa degli errori di misurazione e di rappresentazione del numero reale
x sul calcolatore, sara usato in input un valore approssimato x.
x y = f (x)
l l errore totale
x g (x)
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Errore inerente, analitico ed algoritmico

In prima approssimazione risulta

f (x) g (x)
errtotale = = errinerente + erranalitico + erralgoritmico
f (x)

dove
f (x) f (x)
errinerente =
f (x)
f (x) g (x)
erranalitico =
f (x)
g (x) g (x)
erralgoritmico =
g (x)

Laccuratezza del risultato finale viene misurata dallerrore totale errtotale e


dipende da tutte le componenti derrore errinerente , erranalitico , erralgoritmico .
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Errore inerente e condizionamento

Esistono problemi tali che, qualunque algoritmo venga utilizzato per ri-
solverli, lerrore generato nel risultato risulta elevato e talvolta tale da
rendere privo di significato il risultato stesso. Questo fenomeno e una par-
ticolarita intrinseca del problema e non dipende dagli algoritmi utilizzati.
Lerrore inerente e legato al problema assegnato e studia leffetto degli
errori nei dati di input sui dati di output. La scelta dellalgoritmo non ha
effetto su tale errore.
Il problema si dice ben condizionato se non amplifica gli errori nei dati,
ovvero se un errore relativo nei dati di input comporta un errore relativo
dello stesso ordine di grandezza nella risposta.
Il problema si dice mal condizionato se un errore anche piccolo nei dati
dara origine ad un grande errore nella risposta.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Come misurare il condizionamento nel calcolo della funzione f ?

|errorerisposta |
condf (x) := |erroredato |

|f (x)f (x)||x|
= |f (x)||xx|

Il problema e mal condizionato quando condf (x)  1.


Se la funzione f e differenziabile due volte in un intorno di x, otte-
niamo, in prima approssimazione,

|x||f 0 (x)|
condf (x) = .
|f (x)|

Osserviamo che il condizionamento dipende non solo da f ma anche


dal dato x.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Example
Consideriamo il problema del calcolo della funzione f (x) = cos x. Il
condizionamento e misurato da

condf (x) = |x|| tan(x)|.

Il problema e dunque mal condizionato per x 2 . Infatti

cos(1.57079) = 6.32679489 106 ,


cos(1.57078) = 1.632679489 105

x = 6.36 106 f (x) = 1.58


Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Errore inerente, continua

Vogliamo studiare il condizionamento del problema della valutazione di una


funzione F : Rn R.
Usando anche in questo caso la formula di Taylor si trova, in prima ap-
prossimazione,
n  
F (x) F (x) X xi F (x) (xi xi )
= ,
F (x) F (x) xi xi
i=1

dove x = (x1 , . . . , xn ),x = (x1 , . . . , xn ) Rn .


n
X
|errinerente | |ci (x)|xi ,
i=1

dove xi e lerrore relativo al dato i-esimo e ci (x) := Fx(x)


i
xi
F (x) e il coeffi-
ciente di amplificazione ad esso relativo. I coefficienti di amplificazione
forniscono una misura del condizionamento del problema.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Esempio: errore inerente della somma di n numeri


n
X
F (x1 , . . . , xn ) = xi
i=1
I coefficienti di amplificazione sono
xi
ci (x1 , . . . , xn ) = , i = 1, 2, . . . , n,
x1 + . . . + xn
e
n
P
|xi |
i=1
|errinerente | max (xi ) n .
i=1,...,n P
| xi |
i=1
Il problema e fortemente mal condizionato se
n
X n
X
|xi | >> | xi | (cancellazione)
i=1 i=1

Nel caso di somma di numeri xi di segno concorde, il problema e ben


condizionato!
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Esempio: errore inerente del prodotto di n numeri

n
Y
F (x1 , . . . , xn ) = xi
i=1

I coefficienti di amplificazione sono

ci (x1 , . . . , xn ) = 1, i = 1, 2, . . . , n,

e pertanto il problema e sempre ben condizionato.


Example
Calcola il condizionamento nella divisione di due numeri e della radice
quadrata di un numero
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Esempio: errore inerente della soluzione di un sistema


lineare Ax = b

   
0.7800 0.5630 0.2170
A= ,b =
0.4570 0.3300 0.1270
 
1
La soluzione esatta e x = .
1
Perturbiamo lelemento a1,1 = 0.7800 della matrice A con a1,1 = 0.7810.
Lerrore relativo nel dato perturbato e a1,1 = 1.2821 103 .
 
0.2483
La soluzione del sistema perturbato risulta x = con un errore
0.0410
misurato in norma infinito pari a kx xk = 1.0410.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Esempio

Se il problema e mal condizionato, anche il miglior algoritmo potra dare


risultati non accurati. In questo caso si cerca una riformulazione del prob-
lema matematicamente equivalente, ma con un miglior indice di condizion-
amento.
Example
!3
21 1
= ( 2 1)6 = 99 70 2 =
2+1 99 + 70 2


x1
3
f1 (x) = x+1condf1 ( 2) 8.485
6
f2 (x) = (x 1) condf2 ( 2) 2.048 101

f3 (x) = 99 70x condf3 ( 2) 1.960 104 mal condizionato !
1

f4 (x) = 99+70x condf4 ( 2) 0.5
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Errore analitico o di troncamento


Lerrore analitico misura lerrore tra il risultato esatto e quello fornito
dallalgoritmo che usa gli stessi dati di input e opera in aritmetica esatta.
Fornisce uninformazione sulla bonta della tecnica di approssimazione
(i.e. modello numerico) usata.
E dovuto allapprossimazione di una serie infinita con una serie troncata.
Example
n
x
X xk X xk
f (x) = e = gn (x) =
k! k!
k=0 k=0

Per x = 1, gn (1) fornisce una stima del numero di Nepero e con un


errore analitico (assoluto)

ea e
|e gn (1)| = <
(n + 1)! (n + 1)!

dove 0 < a < 1.


Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Errore analitico o di troncamento, continua

Nasce dallinterruzione di un processo iterativo dopo un numero finito di


passi, come accade, per esempio, nellalgoritmo di Archimede.
Example
f (x + h) f (x)
f 0 (x) ,h > 0
h
Per lerrore analitico (assoluto) vale per x [a, b] e x + h [a, b]

f (x + h) f (x) |f 00 (x )|h
|f 0 (x) | hC
h 2
|f 00 (t)|
dove x < x < x + h e C = maxt[a,b] 2
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Errore algoritmico

Lerrore algoritmico e generato dal fatto che le operazioni sono effettuate


in aritmetica di macchina: miisura lerrore tra il risultato fornito da un
algoritmo che opera in laritmetica esatta e quello prodotto dallo stesso
algoritmo in aritmetica di macchina.
Lalgoritmo scelto per la valutazione di g (x), x F puo essere
descritto da
una sequenza finita di operazioni elementari (i.e. , , /, ) gi : Rni
R, ni 1, i = 1, 2, . . . , N.
La descrizione dello stesso algoritmo in aritmetica di macchina,g , si ottiene
sostituendo ogni operazione in aritmetica esatta gi , i = 1, . . . , N, con la
relativa operazione gi : Fni F, i = 1, . . . , N in aritmetica di macchina

g = gN gN1 ... g1
...
g = gN gN1 ... g1
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Esempio

I passi dell algoritmo per la valutazione della funzione yN = g (x) =


x N , N 2 possono es sere descritti da

y2 = g1 (x, x)
yi = gi1 (x, yi1 ), i = 3, . . . , N

dove gi = , i = 1, ..., N 1.
Il risultato yN = g (x) dellalgoritmo eseguito sul calcolatore sara descritto
da
y2 = g1 (x, x)
yi = gi1 (x, yi1 ), i = 3, . . . , N
dove gi = fl(), i = 1, ..., N 1
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Errore algoritmico e stabilita

Un algoritmo si dice stabile in avanti se lerrore algoritmico eun piccolo


multiplo della precisione di macchina u.
Oss: La stabilita in avanti dellalgoritmo non garantisce laccuratezza del
risultato finale.
Laccuratezza del risultato dipende dallerrore totale.
Un risultato non accurato puo risultare sia dallapplicazione di un algo-
ritmo instabile ad un problema ben condizionato sia dallapplicazione di un
algoritmo stabile ad un problema mal condizionato.

Le ricette per migliorare sono diverse: scegliere un algoritmo piu stabile nel
primo caso, riformulare matematicamente il problema nel secondo caso.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Analisi dellerrore algoritmico


Nei casi semplici, a disposizione i grafi computazionali.
Un altro approccio consiste nellanalisi dell errore all indietro [J.H.
Wilkinson (1919-1986)].

x g (x)
errore & errore
all0 indietro in avanti
x +  g (x) = g (x + )

La soluzione g (x) fornita dallalgoritmo in aritmetica di macchina con dato


x F viene vista come la soluzione ottenuta in aritmetica esatta su un
dato perturbato g (x) = g (x + )
Gli errori di arrotondamento sono interpretati come errori nei dati!
Lalgoritmo per calcolare g (x) si dira stabile allindietro se, x il risultato
g (x) sara la soluzione ottenuta in aritmetica esatta con un dato vicino
||
alloriginale, i.e. |x| e un piccolo multiplo della precisione di macchina u.
La definizione di vicino puo dipendere dal contesto.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Osserva che
||
|erralgoritmico | condg (x) ,
|x|
dove condg (x) e il numero di condizionamento relativo alla funzione g .

Example
La somma di due numeri x1 , x2 F con loperazione di macchina fl(+)
puo essere riscritta come segue

x1 fl(+) x2 = (x1 + x2 )(1 + e) = x1 (1 + e) + x2 (1 + e) = x1 + x2

dove |e| u.
La somma e la differenza sono operazioni stabili allindietro.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Analisi allindietro, continua


In generale lanalisi allindietro viene applicata al problema y = f (x), x F
x y = f (x)
errore & errore
all0 indietro in avanti
x + y = g (x) = f (x + )
La soluzione y = g (x) fornita dallalgoritmo in aritmetica di macchina
con dato x F viene vista come la soluzione del problema su un dato
perturbato g (x) = f (x + )
Un metodo per calcolare y = f (x) si dira stabile allindietro se, x F,
il risultato y sara soluzione del problema con un dato vicino alloriginale,
||
i.e. |x| e un piccolo multiplo della precisione di macchina u.
Vale
|errorre in avanti| condf (x)|errorre allindietro|,
dove condf (x) e in numero di condizionamento relativo a f

La soluzione calcolata di un problema mal condizionato puo avere un


grande errore in avanti.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Esempio analisi allindietro

Example
Per la funzione esponenziale f (x) = e x otteniamo

y = e x+ x +  = log (y )

Per esempio x = 1 e n = 3 abbiamo

e x = e = 2.7182818284590..., y = 2.66666666666667
x +  = log (y ) = 0.98082925301173
errore in avanti = y e x = 0.05161516179238
errore allindietro =  = 0.01917074698827
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Analisi dellerrore di tipo misto : in avanti e allindietro

Diverse routines per calcolare delle funzioni y = f (x) soddisfano una con-
dizione piu debole (errore misto)

y + = f (x + ), || D|y |, || E |x|, x F


con D, E piccoli multipli della precisione di macchina.

x F y = f (x)
&
y = g (x)
l
x + y + = f (x + )

In generale un algoritmo viene detto numericamente stabile se e stabile


rispetto ad un analisi dellerrore di tipo misto.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione

La sottrazione di due numeri approssimati (a causa di errori di arroton-


damento o di altri errori attribuibili a computazioni precedenti) aventi lo
stesso segno e modulo quasi uguale puo essere causa di inaccuratezza nel
risultato.
Tale fenomeno e indicato come cancellazione.
Example

0.192403 102 0.192275 102 = 0.128000 101


Il risultato e corretto e esattamente rappresentabile, ma ha solo tre cifre
significative, perche le cifre principali sono state cancellate.
Anche se il risultato e esatto, la cancellazione implica una perdita di
informazioni che puo essere causa di risultati non accurati.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione: radici di equazioni di secondo grado


Le soluzioni dellequazione di secondo grado ax 2 + bx + c = 0 sono fornite
dalla ben nota formula

b b 2 4ac
x1,2 = .
2a
Ma, mentre il problema matematico e banale, dal punto di vista numerico
tale formula richiede piu attenzione in quanto puo dare risposte inaccurate
o essere non valutatabile in corrispondenza di particolari scelte dei dati a,
b e c.

b 2  |4ac| b 2 4ac |b|

ll fenomeno della cancellazione


si puo presentare nel calcolo di una
delle due soluzioni: b 2 4ac sara affetto da errori di
approssimazione e pertanto la sottrazione amplifichera tale errore.
La cancellazione puo essere evitata calcolando

(b + sign(b) b 2 4ac)
x1 =
2a
c
x2 =
ax
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione: radici di equazioni di secondo grado,


continua

Una cancellazione ben piu pericolosa numericamente si puo


presentare nella valutazione dellespressione b 2 4ac.
Nel caso di radici quasi coincidenti (i.e. b 2 4ac), ci puo essere
una significativa perdita di accuratezza nel risultato, che non puo
essere risolta con una trasformazione algebrica. Lunica possibilita
consiste nel valutare tale espressione con una precisione maggiore.
Unaltra difficolta numerica puo essere dovuta alloverflow, che, per
esempio, si puo incontrare nel calcolo di b 2 e 4ac con a, b e c con
esponente p = (pmax + 1)/2. In alcuni casi loverflow si puo risovere
con uno scaling dei dati.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione: deviazione standard


La media mn di n numeri x1 , . . . , xn , e data da
Pn
xi
i=1
mn =
n
mentre la deviazione standard n e
v
u n
uP
u (xi mn )2
n = i=1
t
.
n
Per calcolare la deviazione n , spesso, onde evitare due passaggi di dati,
viene proposta la seguente formula matematicamente equivalente
v
u n  n 2
uP 2 1 P
u xi xi
t i=1 n
i=1
n = .
n
In presenza di errori di arrotondamento, questa seconda formulazione che
calcola la deviazione come differenza di due numeri positivi, puo fornire
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione: deviazione standard, continua


Un algoritmo numericamente stabile per calcolare la deviazione standard e
il seguente: definite le quantita
k
P
xi
i=1
mk = , k = 1, . . . , n,
k
e
k
X
qk = (xi mk )2 , k = 1, . . . , n,
i=1

valgono le relazioni ricorsive


xk mk1
m1 = x1 , mk = mk1 + , k = 2, . . . , n,
k
(xk mk1 )2 (k 1)
q1 = 0, qk = qk1 + , k = 2, . . . , n,
k
che mi permettono di ricavare la deviazione standard da n2 = qn /n.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione: lalgoritmo di Archimede

Lalgoritmo di Archimede puo essere riscritto, per evitare la cancellazione,


nel seguente modo

l1 = 2,
li
li+1 = q 2
, i = 1, 2, . . . ,
2+ 4li
pi = li 2i , i = 1, 2, . . . .
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione: lalgoritmo di Archimede risultati


i pi errass errrel
1 2.828427124746190 3.13e-01 9.97e-02
2 3.061467458920718 8.01e-02 2.55e-02
4 3.136548490545939 5.04e-03 1.60e-03
5 3.140331156954753 1.26e-03 4.02e-04
.. .. .. ..
. . . .
11 3.141592345570118 3.08e-07 9.80e-08
12 3.141592576584873 7.70e-08 2.45e-08
13 3.141592634338564 1.92e-08 6.13e-09
14 3.141592648776986 4.81e-09 1.53e-09
15 3.141592652386592 1.20e-09 3.83e-10
16 3.141592653288993 3.01e-10 9.57e-11
17 3.141592653514594 7.52e-11 2.39e-11
.. .. .. ..
. . . .
22 3.141592653589721 7.19e-14 2.29e-14
23 3.141592653589776 1.69e-14 5.37e-15
24 3.141592653589790 3.11e-15 9.89e-16
25 3.141592653589794 4.44e-16 1.41e-16
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione: lesponenziale e x per x < 0

Le cifre perdute con la cancellazione sono le piu significative mentre quelle


perdute con larrotondamento sono le meno significative.
Calcolare piccole quantita come differenza di grandi quantita rende domi-
nante lerrore di arrotondamento. Linstabilita dellalgoritmo per il calcolo
di e x per x < 0 puo essere risolta riscrivendo e x = 1/e x per x < 0.

x n gn (x) errrel
-0.5 16 6.065306597126335e-01 1.83e-16
-1 20 3.678794411714423e-01 1.50e-16
-20 68 2.061153622438558e-09 2.01e-16
-40 103 4.248354255291590e-18 1.81e-16
-100 192 3.720075976020839e-44 8.03e-16
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Derivata e rapporto incrementale

Assumendo che l errore relativo nei dati di input f (x), f (x + h) sia mag-
giorato dalla precisione di macchina u e che h sia un numero di macchina,
si ha
|f (x + h)| + |f (x)| |f (x)|
|erralgoritmo | 2u + u 2u + 2u 0
|f (x + h) f (x)| h|f (x)|

Landamento dellerrore di arrotondamento rispetto al parametro h e di-


verso dallerrore analitico: riducendo h tale errore diventa arbitrariamente
grande causa la cancellazione.
Il passo hott che fornisce la maggiorazione ottimale si puo stimare ponendo
Ch 2|f (x)|u
2|f 0 (x)| = h|f 0 (x)| da cui si ottiene
r
u|f (x)|
hott ' 2 .
C
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Somma di n numeri
n
X
sn = xi , xi F, i = 1, . . . , n
i=1

Per fl(+) non vale la proprieta associativa e lerrore in un singolo passo


dipende dagli addendi da sommare il valore finale calcolato in aritmetica
di macchina dallalgoritmo della somma ricorsiva

s(1)=x(1)
for i=2:n
s(i)=s(i-1)+x(i);
end

dipendera dallordinamento. In prima approssimazione vale


n
1 X
erralgoritmo = si i1
sn
i=2

dove i e lerrore nelli-esima operazione di somma.


Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Da |i | u, i = 1, . . . , n 1, si ottiene
n
u X
|erralgoritmo | |si |,
|sn |
i=2

n
P
e, dalla maggiorazione |si | |xi |, i = 2, . . . , n, segue
i=1

n
P
|xi |
i=1
|erralgoritmo | (n 1)u
|sn |

In particolare, se i dati xi , i = 1, . . . , n, hanno lo stesso segno

|erralgoritmo | (n 1)u.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Somma di n numeri: lalgoritmo PSUM


In generale possiamo dedurre che laccuratezza migliore si otterra scegliendo
lordinamento che minimizza |si |, i = 2, . . . , n. Questo problema di ot-
timizzazione combinatoria e troppo costoso da risolvere.
Se xi , i = 1, . . . , n hanno stesso segno, la soluzione ottimale e data
dallordinamento di modulo crescente che fornisce la maggiorazione
(n + 1)u
|erralgoritmo | .
2

Nel caso generale, si possono proporre soluzioni di compromesso quali


lordinamento per modulo crescente oppure lordinamento determinato se-
quenzialmente minimizzando passo dopo passo |s1 |, |s2 |, . . . (algoritmo
PSUM)
s(0)=0;
for k=1:n-1
j(k) tale che min{|x(j)+s(k-1)|, j=k,...,n}
j(k) <---->k
end
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Lordine decrescente puo fornire una risposta piu accurata sia di


PSUM che dellordinamento crescente in presenza di forte cancel-
n
P
lazione, i.e. |sn |  |xi |, come questo esempio dimostra.
i=1

Example
Sia x F tale che fl(1 + x) = x e supponiamo di dover sommare
1, x, 2x e 3x. I risultati che si ottengono sono
ordinamento crescente: fl(1 + x + 2x 3x) = 0;
ordinamento PSUM: fl(1 + x 3x + 2x) = 0;
ordinamento decrescente: fl(3x + 2x + x + 1) = 1.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Somma di n numeri: lalgoritmo dellinserzione e della


somma binaria

Nell algoritmo dellinserzione i dati xi vengono ordinati secondo il mod-


ulo crescente ed ogni somma parziale si calcolata per i = 2, . . . , n viene
inserita nella lista xi+1 , . . . , xn mantenendo lordinamento crescente.

Lalgoritmo della somma binaria per n = 2k , somma al primo passo gli


addendi a coppie yi = x2i1 + x2i , i = 1, . . . , n/2 = 2k1 e ripete il
procedimento ricorsivamente a partire da yi . Il risultato si raggiunge in
log2 n passi.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Somma di n numeri: algoritmo di somma compensata

Particolarmente interessante e lalgoritmo di somma compensata [Ka-


han (1972)]. Dati due numeri a, b F, |a| > |b|, sia s = afl(+)b

a a1 a2

+b b1 b2

s = a1 a2 + b1

a b1 0

b b2 0 =: e
suggerisce che

e = [((afl(+)b)fl() a)fl() b] = (afl() s)fl(+) b

e una stima dellerrore commesso (a + b) s.


Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Lalgoritmo di Kahan applica la correzione fornita da e ad ogni passo della


somma ricorsiva, i.e.

s=0; e=0
for i=1:n
t=s
y=x(i)+e
s=t+y
e=(t-s)+y
end
s=s+e

E stato dimostrato [Knuth (1981)] che vale la maggiorazione


n
P
|x |
 i=1 i 2
|erralgoritmo | 2u + O(nu ) .
|sn |

Finche nu 1 la costante di questa limitazione e indipendente da n. In


caso di forte cancellazione anche lalgoritmo di somma compensata non e
in grado di garantire un errore algoritmico piccolo.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Cancellazione degli errori di arrotondamanto: esempio


La valutazione della funzione f (x) = (e x 1)/x presenta il fenomeno
della cancellazione per valori di x 0. Si possono proporre due algoritmi
seguenti
Algoritmo 1:
if x=0 then
f=1
else
f=(exp(x)-1)/x
end
Algoritmo 2:
y=exp(x)
if y=1 then
g=1
else
g=(y-1)/log(y)
end
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Confronto tra gli algoritmi 1 e 2 per il calcolo di


f (x) = (e x 1)/x.

x Algoritmo1 Algoritmo2
1.e-05 1.000005000006965e+00 1.000005000016667e+00
1.e-06 1.000000499962183e+00 1.000000500000167e+00
1.e-07 1.000000049433680e+00 1.000000050000002e+00

1.e-10 1.000000082740371e+00 1.000000000050000e+00


1.e-11 1.000000082740371e+00 1.000000000005000e+00
1.e-12 1.000088900582341e+00 1.000000000000500e+00
1.e-13 9.992007221626408e-01 1.000000000000050e+00
1.e-14 9.992007221626408e-01 1.000000000000005e+00
1.e-15 1.110223024625157e+00 1.000000000000000e+00
1.e-16 0 1
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Commenti sui risultati


L algoritmo 1 risente della cancellazione per |x|  1 e questo causa la
risposta non accurata.
Lalgoritmo 2 valuta in maniera approssimata sia y = e x che log (y ), ma
pur ottenendo valori poco accurati per il numeratore e denominatore il loro
rapporto risulta molto accurato

gli errori di arrotondamanto si cancellano nella divisione!!

Questo risultato si spiega con lanalisi del condizionamento di g (y ) in un


intorno di y = 1. Posto v = y 1 vale vale
v v v
g (1 + v ) = = = 1 + + O(v 2 )
log(1 + v ) v v 2 /2 + v 3 /3 + ...) 2

da cui si ottiene per y 1

y y y y y y g (y )
g (y ) g (y )
2 2 2 2
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Instabilita senza cancellazione

Si vuole analizzare il risultato dellalgoritmo seguente per x > 0

y1 = x 2

yi+1 = yi , i = 1, . . . , m
z1 = ym+1
zi+1 = zi2 , i = 1, . . . , m 1

Implementando in MATLAB lalgoritmo si ottiene

>>x=.25:.25:1.5
x=
0.2500 0.5000 0.7500 1.0000 1.2500 1.5000
>>[z,err]=mroot(x,50)
z=
0.2375 0.4724 0.7316 1.0000 1.1331 1.4550
err=
0.0499 0.0553 0.0245 0 0.0935 0.0300
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n


ha un coefficiente di amplificazione pari a 1/2 mentre per ()2 e
2
m1 m

2i 2m1 2i
P P
|alg | u + =
i=0 i=0
3
2m + 2m1 = 3u (2m 1) .

= u 2 2
Linstabilita dellalgoritmo aumenta con m con coefficiente di ampli-
ficazione totale dellordine di 2m . Per IEEE-DP u = 253 , con m =
50 lerrore algoritmico totale risulta dellordine di 3/16 = 0.1875.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n

Osservazioni conclusive
Lanalisi degli errori di arrotondamento e dellaritmetica di macchina
e stata un importante argomento dellanalisi numerica quando il
calcolatore e diventato uno strumento essenziale, perche ha posto
lattenzione sul ruolo che esso gioca nellaccuratezza della risposta
numerica e ha definito importanti concetti quali la stabilita di al-
goritmi e il condizionamento del problema.
Alle pagine
http://dilawarnotes.wordpress.com/2011/04/30/floating-
point-arithmetic-disasters/
http://www.ima.umn.edu/ arnold/455.f96/disasters.html
http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html
sono presentati dei casi reali in cui computazioni numeriche non
eseguite in maniera attenta hanno causato situazioni disastrose.
Ma il cuore della disciplina sta nello sviluppo ed analisi di algoritmi
efficienti.

Potrebbero piacerti anche