Sunteți pe pagina 1din 20

1

6. PROCESE I ERORI DE CALCUL


6.1. Procese de calcul
6.2. Erori n calculul numeric
6.2.1. Tipuri de erori
6.2.2. Reprezentarea numerelor reale n virgul mobil
6.2.3. Propagarea erorilor
2
6.1. Procese de calcul
Trstura principal a proceselor de prelucrare automat a informa-
iilor o reprezint natura algoritmic care presupune prelucrarea lor cu
ajutorul calculatoarelor electronice. Desfurarea unui astfel de proces
presupune parcurgerea urmtoarelor etape:
1) Formularea modelului matematic, prin care: se exprim matema-
tic relaiile i restriciile dintre parametrii problemei de rezolvat; se spe-
cific condiiile iniiale sau la limit; se precizeaz restriciile referitoare
la soluia problemei i la forma de prezentare a rezultatelor.
2) Alegerea metodei numerice, pentru care se iau n considerare mai
multe criterii: precizia impus, viteza de calcul, necesarul de memorie,
controlul erorilor, simplitatea formulelor de calcul, stabilitatea algoritmu-
lui de calcul, timpul de rspuns etc.
3) Descrierea algoritmului de calcul.
Algoritmul de calcul reprezint un sistem de reguli care indic
operaiile succesive de transformare a datelor iniiale ale problemei n
vederea gsirii rezultatelor finale.
3
Algoritmii se caracterizeaz prin generalitate, finitudine i unicitate.
Generalitatea este proprietatea unui algoritm de a oferi o strategie
general de rezolvare a unui anumit tip de problem, pentru date iniiale
arbitrare.
Finitudinea permite obinerea datelor finale (soluia) printr-un numr
finit de transformri intermediare aplicate datelor iniiale (de intrare),
sau altel spus, ntr-un numr finit de pai.
Unicitatea exprim faptul c toate transformrile intermediare pe care
le implic aplicarea algoritmului sunt unic determinate de regulile sale.
4) Implementarea (codificarea) algoritmului sub form de program
de calcul, care presupune ntocmirea unui program ntr-un limbaj de pro-
gramare.
O aceeai formulare matematic poate fi codificat practic ntr-o di-
versitate de moduri, legate de experiena i stilul de programare al pro-
gramatorului. De cele mai multe ori, ns, formularea matematic nu mai
poate fi reconstituit doar pe baza algoritmului sau a programului.
4
Formularea matematic adecvat a problemei reprezint un element
esenial pentru realizarea unui program de calcul eficient.
Elaborarea programului implic i testarea acestuia, care const n
verificarea din punct de vedere sintactic (compilarea) a programului sur-
s i rularea pe cteva exemple de probleme ale cror soluii pot fi uor
deduse.
5) Interpretarea rezultatelor, prin care se analizeaz rezultatele obi-
nute. Dac acestea nu corespund se impune revenirea la etapa a doua a
procesului i efectuarea modificrilor necesare.
6.2. Erori n calculul numeric
6.2.1. Tipuri de erori
Precizia calculelor numerice este un parametru important n alegerea
unei anumite metode de calcul. Un algoritm de calcul este eficient dac
precizia calculelor este bun.
Erorile care apar la rezolvarea numeric a problemelor sunt determi-
nate de trei categorii de erori.
5
1) Erorile inerente (iniiale)
Cauze:
erori n valorile datelor iniiale care provin din msurtori fizice,
experimente sau sunt soluii aproximative ale altor probleme;
formularea matematic inexact a procesului modelat;
acceptarea unor ipoteze simplificatoare, menite s reduc com-
plexitatea formulrii.
2) Erorile de metod
Cauza:
dificultatea sau chiar imposibilitatea de a rezolva formularea
exact a unei probleme, care implic nlocuirea problemei cu o
alta aproximativ, pentru care exist tehnici adecvate de rezolvare
cu rezultate foarte apropiate.
3) Erorile de calcul
Cauza:
aplicarea algorimului de calcul.
Ele sunt de dou tipuri: erori de rotunjire i erori de trunchiere.
6
a) Erorile de rotunjire au ca origine reprezentarea numerelor (date
iniiale sau rezultatele unor calcule) cu un numr finit de cifre exacte,
indiferent de modalitatea de memorare (n virgul fix, mobil, simpl
sau dubl precizie).
Exemple:
- Numerele iraionale nu au o reprezentare exact.
Numrului n calcule i pot corespunde 1,41; 1,41421; 1,41421356.
- Unele fracii nu au o reprezentare zecimal exact.
Fracia 1/3 se poate scrie: 0,3; 0,33; 0,333 etc.
- Anumite fracii au o reprezentare finit ntr-o baz de numeraie i
infinit n alta.
Fracia 1/10 are reprezentarea finit n sistemul zecimal (0,1), dar
infinit n sistemul binar (0,00011001100...).
- Numerele iraionale nu au o reprezentare finit n nici o baz de nu-
meraie.
b) Erorile de trunchiere provin din natura infinit a unor procese
utilizate n descrierea soluiilor unor probleme matematice.
2
7
Exemplu:
- Reinerea doar a unui numr finit de termeni din dezvoltarea n serie a
funciilor introduce o anumit eroare de trunchiere.
n principiu, metodele numerice permit controlul erorilor de calcul.
n cazul erorilor de rotunjire trebuie considerat acea form a unei
expresii matematice prin care s se evite operaiile care conduc la erori.
Erorile de trunchiere pot fi controlate prin intermediul a dou caracte-
ristici ale algoritmului de calcul aplicat - finitudine i eficien - ambele
fiind o reflectare a stilului de programare.
Fiecare dintre cele trei tipuri de erori care compun eroarea total pot fi
exprimate sub form de erori absolute i erori relative.
Fie valoarea adevrat x i x
*
o valoare aproximativ a lui x, rezultat
n urma unei msurtori sau a unui calcul numeric.
Diferena
= x x
*
poart denumirea de eroarea aproximaiei x
*
a lui x.
8
Dac x
*
< x, atunci x
*
aproximeaz pe x prin lips.
Dac x
*
> x, atunci x
*
aproximeaz pe x prin adaos (exces).
Valoarea absolut a erorii de aproximaie:

a
*
= x x
se numete eroare absolut.
Fie x
1
*
i x
2
*
dou aproximaii ale lui x. Dac erorile absolute cores-
punztoare
a,1
, respectiv,
a,2
, sunt n relaia
a,1
<
a,2
, atunci x
1
*
este o
aproximaie mai bun dect x
2
*
.
Raportul dintre eroarea absolut i valoarea aproximativ x
*
:


r
a
*
*

= =

x
x x
x
*
x
*
0
se numete eroare relativ.
,
n expresia erorii relative, la numitor se prefer x
*
i nu x ntruct, n
majoritatea cazurilor x nu este, de fapt, cunoscut.
9
3
Eroarea relativ se exprim, de obicei, n procente (%).
Ea caracterizeaz precizia mai bine dect eroarea absolut deoarece
nu depinde de valoarea mrimii unitii de msurare.
Pentru numere apropiate de unitate cele dou erori sunt aproximativ
egale.
Exemple:
Fie x = = 1,7320508
O valoare aproximativ prin adaos este = 1,74.
Eroarea absolut este
a,1
= 0,01.
Eroarea relativ este
r,1
= 0,0057 sau
r,1
= 0,57%.
O valoare aproximativ prin lips este = 1,73.
Eroarea absolut este
a,2
= 0,002.
Eroarea relativ este
r,2
= 0,0012 sau
r,2
= 0,12%.
x
1
*
x
2
*
10
6.2.2. Reprezentarea numerelor reale n virgul mobil
ntr-un proces de calcul calculatorul poate introduce erori de rotunjire
n funcie de categoriile de numere cu care se lucreaz: ntregi sau frac-
ionare.
Dac numerele cu care se opereaz sunt ntregi, forma lor de repre-
zentare intern, denumit n virgul fix, nu conduce la erori de rotunjire
n cazul operaiilor de adunare, scdere i nmulire, care au ca rezultate
tot numere ntregi. Operaia de mprire a dou numere ntregi poate
avea ca rezultat ns i numere fracionare.
Dac numerele cu care se opereaz sunt fracionare, forma lor de re-
prezentare intern este denumit n virgul mobil.
Un numr oarecare x scris n virgul mobil are forma:
x m b
e
=
n care:
m este o fracie i se numete mantis;
e - un numr ntreg i se numete exponent (caracteristic);
b - baza sistemului de numeraie.
11
Un numr reprezentat n virgul mobil este normalizat dac
b m

<
1
1
Exemple:
Fie sistemul zecimal (cu baza de numeraie b = 10).
Numrul x
1
= 14,63 are forma normalizat 0,1463 10
2
.
Numrul x
2
= -0,0045 are forma normalizat -0,45 10
-2
.
Operaiile aritmetice n virgul mobil
Operaiile de adunare i scdere implic urmtoarele aciuni:
- se aduc cele dou numere la un exponent comun, egal cu exponen-
tul cel mai mare (prin deplasarea la dreapta a mantisei numrului
cu caracteristica mai mic);
- se adun mantisele celor dou numere;
- se normalizeaz mantisa rezultat (dac este cazul).
Pentru mrirea preciziei de calcul este necesar a crete numrul
cifrelor semnificative cu care se lucreaz.
12
Exemplu:
Fie numerele x
1
= 2,417 = 0,2417 10
1
i x
2
= 0,001526 = 0,1526 10
-2
.
Se aliniaz exponenii, lucrnd cu patru cifre semnificative, operaia de
adunare revine la:
x
1
+ x
2
= 0,2417 10
1
+ 0,0001526 10
1
= 0,2418 10
1
Se constat pierderea ultimelor trei cifre semnificative ale mantisei nu-
mrului x
2
fr a se executa rotunjirea rezultatului.
Precizia operaiei de adunare crete dac numrul cifrelor mantisei
este mai mare. n tehnicile de programare aceasta se obine prin repre-
zentarea numerelor reale n virgul mobil dubl precizie.
Operaiile de nmulire i mprire n virgul mobil se efectueaz
mai simplu.
Operaia de nmulire a dou numere implic aciunile:
- se nmulesc mantisele numerelor;
- se normalizeaz rezultatul (dac este cazul);
- se adun exponenii numerelor.
13
Exemplu:
Fie numerele x
1
= 0,6231 10
2
i x
2
= 0,2453 10
2
.
Produsul lor este x
1
x
2
= 0,1528 10
4
.
Operaia de mprire a dou numere implic urmtoarele aciuni:
- se mpart mantisele numerelor;
- se normalizeaz rezultatul (dac este cazul);
- se scad exponenii numerelor.
Orice numr xR
+
poate fi reprezentat n baza zecimal sub forma:
x a a a
n
n
n
n
n k
n k
= + + +

+
10 10 10
1
1 1
+
+1
L L
n care a
i
{0, 1, 2,..., 9} sunt cifrele semnificative ale numrului x,
cu a
n
0; k = n, n -1,...
Numrul x se scrie
x a a a a a a
n n n k
=
+ 1 0 1 2 1
K K K ,
14
Primele k cifre semnificative din reprezentarea numrului x
*
sunt
exacte dac:

a
*
=
+
x x
n k
1
2
10
1
Exemplu:
Numrul x
*
= 24,00 este n raport cu numrul exact x = 23, 96 o
aproximaie cu trei cifre semnificative exacte.
ntr-adevr
Cum n = 1, avem 1- k +1 = -1, deci k = 3.
,
*
x x = <

0 04
1
2
10
1
Dac un numr pozitiv are k cifre exacte, atunci eroarea relativ
a acelui numr satisface inegalitatea:

r
( )


1
2
10
1
a
n
k
15
Numrul de cifre semnificative exacte corespunztor erorii relative
satisface condiia:
k a
n
1 2
10
log ( )
r

La obinerea unei soluii numerice a unei probleme, un algoritm este


stabil numeric dac nu exist o pierdere a cifrelor semnificative, n caz
contrar algoritmul fiind instabil numeric.
O problem care are proprietatea c o mic perturbaie n una (sau n
toate) datele ei conduce la mici perturbaii n soluia matematic este
bine condiionat.
Dac mici perturbaii n numai o parte din datele problemei conduc la
mari perturbaii n soluia matematic, problema este slab condiionat.
Un algoritm de calcul stabil este caracterizat de faptul c soluia obi-
nut cu ajutorul su este apropiat de soluia exact a problemei uor per-
turbate. Un algoritm de calcul stabil aplicat la soluionarea unei probleme
slab condiionate sau un algoritm instabil aplicat unei probleme bine con-
diionate conduc, n general, la rezultate cu o precizie sczut.
16
ATENIE:
Se impune evitarea aplicrii unui algoritm ce calcul instabil la soluio-
narea unei probleme slab condiionate !
6.2.3. Propagarea erorilor
n procesele de calcul erorile se propag de la o operaie la alta.
Fie valoarea real x, valoarea sa aproximativ x
*
, cu eroarea absolut

a 1
i eroarea relativ
r 1
.Fie valoarea real y, valoarea sa aproximativ
y
*
, cu eroarea absolut
a 2
i eroarea relativ
r 2
.
a) Adunarea
Eroarea absolut a operaiei este:

a a a
= +
, , 1 2
Eroarea relativ total a operaiei este:

r r r
=
+
+
+
+
,
*
* *
,
*
* *
1 2
x
x y
y
x y
n care reprezint eroarea relativ de rotunjire a sumei.
17
Dac numerele x
*
i y
*
au acelai semn, atunci fraciile sunt subunitare
i obinem:

r r r
+ +
, , 1 2
b) Scderea
Eroarea absolut a operaiei este:

a a a
=
, , 1 2
Eroarea relativ total a operaiei este:

r r r
=

+
,
*
* *
,
*
* *
1 2
x
x y
y
x y
n care reprezint eroarea relativ de rotunjire a diferenei.
Dac x*- y* este mic n raport cu x*, y*,
r 1
,
r 2
, atunci
r
este mare.
Din acest motiv se evit diferena x - y cnd cele dou valori sunt foarte
apropiate; dac este posibil se consider x - y = 0.
18
c) nmulirea
Calculul exact cu numere aproximative conduce la:
x y x y x y = + + +
* * *
,
*
, , ,

a a a a 2 1 1 2
Presupunem c erorile sunt mult mai mici dect valorile aproximative
i neglijm produsul erorilor
a 1

a 2
.
Eroarea absolut a operaiei rezult:

a a a
+ x y
*
,
*
, 2 1
Eroarea relativ total a operaiei rezult:

r r r
= + +
, , 1 2
n care reprezint eroarea relativ de rotunjire a produsului.
19
d) mprirea
Calculul exact cu numere aproximative conduce la:
( )
x
y
x
y
x
y
y
x
y y y
=
+
+
= +
+
|
\

|
.
|
=
+
+
|
\

|
.
|

(
(
*
,
*
,
*
,
* ,
*
*
,
*
,
*
,
*


a
a
a
a
a a a

1
2
1
2
1 2 2
2
1
1
1 L
Deoarece rezult c seria de mai sus este convergent
i prin neglijarea produselor de erori se obine:

r,2
*

y
< 1
x
y
x
y y
x
y
+
*
*
,
*
*
*
,

a
a
1
2
2
20
Eroarea absolut a operaiei rezult:

a a a
=
1
1
2
2
y
x
y
*
,
*
*
,
Eroarea relativ total a operaiei rezult:

r r r
= +
, , 1 2
n care reprezint eroarea relativ de rotunjire a ctului.
Odat cu creterea numrului operaiilor, erorile de rotunjire se
cumuleaz, ceea ce conduce la mrirea erorii care afecteaz rezultatul
procesului de calcul respectiv.