Numărul în virgulă mobilă

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Termenul număr virgulă mobilă (în engleză floating point) din analiza numerică indică metoda de reprezentare aproximativă a numerelor reale și prelucrarea datelor utilizate de procesor pentru efectuarea operațiilor matematice .

Se opunea aritmeticii și întregului punct fix (în engleză fixed-point). În informatică este de obicei utilizat în baza 2 și în acest caz poate fi considerat analogul binar al notației științifice în baza 10.

Utilizarea operațiilor aritmetice în virgulă mobilă este astăzi cea mai răspândită metodă de gestionare a numerelor reale și a aproximării raționale a acestora în memoria calculatorului .

Descriere

Un număr în virgulă mobilă constă în forma sa cea mai simplă din două părți:

În unele cazuri, de exemplu în standardul IEEE 754 , există un câmp suplimentar: semnul s; dar acest lucru va fi tratat în mod specific în articolul relevant.

Un număr real generic a poate fi astfel reprezentat ca (semnificația aritmetică a câmpurilor este indicată cu litere mari):

Această metodă de scriere vă permite să reprezentați un set numeric foarte mare într-un anumit număr de cifre, ceea ce punctul fix nu permite. Un număr se caracterizează prin valoarea b , care stă la baza notației în care este scris numărul, și cantitatea p de cifre prezente în mantisă, numită precizie . Prin urmare, mantisa unui număr scris cu această metodă este prezentată sub forma ± d.ddd ... ddd (o cantitate p de cifre d între 0 și b -1). Dacă prima cifră a mantidei este diferită de zero, se spune că reprezentarea este normalizată . (Dacă se utilizează câmpul s , mantisa trebuie să fie pozitivă, iar acest bit îi determină semnul).

Setul de numere în virgulă mobilă include valorile + ∞, −∞ (plus sau minus infinit) și Nan (nu un număr, utilizat pentru a defini rezultatele operațiilor imposibile sau nevalide).

În limbajul C , reprezentarea în virgulă mobilă a unui număr plutitor sau dublu rațional provine din reprezentarea științifică. În reprezentarea științifică, un număr este produs în două părți: a doua, numită factor de scală , este o putere de 10, cealaltă parte, numită parte fracționată , este un număr astfel încât, înmulțit cu factorul de scală, returnează numărul care vrea să reprezinte. Prin urmare, există diferite moduri de a reprezenta același număr, de exemplu:

  • 0,07824 × 10 5
  • 0,7824 × 10 4
  • 7.824 × 10 3
  • 78 240 × 10 −1

cele patru notații sunt echivalente.

Cu toate acestea, se folosește reprezentarea normalizată : în ea, se impune că partea fracțională este întotdeauna mai mică de 1 și cea mai semnificativă cifră este întotdeauna diferită de 0. Prin urmare, în exemplul considerat mai sus, notația corectă este doar a doua:

  • 0,7824 × 10 4

Prin urmare, reprezentarea în virgulă mobilă este reprezentarea științifică normalizată odată cu utilizarea sistemului binar; de aceea factorul de scară este o putere de 2. Partea fracționată se numește mantisă în timp ce exponentul puterii a două este numit exponent . Prin urmare, numărul rațional este reprezentat după cum urmează:

unde mantisa și exponentul pot avea un semn + sau -.

Proprietățile aritmeticii în virgulă mobilă

Această aritmetică are două diferențe fundamentale față de aritmetica reală:

  • aritmetica în virgulă mobilă nu este asociativă : în general, pentru numerele în virgulă mobilă,
  • aritmetica în virgulă mobilă nu este distributivă : în general,
.
  • există elementul neutru al multiplicării, elementul neutru al adunării și opusul, dar nu sunt unice.

În cele din urmă, ordinea în care sunt efectuate mai multe operații în virgulă mobilă poate varia rezultatul. Acest lucru este important pentru analiza numerică, deoarece două formule echivalente matematic pot da rezultate diferite, una chiar mai semnificativă decât cealaltă. De exemplu, în majoritatea aplicațiilor cu virgulă mobilă, 1.0 + (10 100 + −10 100 ) returnează 1.0, în timp ce (1.0 + 10 100 ) + −10 100 dă 0.0.

Probleme cu utilizarea virgulei mobile

În general, aceste tipuri de numere se comportă foarte similar cu numerele reale. Cu toate acestea, acest lucru îi determină deseori pe programatori să nu ia în considerare importanța unei analize numerice adecvate asupra rezultatelor obținute. Există multe inconsecvențe între comportamentul numerelor cu virgulă mobilă de bază 2, utilizate în informatică, și cel al numerelor reale, chiar și în cazuri foarte simple (de exemplu, fracția 0,1 care nu poate fi reprezentată exact de niciun sistem binar în virgulă mobilă) . Din acest motiv, de exemplu, formatul nu este utilizat în domeniul financiar.

Principalele cauze ale erorilor de calcul în virgulă mobilă sunt:

  • rotunjire
    • numere nereprezentabile (de exemplu, 0,1);
    • rotunjirea operațiilor aritmetice (de exemplu: 2/3 = 0.666667);
  • absorbție (de exemplu: 1 × 10 15 + 1 = 1 × 10 15 );
  • anulare (de exemplu: scăderea a două numere foarte apropiate);
  • depășire (cu semnal de rezultat infinit);
  • underflow (rezultă 0, un număr subnormal sau cel mai mic număr reprezentabil);
  • operații imposibile (de exemplu: rădăcina pătrată a unui număr negativ are ca rezultat NaN );
  • erori de rotunjire: spre deosebire de punctul fix, utilizarea ditheringului în virgulă mobilă este aproape imposibilă.

Punctul flotant apare mai potrivit atunci când este necesară o anumită precizie cu privire la valoare. Când este necesară precizie absolută, punctul fix pare o alegere mai bună.

În ceea ce privește eroarea de precizie care determină utilizarea punctului mobil, în primul rând observăm că dacă x este numărul reprezentat, adică

atunci vei avea

și, prin urmare, dacă x este valoarea pentru a reprezenta e valoarea sa în notație în virgulă mobilă cu mantisă de cifre, atunci eroarea absolută va fi:

așa cum este intuitiv să gândim, în timp ce eroarea relativă, care ia în considerare dimensiunea numărului în cauză, va fi:

această din urmă creștere se obține cu ușurință din formula de eroare absolută: de fapt, din moment ce asa de prin urmare:

.

În special, eroarea relativă, chiar dacă variabilă, este întotdeauna sub valoarea găsită: aceasta din urmă nu depinde de numărul reprezentat (de fapt nu depinde de , spre deosebire de eroarea absolută) și din acest motiv se mai numește și precizia mașinii.

Bibliografie

  • Davide Manca, Calcul numeric aplicat , Bologna, Pitagora Editrice, 2007, ISBN 88-371-1697-7 .

Elemente conexe

linkuri externe