Sunteți pe pagina 1din 7

Capitolul 1 CALCULUL N VIRGUL MOBIL

Uzual este reprezentarea normalizat n baza de numeraie doi, alocndu-se o poziie binar pentru semn, un numr de poziii binare pentru exponent i t cifre binare pentru mantis. Deoarece tipul de semn al numrului este memorat, pentru fracie se realizeaz o reprezentare a ntregului d 1d 2 d t t (valoarea

absolut a mantisei). De asemenea, pentru a nu se memora semnul i pentru exponent, se reprezint un numr ntreg pozitiv: C = e + E 0 , mrimea E numindu-se deplasament, iar mrimea C numindu-se caracteristic. Cum reprezentarea este normalizat, prima cifr a fraciei este d 1 = 1 i nu se mai reprezint. Astfel, se ctig nc o poziie binar pentru fracie. Se spune c se realizeaz o reprezentare normalizat cu poziie binar ascuns (n limba englez, hidden bit).
Exemplul 1.3:

Pentru = 2 i 32 de poziii binare pentru un numr real, reprezentarea se realizeaz n simpl precizie, iar pentru 64 de poziii binare pentru un numr real, reprezentarea se realizeaz n dubl precizie. Dup standardul IEEE (abreviere din limba englez, the Institute of Electrical and Electronics Engineers Inc. USA), pentru = 2 rezult t = 24 , L = 126 i U = 127 pentru reprezentarea n simpl precizie i t = 53 , L = 1022 , U = 1023 pentru reprezentarea n dubl precizie. Rezult, de asemenea, pentru reprezentarea n simpl precizie: m 10 38 i M 10 +38 , iar pentru reprezentarea n dubl precizie: m 10 308 i M 10 +308 .
1.1.1 Reprezentarea aproximativ a numerelor. Scheme de rotunjire

Oricare ar fi un numr x G , x 0 , acesta poate fi scris sub forma: x = f e + g et . Se vor considera fraciile normalizate, deci sunt ndeplinite relaiile: 1 / | f |< 1, 0 | g |< 1 . (1.1)

1.

Calculul n virgul mobil

Nu toate numerele din mulimea G se pot reprezenta exact, datorit faptului c numai t cifre n baza pot fi reinute pentru fracie. n aceste condiii, se spune c numrul este reprezentat aproximativ (rotunjit). Se definete operatorul de rotunjire fl: fl : G F . Exist mai multe modaliti de definire a acestuia i anume: (a)
rotunjirea prin tiere (trunchiere): fl(x) este cel mai apropiat element c F , de x G , cu proprietatea | c || x | .

Aceast modalitate de rotunjire este ilustrat n Figura 1.2. Astfel, oricare ar fi numrul x [c 2 , c 3 ) , acesta va fi reprezentat prin elementul c 2 . Expresia aproximantului pentru numrul real x este: fl( x ) = f e .

x c1 c2 c3 F

Fig. 1.2 Principiul rotunjirii prin tiere (trunchiere): fl( x ) = c 2 , x [c 2 , c 3 ) Exemplul 1.4:

Se consider un sistem de numere n virgul mobil cu = 10 , t = 4 . Fie numrul x = 12945,734 . Numrul x se poate scrie sub forma (1.1):

x = 0,12945734 10 5 = 0,1294 10 5 + 0,5734 10 5 4 , unde f = 0,1294; e = 5; g = 0,5734 . Rezult, aadar, valoarea reinut pentru
reprezentare i rotunjit prin tiere: fl( x ) = 0,1294 10 5 . Aceasta corespunde numrului 12940 x . (b)
rotunjirea simetric: fl(x) este cel mai apropiat element c F , de x G (a se vedea Figura 1.3).

Analiznd Figura 1.3, rezult c oricare ar fi numerele x i y din intervalul definit de elementele aflate la mijlocul intervalelor (c1 , c 2 ) i, respectiv, (c 2 , c 3 ) , acestea vor fi reprezentate prin elementul c 2 al mulimii F, expresia pentru fl(x) fiind n acest caz:
f e , | g |< 0, 2. fl( x ) = f e e t , | g | 0, 2

1.2

Propagarea erorilor n calculele numerice

n ultima expresie, semnul + se consider pentru f > 0 i semnul - se consider pentru f < 0 .
x c1 c2 y c3 F

Fig. 1.3 Principiul rotunjirii simetrice: fl( x ) = c 2 , fl( y) = c 2 ; x ((c1 + c 2 ) / 2, c 2 ), y (c 2 , (c 2 + c 3 ) / 2)

Neajunsul acestei maniere de reprezentare const n faptul c dac numrul x este situat la jumtatea distanei dintre dou numere consecutive din mulimea F, atunci fl(x) poate lua oricare din cele dou valori nvecinate. (c) rotunjirea uniform (metoda cifrei pare) n acest caz, fl(x) are urmtoarea expresie: f f fl( x ) = f f e , e e t , e e t , e , 2 | g |> 0, 2 . | g |= 0, , ultima cifra f impara 2 | g |= 0, , ultima cifra f para 2 | g |< 0,

n aceast expresie de definiie, semnul + se consider pentru f > 0 i semnul - se consider pentru f < 0 . Aceast modalitate de reprezentare este adoptat i de standardul IEEE.
Exemplul 1.5:

Se consider = 10 , t = 4 i o rotunjire uniform. (a)

x = 12944,9942 = 0,1294 10 5 + 0,4994 10 5 4 . Se observ c |g| este mai mic dect 0.5, deci: fl( x ) = 0,1294 10 5 (= 12940 x ) . x = 129551 = 0,1295 10 6 + 0,51 10 64 . Se observ c |g| este mai mare dect 0.5, deci: fl( x ) = 0,1295 10 6 + 10 6 4 (= 129600 x ) . x = 1297,5 = 0,1297 10 4 + 0,5 10 4 4 .

(b)

(c)

1.

Calculul n virgul mobil

Se observ c |g| este egal cu 0.5 i ultima cifr a lui f este impar, deci: fl( x ) = 0,1297 10 4 + 10 4 4 (= 1298 x ) . (d)

x = 1296,5 = 0,1296 10 4 + 0,5 10 4 4 . Se observ c |g| este egal cu 0.5 i ultima cifr a lui f este par, deci: fl( x ) = 0,1296 10 4 (= 1296 x ) .

1.1.2 Operaii elementare n virgul mobil

Se definesc operaiile elementare care au loc cu elementele unei mulimi F de numere n virgul mobil. Aceste modaliti de definire sunt implementate uzual n calculatoarele numerice.
A. Adunarea

Oricare ar fi dou numere x i y din mulimea G, pentru care exist fl(x) i fl(y) aparinnd mulimii F, numrului x + y i se asociaz numrul fl( x + y ) obinut prin aplicarea urmtorului algoritm: Pas 1: se reprezint intern numerele x i y prin fl(x) i, respectiv, fl(y). Pas 2: dac numerele au exponent diferit, atunci numrul cu exponent mai mic se aduce la o form n care exponentul s fie egal cu cel al celuilalt termen, operaiune care se numete denormalizare. Acest lucru se realizeaz prin deplasarea mantisei spre dreapta, insernd zerouri dup virgul.Astfel, se deplaseaz mantisa attea poziii cte sunt necesare pentru a crete exponentul la valoarea exponentului celuilalt termen. Pas 3: se adun mantisele i din rezultat se pstreaz t cifre. Pas 4: dac este necesar, se normalizeaz rezultatul. Observaii: 1. Deplasarea mantisei spre dreapta determin creterea exponentului, iar deplasarea spre stnga a mantisei determin scderea exponentului. 2. Scderea se realizeaz la fel ca adunarea, cu deosebirea c mantisele se scad. n fapt, scderea reprezint o adunare n care scztorul are semn schimbat.
Consecina esenial a acestui mod de definire este aceea c, spre deosebire de aritmetica real, adunarea n virgul mobil nu este asociativ. Exemplul 1.6:

Se consider o aritmetic a virgulei mobile cu = 10 , t = 3 , reprezentare normalizat i rotunjire prin tiere. Fie calculul: 0,001 + 1 1 . Asociind primii

1.2

Propagarea erorilor n calculele numerice

doi termeni, se ajunge la rezultatul fl(fl(10 3 + 1) 1) = 0 , care este eronat. n cazul asocierii ultimilor doi termeni se obine: fl(10 3 + fl(1 1)) = 10 3 , care este rezultatul corect.
Exemplul 1.7:

Se consider o aritmetic a virgulei mobile cu = 10 , t = 3 , reprezentare normalizat i rotunjire prin tiere. Fie calculul: 1,001 1 . Se obine: fl(1,001 1) = 0 , rezultat eronat.
Exemplele 1.6 i 1.7 pun n eviden dou fenomene nedorite i generatoare de erori, care pot apare la efectuarea unei adunri n virgul mobil:

(a)

omiterea catastrofal: apare atunci cnd se adun doi termeni i valoarea absolut a unui termen este mai mic dect precizia de reprezentare a celuilalt termen; n acest caz, rezultatul este dat de termenul cu valoare absolut mai mare (aceast situaie este ilustrat n Exemplul 1.6). neutralizarea termenilor: apare atunci cnd se adun numere cu semne diferite i cu valori absolute apropiate; n acest caz, n mod eronat, rezultatul este nul (aceast situaie este ilustrat n Exemplul 1.7).

(b)

Precizia calculelor numerice este caracterizat de dou mrimi constante a cror valoare este dependent de tipul mainii de calcul folosite. Cele dou valori menionate, numite i constante de main, sunt introduse prin urmtoarea definiie. Definiie: Epsilonul main pentru adunare (notat + m ) reprezint cel mai mic numr real pozitiv reprezentabil care schimb, prin adunare, unitatea mainii de calcul: fl(1 + + m ) >1. Epsilonul main pentru scdere (notat m ) reprezint cel mai mic numr real pozitiv reprezentabil care schimb, prin scdere, unitatea mainii de calcul: fl(1 m ) < 1.

n Figura 1.4 sunt ilustrate cele dou definiii. Conform Figurii 1.4, sunt ndeplinite relaiile: adunare: fl(1 + + m ) > 1, fl(1 + c) = 1 ;

scdere: fl(1 + m ) < 1, fl(1 c) = 1 .

1.

Calculul n virgul mobil

c F

m-

m+

Fig. 1.4 Conceptul de epsilon main


1 t t Astfel, rezult c cele dou mrimi au valorile: + , m = m = . Se demonstreaz c, pentru o aritmetic a virgulei mobile cu = 2 , este ndeplinit relaia: + m = 2 m .

Exemplul 1.8:

Valorile celor dou constante de main, n standardul IEEE, sunt urmtoarele: pentru reprezentarea n simpl precizie:
+ m = 5.96 10 8 ; m = 1.19 10 7 ;

pentru reprezentarea n dubl precizie:


+ m = 1.11 10 16 ; m = 2.22 10 16 .

Urmtorul algoritm, descris n limbaj pseudocod (a se vedea Anexa B), descrie modul de calcul al epsilonului main pentru adunare, rezultatul final gasindu-se n variabila eps_p: atribuie eps_p 1 ct timp ( 1 + eps _ p > 1 ) execut
atribuie eps_p 0.5*eps_p atribuie eps_p 2*eps_p. B. nmulirea

Oricare ar fi x i y, dou numere din mulimea G, pentru care exist fl(x) i, respectiv, fl(y) aparinnd multimii F, numrului x y i se asociaz numrul fl( x y) , care se determin cu algoritmul urmtor: Pas 1: se reprezint intern numerele x i y prin fl(x) i, respectiv, fl(y). Pas 2: se nmulesc fraciile i se adun exponenii. Pas 3: din fracia rezultat se opresc t cifre. Pas 4: dac este necesar, se normalizeaz rezultatul. Observaii: 1. nmulirea nu este asociativ.

1.2

Propagarea erorilor n calculele numerice

2. mprirea se realizeaz n aceeai manier ca i nmulirea, cu deosebirea


c la pasul 2 mantisele se mpart, iar exponenii se scad.
Exemplul 1.9:

Se consider o aritmetic a virgulei mobile cu = 10 , t = 3 , reprezentare normalizat i rotunjire prin tiere. Fie x = 22,547 i y = 0,43936 . Rezult fl( x y) = 9,900 .

1.2

Propagarea erorilor n calculele numerice

n general, n cursul rezolvrii unei probleme cu ajutorul calculatorului numeric, precizia calculelor este influenat de mai muli factori. Astfel, eroarea total dintr-un calcul numeric este generat de trei surse principale de erori: (a) (b) (c) erori inerente; erori de metod (de calcul); erori de reprezentare.

Erorile inerente provin din datele iniiale ale problemei de rezolvat (date care pot fi rezultatele unor msurtori experimentale sau ale altor calcule anterioare) i/sau erorile provenite din faptul c se lucreaz cu un model aproximativ al fenomenului real implicat n problema de rezolvat. Erorile de metod (sau de trunchiere) sunt datorate metodei numerice utilizate. n general, este necesar un numr mare de operaii pentru a putea ajunge la soluia exact (de regul, atunci cnd o expresie de calcul conine o infinitate de termeni) i calculele sunt oprite, n funcie de un anumit criteriu, atunci cnd se ajunge la o anumit precizie acceptabil (aadar contientizat). Erorile de reprezentare sunt datorate posibilitii efective de a reprezenta numerele n calculatorul numeric. Acest tip de erori se manifest n datele iniiale, intermediare i n cele de ieire care constituie rezultatele finale.

S-ar putea să vă placă și