Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
Le proprieta dellinsieme F
realmin = B pmin 1
realmax = B pmax (1 B t )
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
Example
x = (0.3)10 = (0.01001)2 = (0.1001)2 21 .
Example
x = (0.3)10 = (0.01001)2 = (0.1001)2 21 .
Example
x = (0.3)10 = (0.01001)2 = (0.1001)2 21 .
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.
Precisione di macchina
|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
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
>>realmax*2
ans = Inf
>>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
x1 + x2 = 0.12423 101
/F (aritmetica esatta)
Il risultato deve essere approssimato: rimane cos definita unoperazione
approssimata fl(+), tale che
Aritmetica di macchina
Moltiplicazione
Aritmetica di macchina
Divisione
x1 /x2 = 0.2697368421052632...100
/ F.
Modello di calcolo
x1 fl(op) x2 = fl(x1 op 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
e la legge di cancellazione
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
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.
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)
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
|errorerisposta |
condf (x) := |erroredato |
|f (x)f (x)||x|
= |f (x)||xx|
|x||f 0 (x)|
condf (x) = .
|f (x)|
Example
Consideriamo il problema del calcolo della funzione f (x) = cos x. Il
condizionamento e misurato da
n
Y
F (x1 , . . . , xn ) = xi
i=1
ci (x1 , . . . , xn ) = 1, i = 1, 2, . . . , n,
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
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
ea e
|e gn (1)| = <
(n + 1)! (n + 1)!
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
g = gN gN1 ... g1
...
g = gN gN1 ... g1
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n
Esempio
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
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
x g (x)
errore & errore
all0 indietro in avanti
x + g (x) = g (x + )
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
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
Example
Per la funzione esponenziale f (x) = e x otteniamo
y = e x+ x + = log (y )
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
Diverse routines per calcolare delle funzioni y = f (x) soddisfano una con-
dizione piu debole (errore misto)
x F y = f (x)
&
y = g (x)
l
x + y + = f (x + )
Cancellazione
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
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)|
Somma di n numeri
n
X
sn = xi , xi F, i = 1, . . . , n
i=1
s(1)=x(1)
for i=2:n
s(i)=s(i-1)+x(i);
end
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 |
|erralgoritmo | (n 1)u.
Numeri di macchina Rappresentazione Esempi Aritmetica di macchina Analisi dellerrore Cancellazione Somma di n
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
a a1 a2
+b b1 b2
s = a1 a2 + b1
a b1 0
b b2 0 =: e
suggerisce che
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
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
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
y1 = x 2
yi+1 = yi , i = 1, . . . , m
z1 = ym+1
zi+1 = zi2 , i = 1, . . . , m 1
>>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.