III.2.2. Reprezentarea în virgulă mobilă

Σχετικά έγγραφα
Lucrarea de laborator nr. 2

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.

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

MARCAREA REZISTOARELOR

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

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

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 1 Şiruri de numere reale

Metode iterative pentru probleme neliniare - contractii

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

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

Subiecte Clasa a VIII-a

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

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

Asupra unei inegalităţi date la barajul OBMJ 2006

Sisteme de numeraţie

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

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

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

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

Aplicaţii ale principiului I al termodinamicii la gazul ideal

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

Subiecte Clasa a VII-a

Subiecte Clasa a V-a

Sisteme diferenţiale liniare de ordinul 1

Integrala nedefinită (primitive)

Curs 2 Şiruri de numere reale

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

Metode de interpolare bazate pe diferenţe divizate

Laborator 11. Mulţimi Julia. Temă

Noţiuni introductive

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

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

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

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Criptosisteme cu cheie publică III

Conf.dr.ing. Gabriela Ciuprina

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

I. Noţiuni introductive

riptografie şi Securitate

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

Esalonul Redus pe Linii (ERL). Subspatii.

Progresii aritmetice si geometrice. Progresia aritmetica.

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

Seminar 5 Analiza stabilității sistemelor liniare

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

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

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

Principiul Inductiei Matematice.

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

MULTIMEA NUMERELOR REALE

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

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

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

Conice - Câteva proprietǎţi elementare

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

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

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

Matrice. Determinanti. Sisteme liniare

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

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

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

Functii Breviar teoretic 8 ianuarie ianuarie 2011

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

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

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

5.4. MULTIPLEXOARE A 0 A 1 A 2


2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

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

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

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

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

1.3 Baza a unui spaţiu vectorial. Dimensiune

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

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

* 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

CURS: METODE EXPERIMENTALE ÎN FCS

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

Erorile sunt omniprezente. Februarie 2010

10 REPREZENTAREA DIGITALĂ

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

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

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


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

Metode Runge-Kutta. 18 ianuarie Probleme scalare, pas constant. Dorim să aproximăm soluţia problemei Cauchy

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

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

CONCURSUL DE MATEMATICĂ APLICATĂ ADOLF HAIMOVICI, 2017 ETAPA LOCALĂ, HUNEDOARA Clasa a IX-a profil științe ale naturii, tehnologic, servicii

Ecuatii trigonometrice

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

Activitatea A5. Introducerea unor module specifice de pregătire a studenţilor în vederea asigurării de şanse egale

Profesor Blaga Mirela-Gabriela DREAPTA

Subiecte Clasa a VIII-a

8 Intervale de încredere

Transcript:

III... Reprezentarea î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 b p b )b E, k {0,,...b-} pentru orice k = 0, p, E Z. 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 ). Tabelul de mai jos exemplifică cei patru parametri (baza, precizia, valorile limită ale exponentului) ce caracterizează reprezentarea în virgulă mobilă în diverse sisteme Sistem baza b precizia p E min E max IEEE single-precission 4-6 7 IEEE double-precission 53-0 03 Cray 48-6383 6384 calculator HP 0-499 499 mainframe IBM 6 6-64 63 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

Mădălina Roxana Buneci Metode Numerice Curs - 007 î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 UFL = E min b. Cel mai mare număr normalizat se notează OFL (overflow level) şi este OFL = (b- = E max b b b b E p ) max b b b 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 fl(x) = ± ( 0 p b b p b p b b p b )b E ; deci 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ă )b E. 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 ε 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 Fie x un număr real aproximat de fl(x) =±( 0 0 < UFL < ε mach < OFL. p b b 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 p b )b E. )b E se face sub forma s ed 0 p- 3

Mădălina Roxana Buneci Metode Numerice Curs - 007 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. III..3. 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 p ) E, p = 4, 53. Sunt admise şi aşa numitele numere denormalizate ("denormalized floating-point numbers"): ± (0 p p ) E, p = 4, 53, 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. 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. 4

Un număr în virgulă mobilă ±( 0 conform IEEE-754 sub forma p p ) E se reprezintă intern 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) 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

Mădălina Roxana Buneci Metode Numerice Curs - 007 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 = reprezentată se determină după cum urmează: dacă 0 < ed < 55, atunci v = (-) s ( m) ed - 7. 3 3. Valoarea v 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 0 5 Fie ed = e 0 e e e 0 0 şi m = reprezentată se determină după cum urmează: 5 5 dacă 0 < ed < 047, atunci v = (-) s ( m) ed - 03.. Valoarea v dacă ed = 0, k = 0 pentru orice k=, 5 şi s = 0, atunci v = 0. 6

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. Exemple: dacă ed = 047 şi există k 0, atunci v = NaN. 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 7

Mădălina Roxana Buneci Metode Numerice Curs - 007 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 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: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C D A 0 0 0 0 Deci 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 8

Deci 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 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 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); 9

Mădălina Roxana Buneci Metode Numerice Curs - 007 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) III..4. Aritmetica în virgulă mobilă 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-754 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 0

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 (ε ε) >. Rezultatul unei operaţii în virgulă mobilă poate să fie semnificativ diferit faţă de rezultatul aceleaşi operaţii în aritmetica exactă. Să considerăm numărul real x =. Se reprezintă în baza, prin x = 0,0000000 =, 0 00000000000-4. În simplă precizie este aproximat de fl(x) =, 00000000000-4, ceea ce introduce o eroarea de 0.00000000000000000000000000000 în binar sau aproximativ 0.000000047 în zecimal. Programul în C de mai jos pune în evidenţă cum se propagă această eroare prin înmulţire: #include <stdio.h> #include <conio.h> void main(){ float f=./0,z=0; int i; clrscr(); for(i=;i<33;i*=){ printf("\n0.*0^%d-0^%d = %f ",i,i,f*(z*0)-z); z=z*z; } getch(); } Programul afişează 0.*0^ - 0^ = 0.000000 0.*0^3-0^ = 0.00000 0.*0^5-0^4 = 0.00049

Mădălina Roxana Buneci Metode Numerice Curs - 007 0.*0^9-0^8 =.4906 0.*0^7-0^6 = 49066.000000 0.*0^33-0^3 = 49066888835360000000.000000 Membrul drept ar fi trebuit să fie 0, deoarece 0 i - 0 i =0. 0 În cazul scăderii a două numere reale x şi y, poate apărea următorul fenomen (catastrophic cancellation) ( 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! Seria fiind alternantă şi convergentă, o sumă parţială de ordin n, aproximează suma n seriei (i.e. sin(x)) cu o eroare absolută maximă de n x. Programul de mai jos ( n )! reprezintă versiunea în C pentru calculul sumei care aproximează sin(x): #include<stdio.h> #include<conio.h> #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). 3