Sunteți pe pagina 1din 8

CURS 1 - ELEMENTE DE TEORIA ERORILOR SI ARITMETICA

N VIRGUL

A FLOTANT

A.
1. Surse Si clasificarea erorilor
Estimarea preciziei rezultatelor obtinute reprezint a un aspect foarte important
al Analizei Numerice (AN). Se disting mai multe tipuri de erori, care pot limita
aceast a precizie:
- erori n datele de intrare;
- erori de rotunjire;
- erori de aproximare.
Erorile n datele de intrare sunt n afara controlului calculelor. Aceste erori
nu constituie obiectul AN. Ele se pot datora inexactit atii inerente a m asur atorilor
zice, introducerii eronate a datelor n calculator etc.
Erorile de rotunjire apar atunci cnd se opereaz a cu numere a c aror reprezentare
contine un num ar nit de cifre, asa cum se ntmpl a, de exemplu, la reprezentarea
numerelor n calculator.
Al treilea tip de erori, cele de aproximare, sunt datorate metodei numerice uti-
lizate. n general, este necesar un num ar mare de operatii pentru a ajunge la solutia
exact a, chiar innit uneori, iar calculele sunt oprite n functie de un anumit criteriu,
dup a un num ar nit de pasi, atunci cnd se ajunge la o precizie acceptabil a (deci
constientizat a).
2. Aritmetica n virgul

A mobil

A
2.1. Numere n virgul a mobil a. Calculatorul poate lucra cu dou a categorii de
numere: ntregi si fractionare. Reprezentarea intern a a acestor numere este n vir-
gula xa si n virgula mobila (otanta). Pentru cazul reprezent arii n virgul a x a nu
se pune problema aproxim arii, deoarece rezultatul adun arii, sc aderii sau nmultirii
numerelor ntregi este tot un num ar ntreg, care se reprezint a n calculator dac a
valoarea sa nu dep aseste posibilit atile de reprezentare a numerelor ntregi n calcu-
latorul respectiv. Astfel, dac a not am cu a baza de reprezentare, iar cu t precizia
masinii (num arul de cifre n baza a care se pot reprezenta pe un cuvnt sau multiplu
de cuvnt de memorie), numerele ntregi reprezentabile formeaz a multimea:
I := x Z [ a
t1
_ x _ a
t1
1:
Pentru a = 2 si t = 16 cifre binare, I = 2
15
; :::; 2
15
1: Dac a t = 32; domeniul
de reprezentare este I = 2
31
; :::; 2
31
1:
Problema erorilor de rotunjire se pune atunci cnd calculatorul opereaz a cu
numere fractionare, reprezentate n virgul a mobil a. Multimea F a numerelor cu
virgul a otant a este caracterizat a de patru parametri: baza b, precizia masinii t si
1
2
intervalul exponentilor [L; U]: Fiecare num ar x cu virgul a otant a, care apartine
lui F, are reprezentarea:
x =
_
c
1
b
+
c
2
b
2
+ ::: +
c
t
b
t
_
b
e
;
unde numerele naturale c
1
; :::; c
t
, numite cifre, satisfac 0 _ c
i
_ b 1; i = 1; 2; :::; t,
iar num arul ntreg e, numit exponent, satisface L _ e _ U: Num arul
f =
_
c
1
b
+
c
2
b
2
+ ::: +
c
t
b
t
_
se numeste partea frac tionara sau mantisa. Dac a pentru x F; x ,= 0; este ade-
v arat a relatia c
1
,= 0, sistemul de reprezentare n virgul a mobil a se numeste nor-
malizat. Se remarc a faptul c a multimea F nu este un continuu, ea ind chiar nit a,
avnd n cazul reprezent arii normalizate 2(b 1)b
t1
(U L+1) +1 elemente, care
nu sunt reprezentate uniform.
Exemplul 1. Daca F este normalizata, pentru b = 2; t = 3; L = 1; U = 2; F are
33 de elemente:
0; :100 2
e
; :101 2
e
; :110 2
e
; :111 2
e
; cu e 1; 0; 1; 2:
:
Figura 1 Elementele pozitive ale mul timii F
n gura de mai sus s-au reprezentat numerele pozitive ale mul timii F:
Mai remarc am faptul c a numerele nenule reprezentabile satisfac relatia:
m _ [x[ _ M; unde m = b
L1
se numeste cel mai mic num ar pozitiv reprezentabil,
iar M = b
U
_
1
1
b
t
_
- cel mai mare num ar pozitiv reprezentabil. n exemplul
nostru m =
1
4
; M =
7
2
:
De asemenea, se observ a faptul c a numerele multimii F sunt mai "dese" n
apropierea originii (puterile lui b scad) si mai "rare" spre extremitatea lui F (puterile
lui b cresc).
Exemplul 2. Pentru b = 2 si 32 de pozi tii binare pentru un numar real, reprezentarea
se realizeaza n simpla precizie, iar pentru 64 de pozi tii binare pentru un numar
real, reprezentarea se realizeaza n dubla precizie.
Dupa standardul IEEE (the "Institute of Electrical and Electronics Engineers"
Inc. USA), pentru b = 2 rezulta t = 24; L = 126 si U = 127 pentru reprezentarea
n simpla precizie si t = 53; L = 1022 si U = 1023 pentru reprezentarea n dubla
precizie. Rezulta, de asemenea, pentru reprezentarea n simpla precizie, m u 10
38
si M u 10
38
, iar pentru reprezentarea n dubla precizie, m u 10
308
si M u 10
308
:
2.2. Reprezentarea aproximativ a a numerelor. Scheme de rotunjire. Fie
x un num ar care nu dep aseste marginile multimii F; n calculator acest num ar este
reprezentat de num arul cu virgul a mobil a notat fl(x); n aceste conditii, spunem
c a x este reprezentat aproximativ (rotunjit).
3
Orice num ar x ce satisface relatia m _ [x[ _ M se poate scrie sub forma:
x = f b
e
+ g b
et
:
n cazul fractiilor normalizate, sunt ndeplinite relatiile:
1
b
_ [f[ < 1; 0 _ [g[ < 1:
Exist a mai multe tipuri de rotunjire, si anume:
(a) rotunjirea prin taiere (trunchiere):
fl(x) este cel mai apropiat element din F fat a de x, cu proprietatea [fl(x)[ _ [x[ :
n notatia de mai sus, fl(x) = f b
e
:
Exemplul 3. Daca b = 10; t = 4 si x = 12945:734; putem scrie:
x = 0:12945734 10
5
= 0:1294 10
5
+ 0:5734 10:
n acest caz, fl(x) = 0:1294 10
5
= 12940 ,= x:
(b) rotunjirea uniforma (metoda cifrei pare):
La rotunjirea uniform a, fl(x) are urm atoarea expresie:
fl(x) =
_

_
f b
e
; dac a [g[ < 0:
b
2
f b
e
b
et
; dac a [g[ > 0:
b
2
f b
e
b
et
; dac a [g[ = 0:
b
2
; ultima cifr a f - impar a
f b
e
; dac a [g[ = 0:
b
2
; ultima cifr a f - par a
:
n aceast a expresie, semnul "+" se consider a pentru f > 0 si semnul "-" se con-
sider a pentru f < 0: Aceast a modalitate de reprezentare e adoptat a si de standardul
IEEE.
Exemplul 4. Se considera b = 10; t = 4 si o rotunjire uniforma.
(i) x = 12944:9942 = 0:1294 10
5
+ 0:4994 10
54
:
Se observa ca [g[ < 0:5; deci fl(x) = 0:1294 10
5
= 12940 ,= x:
(ii) x = 129551 = 0:1295 10
6
+ 0:51 10
64
:
Se observa ca [g[ > 0:5; deci fl(x) = 0:1295 10
6
+ 10
64
= 129600 ,= x:
(iii) x = 1297:5 = 0:12975 10
4
= 0:1297 10
4
+ 0:5 10
44
:
Se observa ca [g[ = 0:5 si ultima cifra a lui f este impara, deci fl(x) = 0:1297
10
4
+ 10
44
= 1298 ,= x:
(iv) x = 1296:5 = 0:12965 10
4
= 0:1296 10
4
+ 0:5 10
44
:
Se observa ca [g[ = 0:5 si ultima cifra a lui f este para, deci fl(x) = 0:129610
4
=
1296 ,= x:
Avnd n vedere reprezentarea aproximativ a a numerelor, se pot deni urm a-
toarele dou a tipuri de erori:
(a) eroarea absoluta, notat a e
x
:
e
x
= [x fl(x)[ ;
(b) eroarea relativa, notat a "
x
:
"
x
=
e
x
[x[
u
e
x
[fl(x)[
=
[x fl(x)[
[fl(x)[
:
4
n expresia anterioar a, [x[ s-a aproximat prin [fl(x)[ deoarece, n general, val-
oarea x nu se cunoaste n sensul c a nu se reprezint a exact n calculator. Se demon-
streaz a faptul c a eroarea relativ a are valoarea cea mai mare atunci cnd f are
n modul valoarea cea mai mic a, iar g valoarea cea mai mare n modul, adic a
[f[ =
1
b
; [g[ = 1. Avem:
"
x
u
[x fl(x)[
[fl(x)[
=
[f b
e
+ g b
et
fl(x)[
[fl(x)[
_ k
1 b
et
_
1
b
_
b
e
= k b
1t
;
unde b
1t
este o m arime specic a masinii de calcul, ea caracteriznd precizia rela-
tiv a de reprezentare. Se observ a imediat c a la rotunjirea prin t aiere, k = 1:
2.3. Operatii elementare n virgul a mobil a. 1. Adunarea
Oricare ar dou a numere x si y, pentru care exist a fl(x) si fl(y), num arului
x + y i se asociaz a num arul fl(x + y); obtinut n felul urm ator:
(i) se reprezint a intern numerele x si y prin fl(x) si, respectiv, fl(y);
(ii) dac a numerele au exponent diferit, atunci num arul cu exponent mai mic se
aduce la o form a n care exponentul s a e egal cu cel al celuilalt termen, oper-
atie numit a denormalizare. Acest lucru se realizeaz a prin deplasarea mantisei spre
dreapta, insernd zerouri dup a virgul a;
(iii) se adun a mantisele si din rezultat se p astreaz a t cifre;
(iv) dac a este necesar, se normalizeaz a rezultatul.
Observatii:
1. Consecinta principal a a acestui mod de denire este aceea c a, spre deosebire
de aritmetica real a, adunarea nu este asociativ a.
2. Sc aderea se realizeaz a la fel ca adunarea, cu deosebirea c a mantisele se scad.
De fapt, sc aderea reprezint a o adunare n care sc az atorul are semn schimbat.
Exemplul 5. Se considera o aritmetica a virgulei mobile cu b = 10; t = 3; reprezentare
normalizata si rotunjire prin taiere. Fie calculul: 0:001 + 1 1: Asociind primii
doi termeni, se ajunge la rezultatul fl(fl(10
3
+ 1) 1) = 0; care este eronat. n
cazul asocierii ultimilor doi termeni se ob tine fl(10
3
+ fl(1 1)) = 10
3
; care
este rezultatul corect.
Exemplul 6. Se considera aritmetica a virgulei mobile cu b = 10; t = 3; reprezentare
normalizata si rotunjire prin taiere. Fie calculul: 1:001 1: Se ob tine: fl(1:001
1) = 0, rezultat eronat.
Exemplele 5 si 6 pun n evident a dou a fenomene nedorite si generatoare de erori,
care pot ap area la efectuarea unei adun ari n virgul a mobil a:
1. omiterea catastrofala: apare atunci cnd se adun a doi termeni si valoarea
absolut a a unui termen este mai mic a dect precizia de reprezentare a celuilalt
termen; n acest caz, rezultatul este dat de termenul cu valoare absolut a mai mare
(situatie ilustrat a n Exemplul 5).
2. neutralizarea termenilor: apare cnd se adun a numere de semne diferite si cu
valori absolute apropiate; n acest caz, n mod eronat, rezultatul este nul (situatie
ilustrat a n Exemplul 6).
Precizia calculelor numerice este caracterizat a de dou a m arimi constante a c aror
valoare este dependent a de tipul masinii de calcul folosite. Cele dou a valori mention-
ate sunt:
5
- epsilonul ma sina pentru adunare (notat "
+
m
) - reprezint a cel mai mic num ar real
reprezentabil care schimb a, prin adunare, unitatea masinii de calcul: fl(1+"
+
m
) > 1;
el are valoarea b
1t
;
- epsilonul ma sina pentru scadere (notat "

m
) - reprezint a cel mai mic num ar real
reprezentabil care schimb a, prin sc adere, unitatea masinii de calcul: fl(1"

m
) < 1;
el are valoarea b
t
:
Exemplul 7. Valorile celor doua constante de ma sina, n standardul IEEE, sunt
urmatoarele:
- pentru reprezentarea n simpla precizie:
"

m
= 5:96 10
8
; "
+
m
= 1:19 10
7
;
- pentru reprezentarea n dubla precizie:
"

m
= 1:11 10
16
; "
+
m
= 2:22 10
16
:
2. nmultirea
Oricare ar dou a numere x si y, pentru care exist a fl(x) si fl(y), num arului
x y i se asociaz a num arul fl(x y); obtinut n felul urm ator:
(i) se reprezint a intern numerele x si y prin fl(x) si, respectiv, fl(y);
(ii) se nmultesc fractiile si se adun a exponentii;
(iii) din fractia rezultat a se opresc t cifre;
(iv) dac a este necesar, se normalizeaz a rezultatul.
Observatii:
1. nmultirea nu este asociativ a.
2. mp artirea se realizeaz a n aceeasi manier a ca si nmultirea, cu deosebirea c a
la pasul (ii) mantisele se mpart, iar exponentii se scad.
Exemplul 8. Se considera o aritmetica a virgulei mobile cu b = 10; t = 3; reprezentare
normalizata si rotunjire prin taiere. Fie x = 22:547 si y = 0:43936:Urmarind
etapele descrise anterior, avem:
(i) fl(x) = 0:225 10
2
; fl(y) = 0:439 10
0
;
(ii) 0:225 0:439 = 0:098775; 10
2
10
0
= 10
2
;
(iii) 0:098775 10
2
0:098 10
2
;
(iv) fl(x y) = 0:098 10
2
= 9:8:
3. Propagarea erorilor n calculele numerice
Avnd n vedere cele prezentate mai sus, putem scrie relatiile:
x = fl(x) e
x
; y = fl(y) e
y
; "
x
=
e
x
[fl(x)[
; "
y
=
e
y
[fl(y)[
:
Se numeste calcul aproximativ un calcul efectuat ntr-o aritmetic a a virgulei
mobile. Vom accepta ca postulat urm atoarea armatie: eroarea relativa ntr-un
calcul cu numere aproximative este egala cu suma dintre eroarea relativa produsa
de calculul exact respectiv cu numere aproximative ( T
1
) si eroarea relativa produsa
de calculul aproximativ cu numerele exacte corespunzatoare ( T
2
).
Fie + una din operatiile descrise anterior. Postulatul de mai sus, descris de
relatia:
"
xy
= T
1
+ T
2
;
6
permite determinarea modalit atii de propagare a erorilor relative pentru operatiile
n virgul a mobil a, dup a cum urmeaz a.
Pentru calculul exact cu numere aproximative ( T
1
) avem:
e
x
,= 0; e
y
,= 0; fl(x + y) = fl(x) + fl(y);
T
1
= k
1
"
x
+ k
2
"
y
:
Constantele k
1
si k
2
pot avea valori diferite, dup a cum urmeaz a:
- pentru adunare:
k
1
=
[fl(x)[
fl(x) + fl(y)
; k
2
=
[fl(y)[
fl(x) + fl(y)
;
- pentru sc adere:
k
1
=
[fl(x)[
fl(x) fl(y)
; k
2
=
[fl(y)[
fl(x) fl(y)
;
- pentru nmultire:
k
1
= k
2
= 1;
- pentru mp artire:
k
1
= 1; k
2
= 1:
Pentru calculul aproximativ cu numere exacte ( T
2
) avem:
e
x
= 0; e
y
= 0; fl(x + y) ,= fl(x) + fl(y)
si atunci:
T
2
_ k b
1t
;
ca pentru orice num ar real care nu se reprezint a exact.
Exemplul 9. Se considera urmatorul polinom:
y(x) = x
7
7x
6
+ 21x
5
35x
4
+ 35x
3
21x
2
+ 7x 1;
pentru x [0:998; 1:012]; cu pasul de evaluare 0.0001. Figura de mai jos ilustreaza
cu linie punctata rezultatul calculelor n dubla precizie (standardul IEEE) utiliznd
formula de mai sus, iar cu linie continua sunt reprezentate cele corecte. Acestea
din urma sunt ob tinute evalund polinomul y(x) = (x 1)
7
:
7
Figura 2 Ilustrarea propagarii erorilor ntr-un calcul numeric
Analiznd Figura 2, se remarca faptul ca valorile calculate sunt de ordinul
10
14
, ceea ce eviden tieaza erori relativ mici ntre rezultatele celor doua maniere
de calcul. Aceste diferen te se explica prin fenomenele de neutralizarea termenilor
si omitere catastrofala.
Cele expuse pn a acum demonstreaz a faptul c a ntr-un calcul numeric erorile se
propag a de la o operatie la alta. Pe m asur a ce num arul operatiilor dintr-un calcul
creste, pot ap area situatii n care erorile se acumuleaz a excesiv de mult, fapt care
determin a obtinerea unei valori total incorecte a rezultatului nal. Ca urmare, la
ntocmirea unui algoritm de calcul si apoi la implementarea acestuia, utilizatorul
trebuie s a se asigure c a solutiile nu vor afectate de erori care s a dep aseasc a anumite
limite admisibile.
Ca urmare, se pot formula urm atoarele reguli generale pentru m arirea preciziei
calculelor:
1. cnd se adun a sau se scad numere, este recomandabil s a se nceap a cu cele
mai mici n valoare absolut a, separat pentru cele pozitive si separat pentru cele
negative;
2. dac a este posibil, este recomandabil s a se evite sc aderea a dou a numere
aproximativ egale; o expresie care contine o astfel de sc adere poate rescris a;
3. o expresie de forma (a b) c poate rescris a sub forma a c a c; iar o
expresie de forma
a b
c
poate rescris a sub forma
a
c

b
c
; dac a numerele a si b
sunt aproximativ egale, este recomandabil s a se efectueze mai nti sc aderea si apoi
nmultirea si mp artirea.
4. dac a regulile generale enuntate mai sus nu se pot aplica, se va urm ari mini-
mizarea num arului de operatii aritmetice implicate.
8
Exemplul 10. Se considera urmatoarele rela tii de calcul:
h =
1
2
; x =
2
3
h; y =
3
5
h; e = x + x + x h;
f = y + y + y + y + y h; q =
f
e
:
Efectund calculele manual, se ob tin rezultatele:
h =
1
2
; x =
1
6
; y =
1
10
; e = 0; f = 0; q =?
Implementnd aceste rela tii de calcul ntr-un program scris n MATLAB ob tinem
rezultatele:
e ,= 0; f ,= 0; q = valoare nita.
Explica tia acestor rezultate consta n urmatoarele:
- numarul
2
3
= 0:(6) are un numar innit de cifre n baza de numera tie zece si
deci nu va reprezentat exact;
-
3
5
= 0:6 are un numar innit de cifre n baza de numera tie doi si deci nici
acesta nu va reprezentat exact: 0:6
[10]
= 0:(1001)
[2]
:
Aceste erori se vor propaga n calculul valorilor e si f rezultnd valori de ordinul
epsilonului ma sina.