Sei sulla pagina 1di 2

0.

1 Propagazione degli errori di arrotondamen-


to nella somma
Vediamo come gli arrori di arrotondamento sui dati x e y si propagano nel
calcolo di x ⊕ y. Siano

x − f l(x) y − f l(y)
x = ; y = .
x y

Ovviamente si ha |x | < m e |y | < m e

f l(x) = x(1 − x ) f l(y) = y(1 − y ).

Indichiamo inoltre con s l’errore relativo introdotto dalla operazione di somma,


ovvero
(f l(x) + f l(y) − f l(f l(x) + f l(y)))
s = ,
f l(x) + f l(y)
da cui segue |s | < m e

f l(f l(x) + f l(y)) = (f l(x) + f l(y))(1 − s ).

Allora, trascurando i termini del tipo x s e y s , otteniamo

(x ⊕ y) = f l(f l(x) + f l(y)) = (f l(x) + f l(y))(1 − s )


= (x(1 − x ) + y(1 − y ))(1 − s )
' x + y − xx − yy − xs − ys
= (x + y)(1 − s ) − xx − yy .

Ora calcoliamo l’errore relativo commesso:


|(x ⊕ y) − (x + y)| | − s (x + y) − xx − yy | |xx + yy |
= ≤ |s | + .
|x + y| |x + y| |x + y|

Pertanto, l’errore relativo dipende dai seguenti fattori:


• errore di arrotondamento sui dati (x , y );
• errore introdotto dall’ operazione di somma (s );
• dati (x,y).
Distinguiamo due casi:
1. Se x, y sono numeri di macchina, allora

| − s (x + y) − xx − yy |
= |s | < m
|x + y|

dato che x e y sono nulli.

1
2. Se, invece, x e/o y non sono numeri di macchina, ovvero x 6= 0 e/o y 6= 0
allora può accadere che

| − s (x + y) − xx − yy |
> m .
|x + y|

Inoltre se x ' −y si può avere una amplificazione degli errori di arrotonda-


mento sui dati. Ovvero, l’operazione di sottrazione fra due numeri “vicini”
fra loro può portare ad una amplificazione degli errori di arrotondamento
sui dati. Questo fenomeno è chiamato cancellazione numerica.
Esempio 1. Supponiamo di lavorare con base β = 10, t = 5 e per arrotondamen-
to. Siano x = 1.23456789 ed y = −1.23432111; allora si ha x+y = 2.4678·10−4 ;
siano f l(x) = 1.2346 · 100 ed f l(y) = −1.2343 · 100 . Dato che la precisione di
macchina è m = 0.5 10−4 , possiamo concludere che f l(x) e f l(y) hanno 4 cifre
significative. Calcoliamo adesso la somma in aritmetica di macchina; abbiamo
x ⊕ y = 0.0003 · 100 = 3.0000 · 10−4 . L’errore relativo che si commette è dato
da:
|(x + y) − (x ⊕ y)|
' 0.21565 . . .
|x + y|
Ovvero (x ⊕ y) ha solo 1 cifra significativa. Nel calcolo della somma abbiamo
quindi perso ben 3 cifre significative!!!