Sei sulla pagina 1di 34

Lezione 4 operazioni

aritmetiche con numeri

approssimati
Nelle lezioni precedenti
abbiamo discusso una delle

basi del calcolo numerico

il sistema floating point


di rappresentazione dei numeri

reali nel calcolatore


Il concetto cardine è quello
di di macchina il
precisione
massimo errore relativo di
arrotondamento di un numero

reale rappresentabile ovvero


non in overflow o underflow
con il reale macchina più
vicino

In questa lezione inizieremo


ad entrare nel cuore del
calcolo numerico trattando
innanzitutto le operazioni
aritmetiche nel sistema floating

point cioè
quale sia l'effetto
degli errori sui dati sul
risultato dell'operazione
L'analisi che
faremo sarà
però più generale e permetterà
di studiare la risposta agli
errori sui dati
operazioni delle
aritmetiche qualunque sia la
fonte di errore ad esempio
errori di misura sperimentale

Cominciamo col definire il


concetto di OPERAZIONE MACCHINA

Sia A un'operazione aritmetica


sui reali ovvero
addizione sottrazione
I moltiplicazione
divisione
Allora dato un insieme di

reali macchina b t L U
il modo in cui il processore
realizza l'operazione tra due

reali è
rappresentabili x
y

y fetifeta fely
ovvero il modello è il seguente

1 i due reali vengono arrotondati


2 viene l'operazione tra
fatta
gli arrotondati
3 il risultato viene a sua volta
arrotondato
E importante osservare da
subito che le operazioni macchina
nel sistema floating point
delle
perdono varie
proprietà
operazioni aritmetiche teoriche
Ad esempio mentre la proprietà
commutativa di addizione e
moltiplicazione resta valida
in generale non sono
più valide
le proprietà associativa e
distributiva

Facciamo esempio in cui non


un

vale la proprietà associative della


moltiplicazione per problemi di
overflow
Consideriamo 10,16 307,308
che come abbiamo visto corrisponde
sostanzialmente all'interfaccia
del Matlab
Siamo a no b là tò
in aritmetica reale
a b c a b c 1030
Ma con le limitazioni date
per gli esponenti
e b c overflow
perché a b 10350 e 3507308
300
Invece a b c letto lo
NO ASSOCIATIVA
quindi
a b C a b c a b e

Come vedremo più avanti la proprietà


associativa e anche la distributiva
possono saltare anche per effetto
degli errori di arrotondamento
D'altra parte c'è
un'altra
proprietà che non è
più valida
a causa dell arrotondamento
l unicità dell elemento neutro
dell'addizione
Per capirlo consideriamo di
nuovo un sistema floating point

virtuale 10 16 307 308


in realtà conta essenzialmente
qui
il numero di
cifre di mantissa
Si ha
16
1 Lo 1
16
cioè lo si comporta come 0
nell addizione con 1 mentre
15
101015 1 10
Perché
Basta riflettere che
sul fatto
le cifre di mantissa sono 16
ma 1
1 101 0 1 00 01 10
p
17 cifra
viene arrotondato ad 1 perché
la cifra trascurata
prima
è 1 b 12 5
Invece
1 101 0 100 01 101
4
16 cifra
e non c'è bisogno di alcun
arrotondamento
D'altra parte si vede anche
subito che sò tò tò io
cioè 10
16
non è el mentro
per lot
In questo contesto si può dare una
seconda caratterizzazione della
precisione di macchina che
non dimostriamo
1 1
E
µ min ME IF µ
Passiamo alla alla questione chiave
la risposta delle operazioni agli errori

subito
osservare
fin da

che l arrotondamento finale


del risultato ha un errore che
la precisione
non
può superare
di macchina Eµ bit 2 e

quindi ininfluente ai fini


è
dell'analisi dell'effetto degli
errori sui dati
Invece l'errore chiave da
stimare è l'errore relativo
Ex I XA
y fetaAflEy
y
141nF
purché x a 0 in funzione
y
errori relativi dati
degli sui

Ex lx fl.IN IxI

XF Ey
ly fetyilllyl Y O

Più in dati due


generale
numeri reali x 0 e due loro
y
approssimazioni E ex
I y
dove supponiamo di conoscere
o
meglio
di
saper stimare gli
cuori relativi E Ix E i la e

Eg Iy
I III 1
y andremo a stimare
l errore relativo sul risultato
dell operazione commesso
utilizzando i dati approssimati
invece dei dati esatti cioè

Ea y

in funzione di
tàEx E
ago

y
nel caso delle operazioni macchina
si ha I flix Iafet y
Ex Ey E EM

Diremo STABILE un'operazione


aritmetica per cui l'errore
sul risultato ha lo stesso ordine
di
grandezza dell'errore massimo

sui dati
Iniziamo con la MOLTIPLICAZIONE
indicheremo il prodotto con la
notazione standard XY sapendo
che nei di calcolo il
linguaggi
simbolo della molt è

Exy

X o
y

Usiamo la stessa tecnica di


stima che si usa per dimostrare
che il limite del prodotto di
è il
due successioni o
funzioni
prodotto dei limiti aggiungendo
e
togliendo a numeratore ad

esempio I y
E lxy
xy tyjfy
t .EE

É
E

dove abbiamo utilizzato la


DISUGUAGLIANZA TRIANGOLARE
che è uno strumento chiare per
fare stima
dati e b E IR

lel Ibi la bla la


E Ibi
sopra abbiamo usato
Quindi da otteniamo
ricordando che il modulo
del prodotto è il prodotto dei
moduli
tilt
È

Ex
III Ey
Ora siccome I possiamo
x

dire almeno qualitativamente


che 151 1 1 E 1 e
quindi
Ex
LI
E E
Ex Ey
Exy y
cioè che l'operazione di
è STABILE
moltiplicazione
l'errore relativo sul risultato
è maggiorata da una quantità
che è dell ordine dell'errore
sui dati

Per esprimere questo fattopossiamo


usare la notazione
E E Ex E y
Xy
dove E non è una disuguaglianza

esatta ma va intesa nel senso


indicato sopra
In realtà possiamo dare anche
osservando
una stima quantitativa
che la disuguagli triangolare
per

Et
ÉTÉ

1 Ex
e
quindi
E
xy Ex A Ex Ey
E

Nel caso della moltiplica macchina

in
precisione doppia Epperò
Ex è vicinissimo
e quindi 1
ad 1
Ma anche con Ex a lò ad es

un errore di misura del lo che


è un errore sperimentale grande
avremmo 1 Ex e 1 1 e quindi
la sostanza della stabilità non

cambia

Passiamo ora alla DIVISIONE


siccome la divisione x
y Y O

è la moltiplicazione per il

reciproco X
y 1 ci basta
y
analizzare la stabilità dell'opra
di reciproco

EnghjIIIIIIII
teca
ii
che
con l'ipotesi qualitativa
a 1
iy I e
III quindi
e

Ne deduciamo che anche la

DIVISIONE è un'operazione STABILE

perché il reciproco è stabile


e la moltiplicazione è stabile

stimando
però quantificare
meglio i y i 151

cioè che l errore relativo sia


minore di 1 il che vuol dire

100 che sarà vero in

tutte le situazioni ragionevoli


visto che tipicamente l'errore
sarà molto più piccolo di 1

allora 15 I I ytj gl.ly l1tGgllyl


Usando la stima da sotto nella

disuguaglianza trianglare
p la bla lel Ibl
a
Ittyl 11 I y Ily il 1
Egl
1 1
Ey perché Ey
da cui si ottiene
I 17 Iyi 1 Ey
e
quindi

ti
It
e 1
Ey perché Ej Eye 1
per la prima volta usiamo qui
il simbolo a molto minore

Alla fine otteniamo

Eny Eg E Ey la Egle Ey
Igt
cioè abbiamo quantificato in
modo la stima
più preciso
qualitativa Iyi III E 1

Riassumendo moltiplicazione
e divisione sono operazioni
stabili visto che

Exy E Ex Ey
E E Ex E1 E Ex E
Hy y y
Restano da analizzare addizione
e sottrazione
di
ma quando parliamo
addizione e quando di sottrazione
tenendo presente che i numeri
possono segno qualsiasi
avere

Quello che faremo è analizzare


la errori sui dati
risposta agli
della same Ebrea ay
Una tale somma non importa
risultato è
il segno del
effettivamente un addizione se

è invece
x e
y hanno la stessa
una
sezione se hanno segno opposto
Ex
IHYIYII.my
0
y
D'strano


Ittiti
il Yj
next way
dove
j Welty
we i

Abbiamo quindi maggiorato Exxy


con una sommapesata degli
errori sui dati con pesi
V1 E Wa

Si noti che questi pesi dipendono


da X e da
y
ma ma dipendono

dagli errori

In realtà anche con la molt


e la divisione siamo arrivati
in sostanza a una stima del tipo
EXA E Wi Ex Wa E
y y
dove v1 We I 1
Vedremo ora che questa è anche
la situazione con l addizione
mentre le cose possono cambiare
radicalmente con la sottrazione
gu Magny
IEEE
n
questo caso
lxtylelxl.ly l si

pensi per semplicità al caso x


y o

è chiaro che x
y e x
y g
Quindi
E 1

cioè
witty
Ex y
E Ex Ey
ovvero l addizione è STABILE
l'errore relativo sul risultato
è maggiorata da una
quantità
che è dell'ordine degli errori sui dati
SOTTRAZIONE gne Igniy
Fanny la lx l oppure
1x yI Iyi quindi max we we 1

questo ci dice che la sottrazione


può far perdere precisione rispetto
agli errori sui dati ma quante
In effetti può succedere che x le
ly i
siamo molto vicini in termini
relativi cioè che
lxtylklxl.ly
in queste situazioni we was 1
e la sottrazione diventa IN STABLE
Si noti che wa e wa possono
essere arbitrariamente grandi
dipende dai dati
E importante osservare che si
tratta di un
problema di

vicinanza relativa non assoluta


tra le due quantità che vengono
sottratte
Cioè i casi instabili non sono

quelli è piccolo
in cui
Ixtyl
ma
quelli in cui è piccolo rispetto
a 1x l ly 1
Ad es sono
analoghi
1 XI
IIII Ix y F1 è 6
We we to
IH I yield la y la 15
Detto a parole due numeri dell'ordine
delle unità che distano di

qualche milionesimo sono

altrettanto vicini in termini relativi


di due numeri dell'ordine del
milione che distano di qualche
unità
In entrambi i casi i
pesi we we
di amplificazione
sono
fattori
dell'errore dell'ordine di 106
Possiamo sintetizzare che la
SOTTRAZIONE è potenzialmente
non IN STABILE
sempre
infatti se la tei stanti
in termini relativi la sottrazione
perderà poca precisione
Se invece sono vicini perderà
molta precisione tanto più
quanto più sono vicini

Questo fenomeno che si chiama


anche cancellazione numerica

è il
primo e
importante
esempio di possibile instabilità
di in questo caso
un
algoritmo
la semplice operazione di
sottrazione tra numeri approssimati

E un fenomeno che studieranno


meglio con
degli esempi e che
2 modi
si
può fronteggiare in

1 cercando di riscrivere le
in
espressioni e
gli algoritmi
modo da evitare sottrazioni
instabili lo vedremo ad esempio
con la formula risolutiva per
le equazioni di 2 grado

2 aumentando la precisione
cioè diminuendo l errore sui
dati funzione
in della
di Wa E Wa
grandezza
In campo sperimentale questo
significa aumentare la precisione
dello strumento di misura
nel caso dell'arrotondamento
questo significa andare in un

sistema floating point a

precisione estesa se ad esempio


così da
Wa e Wa sono
grandi
mettere in crisi un sistema a

precisione doppia
Si tenga conto che come vedremo
Wa e wa possono essere arbitrariamente

grandi e
quindi far perdere
completamente di significato al
risultato quando Wa Wa 1 EM
Come
già osservato però usare
precisioni estese può avere un
costo computazionale molto
elevato in termini di tempo
di calcolo e di occupazione di
memoria

Nella prossima lezione


di
faremo vari
esempi
di precisione dovuta
perdita
ad una sottrazione e di

stabilizzazione quandopossibile
di calcolo
dell'algoritmo
evitando tale sottrazione

Per fissare le idee facciamo


subito esempio significativo
però un

consideriamo la funzione
fix A 1 X X O

è evidente che f x 1 è la

funzione costante 1
Però calcolando in Matlab
15
si ottiene
f lo

lò 1 11
f
cioè l'errore relativo al
risultato è 11 un errore

enorme rispetto all'arrotondamento


che non
supera Eµ 1016
Vedremo che la spiegazione
sta nella sottrazione a numeratore

visto che 1 cò è vicinissimo


ad 1
50
Invece
f 2
50
1
15
pur
essendo 2 10
Perché
Tratteremo entrambi i casi

nella prossima lezione

Potrebbero piacerti anche