Lucrarea de laborator nr. 2

Σχετικά έγγραφα
III.2.2. Reprezentarea în virgulă mobilă

III. Reprezentarea informaţiei în sistemele de calcul

Curs 4 Serii de numere reale

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

Metode iterative pentru probleme neliniare - contractii

MARCAREA REZISTOARELOR

Curs 1 Şiruri de numere reale

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Subiecte Clasa a VIII-a

Asupra unei inegalităţi date la barajul OBMJ 2006

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Sisteme de numeraţie

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

Sisteme diferenţiale liniare de ordinul 1

Metode de interpolare bazate pe diferenţe divizate

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

Subiecte Clasa a V-a

1. Reprezentarea numerelor şi operaţii aritmetice în sisteme de calcul.

Curs 2 Şiruri de numere reale

Subiecte Clasa a VII-a

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

Integrala nedefinită (primitive)

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b.

1.3. Erori în calculele numerice

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

Noţiuni introductive

Criptosisteme cu cheie publică III

Conf.dr.ing. Gabriela Ciuprina

a. 11 % b. 12 % c. 13 % d. 14 %

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Esalonul Redus pe Linii (ERL). Subspatii.

Laborator 11. Mulţimi Julia. Temă

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

riptografie şi Securitate

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

I. Noţiuni introductive

Seminar 5 Analiza stabilității sistemelor liniare

Progresii aritmetice si geometrice. Progresia aritmetica.

2. Circuite logice 2.5. Sumatoare şi multiplicatoare. Copyright Paul GASNER

6 n=1. cos 2n. 6 n=1. n=1. este CONV (fiind seria armonică pentru α = 6 > 1), rezultă

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Să se arate că n este număr par. Dan Nedeianu

SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Principiul Inductiei Matematice.

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

MULTIMEA NUMERELOR REALE

prin egalizarea histogramei

Functii Breviar teoretic 8 ianuarie ianuarie 2011

Conice - Câteva proprietǎţi elementare

Al cincilea baraj de selecţie pentru OBMJ Bucureşti, 28 mai 2015

1. BAZE ŞI SISTEME DE NUMERAŢIE REPREZENTAREA DATELOR ÎN CALCULATOR ELEMENTE DE TEORIA CODURILOR... 36

Examen AG. Student:... Grupa: ianuarie 2016

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

Matrice. Determinanti. Sisteme liniare

Examen AG. Student:... Grupa:... ianuarie 2011

5.4. MULTIPLEXOARE A 0 A 1 A 2

1.3 Baza a unui spaţiu vectorial. Dimensiune

CURS 11. Rădăcină unei ecuatii: Cum se defineste o rădăcină aproximativă?

Spatii liniare. Exemple Subspaţiu liniar Acoperire (înfăşurătoare) liniară. Mulţime infinită liniar independentă

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15


* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

GEOMETRIE PLANĂ TEOREME IMPORTANTE ARII. bh lh 2. abc. abc. formula înălţimii

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

Erorile sunt omniprezente. Februarie 2010

3. Momentul forţei în raport cu un punct...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...4

CONCURSUL INTERJUDEȚEAN DE MATEMATICĂ TRAIAN LALESCU, 1998 Clasa a V-a

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

1 Serii numerice Definiţii. Exemple... 45

Subiecte Clasa a VIII-a

Principiul incluziunii si excluziunii. Generarea şi ordonarea permutărilor. Principiul porumbeilor. Pri

Problema a II - a (10 puncte) Diferite circuite electrice

CURS: METODE EXPERIMENTALE ÎN FCS

Vectori liberi Produs scalar Produs vectorial Produsul mixt. 1 Vectori liberi. 2 Produs scalar. 3 Produs vectorial. 4 Produsul mixt.

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

Profesor Blaga Mirela-Gabriela DREAPTA

Probleme pentru clasa a XI-a

Ecuatii trigonometrice

Toate subiectele sunt obligatorii. Timpul de lucru efectiv este de 3 ore. Se acordă din oficiu 10 puncte. SUBIECTUL I.

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

VII.2. PROBLEME REZOLVATE

Capitolul 3. Serii Fourier. a unei funcţii periodice de perioadă Dezvoltarea în serie Fourier

Statisticǎ - curs 3. 1 Seria de distribuţie a statisticilor de eşantioane 2. 2 Teorema limitǎ centralǎ 5. 3 O aplicaţie a teoremei limitǎ centralǎ 7

Transcript:

Metode Numerice Lucrarea de laborator nr. I. Scopul lucrării Reprezentarea numerelor reale în calculator. Erori de rotunjire. II. III. Conţinutul lucrării. Reprezentarea numerelor reale sub formă normalizată.. Reprezentarea numerelor reale în virgulă mobilă. 3. Erori care apar ca urmare a limitelor de reprezentare. Prezentarea lucrării III.. Reprezentarea numerelor reale sub formă normalizată. Forma normalizată a un număr real nenul x este o presupune următoarea reprezentare x = m b er, unde b = baza m = mantisa er = exponentul cu 0, b m b < b (ceea ce înseamnă că mantisa este un număr subunitar cu prima cifră după virgulă diferită de zero). Pentru a scrie numărul sub formă normalizată trebuie găsite deci mantisa şi exponentul. Mantisa se obţine deplasând virgula în faţa primei cifre nenule ce apare în scrierea numărului (în baza b). Exponentul se ia egal cu numărul de poziţii cu care s-a deplasat virgula precedat de semnul + dacă deplasarea s-a făcut de la dreapta la stânga, şi de semnul dacă deplasarea s-a făcut de la stânga la dreapta. Astfel dacă x este reprezentat în baza b sub forma x b = ±a n a n- a a 0,a - a - a -m, cu a n 0, atunci forma normalizată este x b = ±0,a n a n- a a 0 a - a - a -m b n+ dacă x este reprezentat în baza b sub forma x b = ±0,a - a - a -m, cu a - 0, atunci forma normalizată este 7

Mădălina Roxana Buneci x b = ±0,a - a - a -m. b 0 dacă x este reprezentat în baza b sub forma x b = ±0,a - a -i a -i- a -m,... cu a - = = a -i = 0 şi a -i- 0, atunci forma normalizată este x b = ±0,a -i- a -i- a -m. b -i III.. Reprezentarea numerelor reale în virgulă mobilă. Una dintre cele mai răspândite reprezentări internă (în PC-uri) a numerelor reale este reprezentarea în virgulă mobilă. Reprezentarea în virgulă mobilă presupune existenţa unei baze b (întotdeauna presupusă pară) şi a unei precizii p. Un număr în virgulă mobilă este un număr de forma ( 0 + + p + + )b E, 0 p k < b, pentru orice k = 0,p, E Z. b b b Mai precis, denumirea de număr în virgulă mobilă va fi utilizată pentru numerele reale care se reprezintă exact sub forma de mai sus. În această reprezentare 0,,, p- se numesc cifre semnificative. Fiecărei reprezentări în virgulă mobilă i se asociază două numere întregi, E min şi E max, ce reprezintă valorile limită permise pentru exponentul E (E min E E max ). Reprezentarea în virgulă mobilă se numeşte normalizată dacă se impune condiţia ca cifra cea mai semnificativă 0 să fie nenulă. Reprezentarea normalizată are următoarele avantaje: reprezentarea fiecărui număr este unică nu de pierd cifre pentru reprezentarea primele zerourilor de la dreapta virgulei în sistemele binare (corespunzătoare bazei b =) prima cifră poate să nu mai fie stocată (deoarece este întotdeauna ). Restricţia 0 0, face imposibilă reprezentarea lui zero. O reprezentare naturală a lui zero este,0 b E min. Numărul de numere în virgulă mobilă normalizată este (b-)b p- (E max - E min +) +. Cel mai mic număr pozitiv normalizat se notează UFL (underflow level) şi este E min UFL = b. Cel mai mare număr normalizat se notează OFL (overflow level) şi este b b b OFL = (b- + + + + ) E b max p b b b 8

Metode Numerice E max + = b ( - p ). b Ca urmare nu toate numerele reale sunt reprezentabile exact. Numerele prea mari pentru a fi reprezentate corespund unei depăşiri superioare de capacitate (overflow), iar numerele prea mici unei depăşiri inferioare de capacitate (underflow). Pentru a fi reprezentat un număr real x este aproximat cu un număr în virgulă mobilă pe care convenim să-l notăm fl(x). Aproximarea lui x prin fl(x) poartă numele de rotunjire, iar eroarea introdusă de eroare de rotunjire. Există mai multe modalităţi pentru rotunjire: trunchiere (rotunjire prin tăiere): se reţin primele p cifre din reprezentarea normalizată a lui x = ( 0 + + p + + + )b E ; deci p b b fl(x) = ( 0 + + p b b + + )b E. p b rotunjire la cel mai apropiat număr în virgulă mobilă (rotunjire la par): fl(x) este cel mai apropiat număr în virgulă mobilă de x; în caz de egalitate (dacă există două numere în virgulă mobilă egal depărtate de x) se consideră acel număr în virgulă mobilă a cărui ultimă cifră este pară. Rotunjirea la par determină o acurateţe mai mare a reprezentării. Acurateţea sistemului în virgulă mobilă este caracterizată de aşa numita precizie a maşinii (sau epsilon maşină), notată ε mach. Precizia a maşinii este definită ca cel mai mic număr pozitiv ε cu proprietatea că fl(.+ ε) >. Dacă regula de rotunjire este trunchierea atunci ε mach = b - p, iar dacă regula de rotunjire este rotunjirea la par atunci b ε mach = b - p. Eroarea relativă maximă cu care fl(x) aproximează x este dată de fl( x) x ε mach. x Deşi amândouă sunt "mici", precizia maşinii (ε mach ) şi cel mai mic număr pozitiv normalizat UFL (în reprezentare în virgulă mobilă fixată) nu trebuie confundate. De obicei E min < -p şi deci între ele există relaţia 0 < UFL < ε mach < OFL. 9

Mădălina Roxana Buneci Fie x un număr real aproximat de fl(x) = ( 0 + + p b b + + )b E. p b Exponentul E poate lua atât valori pozitive cât şi valori negative. Cel mai adesea exponentul este decalat şi reprezentat ca un număr întreg pozitiv (fără semn). Aceasta deoarece ordinea lexicografică (stabilită între şirurile de cifre din reprezentare) şi ordinea naturală sunt compatibile în cazul numerelor întregi fără semn. În consecinţă compararea exponenţilor (şi a numerelor reale corespunzătoare) poate fi făcută eficient. Astfel reprezentarea internă a unui număr real x aproximat prin fl(x) = ( 0 + + p b b + + )b E se face p b sub forma 0 s ed 0 p- unde s este semnul lui x (se completează cu 0 dacă semnul este + şi cu dacă semnul este -). iar ed este exponentul obţinut prin adunarea unui decalaj D la exponentul E: ed = E + D. Standardul IEEE-754 IEEE este acronim pentru Institute of Electrical and Electronics Engineers, o organizaţie ce are drept principal scop elaborarea standardelor pentru produsele hardware şi software. Standardul IEEE-754 se referă la aritmetica în virgulă mobilă în sistemele binare. Acest standard precizează formatul de reprezentare în memorie în simplă şi dublă precizie a unui număr real. Reprezentarea se face în virgulă mobilă normalizată: x fl(x) = ( + + p + + ) E, p = 4, 53. p Sunt admise şi aşa numitele numere denormalizate ("denormalized floatingpoint numbers"): (0 + + p + + ) E, p = 4, 53, p cu cel puţin una dintre cifrele binare,,, p- nenule. Standardul IEEE-754 defineşte două valori speciale pentru situaţii excepţionale: Inf, pe post de "infinit" ("infinity"), pentru rezultatul împărţirii unui număr finit la zero.

Metode Numerice NaN, pe post de "non-număr" ("not a number"), pentru rezultatul următoarelor operaţii Adunare : Inf + (-Inf) Înmulţire: 0 Inf Împărţire: 0/0 sau Inf/Inf Calculul restul împărţirii unui număr x la 0 sau a lui Inf la x Calculul rădăcinii pătrate x pentru x < 0. Scopul acestor valori este acela de a permite continuarea calculului. Un număr în virgulă mobilă ( 0 + + p + + p ) E se reprezintă intern conform IEEE-754 sub forma s ed p- unde pentru s se rezervă un bit ce se completează cu 0 dacă numărul este pozitiv şi cu dacă numărul este negativ, iar pentru exponentul decalat ed se rezervă k biţi (k=8, ). Decalajul considerat este D = k- -, deci ed = E + k- -, Pe k biţi se pot reprezenta ca numere întregi fără semn k valori, de la 0 la k. Valorile 0 şi k sunt rezervate pentru numerele denormalizate şi pentru valorile speciale Inf şi Nan. Deci pentru un număr în virgulă mobilă normalizată trebuie îndeplinită condiţia ed k -. De aici rezultă că - k- + E k- -. De exemplu, pe k = 8 biţi se pot reprezenta numere întregi fără semn de la 0 la 55. Decalajul considerat este 7 - = 7, deci exponentul E ia valori de la 6 la 7. Numărul de biţi rezervaţi pentru exponent determină intervalul de numere reale reprezentabile în calculator. Numărul de biţi rezervaţi pentru mantisă determină precizia de reprezentare (gradul de detaliere) a numerelor. Reprezentarea ( 0 + + p + + p ) E fiind normalizată, există siguranţa că 0 =, ceea ce permite omiterea sa (bit ascuns) pentru creşterea preciziei de reprezentare, dar complică prelucrarea informaţiei. Formatele de reprezentare a numerelor în virgulă mobilă (conform standardului IEEE 754) sunt: simplă precizie (single-precission) pe 3 de biţi: bit pentru semnul mantisei 8 biţi pentru exponentul decalat (E min = -6, E max = 7) 3 biţi pentru mantisă (p = 4, 0 = se omite)

Mădălina Roxana Buneci dublă precizie (double-precission) pe 64 de biţi bit pentru semnul mantisei biţi pentru exponentul decalat (E min = -0, E max = 03) 5 biţi pentru mantisă (p = 53, 0 = se omite) Regula de rotunjire este rotunjirea la par. Deci pentru simplă precizie, ε mach = -4 0-7 (7 cifre zecimale semnificative). dublă precizie, ε mach = -53 0-6 (6 cifre zecimale semnificative). Considerăm o reprezentare în memorie, în simplă precizie: s e 7 e 6 e 5 e 4 e 3 e e e 0 3 Fie ed = e 0 + e + e + + e 7 7 şi m = + + + 3 3. Valoarea v reprezentată se determină după cum urmează: dacă 0 < ed < 55, atunci v = (-) s ( + m) ed - 7. dacă ed = 0, k = 0 pentru orice k=, 3 şi s = 0, atunci v = 0. dacă ed = 0, k = 0 pentru orice k=, 3 şi s =, atunci v = - 0. dacă ed = 0 şi există k 0, atunci v = (-) s m - 6 ; v este o valoare denormalizată dacă ed = 55, k = 0 pentru orice k=, 3 şi s = 0, atunci v = Inf. dacă ed = 55, k = 0 pentru orice k=, 3 şi s =, atunci v = - Inf. dacă ed = 55 şi există k 0, atunci v = NaN. Fie reprezentarea în memorie, în dublă precizie: s e 0 e 9 e e 0 5 Fie ed = e 0 + e + e + + e 0 0 şi m = + + + 5 5. Valoarea v reprezentată se determină după cum urmează: dacă 0 < ed < 047, atunci v = (-) s ( + m) ed - 03.

Metode Numerice dacă ed = 0, k = 0 pentru orice k=, 5 şi s = 0, atunci v = 0. dacă ed = 0, k = 0 pentru orice k=, 5 şi s =, atunci v = - 0. dacă ed = 0 şi există k 0, atunci v = (-) s m - 0 ; v este o valoare denormalizată dacă ed = 047, k = 0 pentru orice k=, 5 şi s = 0, atunci v = Inf. dacă ed = 047, k = 0 pentru orice k=, 5 şi s =, atunci v = -Inf. dacă ed = 047 şi există k 0, atunci v = NaN. Exemple: Să se reprezinte în simplă precizie numerele: 8,5-7, 5 0,, x = 8,5 x = 8 + 0,5 8 = 8 + 64 + 3 + 4 = 7 + 6 + 5 + = 0000 0,5 = 0,30 = 0 + 0,3 0,3 = 0,6 = 0 + 0,6 0,6 =, = + 0, 0, = 0,4 = 0 + 0,4 0,4 = 0,8 = 0 + 0,8 0,8 =,6 = + 0,6 x = 0000,00000000 Forma normalizată: x = 0,0000000000 8 =,0000000000 7 ed = 7 + 8- - = 35, ed = 00000 m = 0000000000000 [0] (am omis primul bit =, iar cei trei biţi din paranteză sunt utilizaţi pentru rotunjire la par) fl(x) =, 0000000000000 8 Reprezentare în virgulă mobilă, simplă precizie, (cu bit ascuns) pentru 8,5: 0 00 00 0 0 000 000 00 00 00 4 3 6 4 6 6 6 Deci reprezentării cu bit ascuns a lui 8,5 îi corespunde 4364666 în hexazecimal. x = - 7, 5 x = 7 + 0,5 7 = 6 + 8 + + = 4 + 3 + + 0 = 0 3

Mădălina Roxana Buneci 0,5 = - = 0,0 x = 0,0 Forma normalizată: x = 0,00 5 =,00 4 ed = 4 + 8- - = 3, ed = 00000 Reprezentare în virgulă mobilă, simplă precizie (cu bit ascuns) pentru 7,5: 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 C D A 0 0 0 0 Deci în reprezentării cu bit ascuns a lui -7,5 îi corespunde CDA0000 în hexazecimal. x = 0, 0, = 0, 0, = 0,4 0,4 = 0,8 0,8 =,6 = + 0,6 0,6 =, = + 0, 0, = 0,4 0, 0 = 0, 000000000 x = 0, 000000-3 =,000000000000 0-4 fl(x) =, 00000000000-4 (după cei 3 de biţi ai mantisei urmează 0, şi deci rotunjirea se face prin adăugarea unei unităţi). ed = - 4 + 8- - = 3 = 6 + 5 + 4 + 3 + +, ed = 0 Reprezentare în virgulă mobilă, simplă precizie (cu bit ascuns) pentru 0,: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 D C C C C C D Deci în reprezentării cu bit ascuns a lui 0, îi corespunde 3DCCCCCD în hexazecimal. x =,, = + 0, 0, = 0,4 0,4 = 0,8 0,8 =,6 = + 0,6 0,6 =, = + 0, 0, = 0,4 x =, 00000000 x =,000000000000 00 0 4

Metode Numerice fl(x) =,000000000000 0 (după cei 3 de biţi ai mantisei urmează 00, deci rotunjirea se face astfel încât ultimul bit să aibă valoare pară). ed = 0 + 8- - = 7 = 6 + 5 + 4 + 3 + + +, ed = Reprezentare în virgulă mobilă, simplă precizie (cu bit ascuns) pentru,: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 F 9 9 9 9 9 A Deci în reprezentării cu bit ascuns a lui, îi corespunde 3F99999A în hexazecimal. Următorul program în C verifică reprezentările de mai sus. #include <stdio.h> #include <conio.h> void main(){ long int *i; float f=8.5,f=-7.5, f3=0., f4=.; clrscr(); i=(long int*) &f; printf("\nnumar in virgula mobila:%f\n\tformat intern %08lX (hexazecimal)",f,*i); i=(long int*) &f; printf("\nnumar in virgula mobila:%f\n\tformat intern %08lX (hexazecimal)",f,*i); i=(long int*) &f3; printf("\nnumar in virgula mobila:%f\n\tformat intern %08lX (hexazecimal)",f3,*i); i=(long int*) &f4; printf("\nnumar in virgula mobila:%f\n\tformat intern %08lX (hexazecimal)",f4,*i); getch(); } Programul afişează Numar in virgula mobila: 8.49994 Format intern 4364666 (hexazecimal) Numar in virgula mobila: -7.50000 Format intern CDA0000 (hexazecimal) Numar in virgula mobila: 0.00000 Format intern 3DCCCCCD (hexazecimal) Numar in virgula mobila:.00000 Format intern 3F99999A (hexazecimal) 5

Mădălina Roxana Buneci III.3. Erori care apar ca urmare a limitelor de reprezentare. Din secţiunea precedentă rezultă că nu toate numerele reale pot fi reprezentate exact într-un sistem în virgulă mobilă. De asemenea în urma evaluării unei expresii ai cărei operanzi sunt reprezentabili rezultatul obţinut nu este neapărat reprezentabil. În mod ideal x flop y = fl(x op y) unde op este un operator binar (+, -, *, /), iar flop desemnează corespondentul operatorului respectiv în aritmetica în virgulă mobilă. Sistemele ce satisfac standardul IEEE ating acest ideal în situaţia în care x op y se găseşte în intervalul de numere reale reprezentabile [UFL, OFL]. Depăşirea superioară de capacitate (overflow) cauzează de obicei probleme mai serioase decât depăşirea inferioară de capacitate (underflow), deoarece nu există nici o aproximaţie bună pentru un număr real oarecare "mare". Un număr real foarte mic poate fi în mod rezonabil aproximat cu zero. Pe multe sisteme de calcul depăşirea superioară de capacitate este fatală, în timp ce în caz de depăşire inferioară de capacitate, numărul respectiv este asociat cu zero. Anumite legi ale aritmeticii reale nu sunt valabile într-un sistem în virgulă mobilă. Astfel adunarea şi înmulţirea în virgulă mobilă sunt comutative, dar nu asociative. De exemplu, dacă ε este un număr pozitiv mai mic decât ε mach, dar mai mare decât ε mach,/, atunci ( + ε) + ε =, iar + (ε + ε) >. În cazul scăderii a două numere reale x şi y, poate apărea următorul fenomen (catastrophic cancellation) 6 ( fl( x) fl( y) ) fl( x y) fl( x y) ε mach, dacă fl(x) este egal (sau foarte apropiat de) fl(y). În următorul program (în C) aproximăm sin(x) printr-o sumă parţială a seriei n= 0 n ( ) ( n + )! x n+ Seria fiind alternantă şi convergentă, o sumă parţială de ordin n, aproximează suma seriei (i.e. sin(x)) cu o eroare absolută maximă de #include<stdio.h> #include<conio.h> n+ x. ( n + )!

Metode Numerice #include<math.h> void main(){ float x,s,t,eps,x; int i,n; clrscr(); printf("x=");scanf("%f",&x); printf("eroarea=");scanf("%f",&eps); t=x;s=0;i=; x=x*x; while (fabs(t)>=eps){ s+=t;printf("\n%f",s); t=-t*(x/(4*i*i+*i)); i++; } printf("\nsin(%f) = %f",x,s); printf("\nsin(%f) = %f",x,sin(x)); getch(); } Pentru x= şi eroare 0-7 se obţine aproximaţia 0.90997 corectă a lui sin(). Pentru x = 40 şi eroare 0-7 se obţine aproximaţia 5344336.0 a lui sin(40)! Valoarea corectă este 0.7453 Acest rezultat se datorează fenomenului de reducere (catastrophic cancellation). Programul de mai jos reprezintă versiunea în Pascal pentru calculul aproximativ al lui sin(x): var x,s,t,eps,x:real; i:integer; begin write('x=');readln(x); write('eroare=');readln(eps); s:=0;t:=x;x:=x*x;i:=; while abs(t)>=eps do begin s:=s+t; writeln(i,' ',s); t:=-t*(x/(4*i*i+*i)); i:=i+; end; writeln('sin(',x,')=',s); writeln('sin(',x,')=',sin(x)); readln end. Probleme propuse 7

Mădălina Roxana Buneci ) Daţi reprezentarea internă în simplă precizie a numărului x = +7,5. ) Găsiţi numărul maşină ce corespunde reprezentării interne în simplă precizie AE5000 (în hexazecimal). 3) Scrieţi un program ce calculează sume parţiale ale seriei armonice n= n Observaţi că în aritmetica virgulei mobile această serie este convergentă! (Este cunoscut că seria armonică este divergentă). Posibile explicaţii ale faptului că sumele parţiale n k= determină un şir staţionar în aritmetica virgulei mobile sunt: are loc o depăşire superioară de capacitate la evaluarea unei sume parţiale are loc o depăşire inferioară de capacitate la evaluarea lui /n. sumele parţiale nu se mai modifică în momentul în care /n devine neglijabil relativ la suma parţială n < ε k n mach k= k 8