Previous Contents Next
5 Représentation des réels (TD)

5.1 Principe
Les réels sont représentés par les nombres en virgule flottante Soit b>1 la base de la représentation, et soit p ³ 1. Un nombre en virgule flottante de base b et de précision p est un nombre de la forme
± c0,c1... cp-1 × be
où, pour i=0,...,p-1, 0 £ ci < b et emin £ e £ emax. La quantité e est appelée l'exposant. Le nombre c0,c1... cp-1 est appelé la mantisse. Le signe est indiqué par un bit de signe, placé devant la mantisse ou l'exposant (on n'utilise donc pas la méthode du complément à la base, ni pour la mantisse, ni pour l'exposant). On dit que la représentation est normalisée lorsque c0 ¹ 0, ce que l'on supposera dans toute la suite.

I -  On pose b=2, p=3, emin=-1 et emax=2. Donner tous les nombres flottants positifs de ce système. Les dessiner sur un axe gradué. Que remarquez-vous ?

II -  La norme IEEE 754 (format simple) impose aux constructeurs d'ordinateurs que b=2, p=24, emin=-126 et emax=127. Quel est le plus petit entier positif représentable ? Le plus grand positif ?

Dans toute la suite de la section, on supposera b=10 et p=3

5.2 Erreur sur la représentation

On représente de façon interne un réel z par le nombre flottant le plus proche (notons-le R(z)). L'erreur relative commise par cette représentation est
ER(z) =
| z - R(z) |
z
,
que l'on peut exprimer en pourcentage en multipliant par 100.

III -  Quelle est l'erreur relative commise en représentant p=3,141592··· par le flottant 3,14 × 100 ?

5.3 Soustraction
On se pose le problème de calculer x-y. On supposera toujours que y<x et que x et y sont positifs.

IV -  Une première façon de faire est la suivante : on aligne les virgules de x et de y, on fait la soustraction, et on prend le flottant le plus proche du résultat. Par exemple, si
x=3,14 × 108  et  y = 2,05 × 10-6,
l'alignement et l'opération donneront
  3 , 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 × 108
- 0 , 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 5 × 108
  3 , 1 3 9 9 9 9 9 9 9 9 9 9 9 7 9 5 × 108
représenté par le flottant x=3,14 × 108. Le résultat est le plus exact possible, mais cette méthode n'est jamais utilisée. Pouvez-vous voir pourquoi ?

V - Plutôt qu'aligner y exactement, on ne garde que p chiffres. Sur l'exemple précédent, cela donne
  3 , 1 4 × 108
- 0 , 0 0 × 108
  3 , 1 4 × 108
Effectuer l'opération pour x=1 et y=0,999. Calculer l'erreur relative sur le résultat. Qu'en pensez-vous ? Montrer que l'erreur relative peut être aussi grande que b-1 (et donc, elle peut être de 100 % si b=2, et de 900 % si b=10 !).

VI -  Supposons que l'on garde de façon interne un chiffre (caché à l'utilisateur) supplémentaire. Refaire l'opération, et calculer l'erreur relative sur le résultat. Que constatez-vous ?

5.4 Arrondi
Avec le chiffre caché, nécessaire pour borner l'erreur relative commise lors d'une soustraction, se pose le problème d'arrondir un nombre (en l'occurrence la mantisse). La méthode classique est d'arrondir inférieurement quand le chiffre caché est dans l'ensemble {0,1,2,3,4}, et supérieurement quand le chiffre caché est dans {5,6,7,8,9}. Ainsi 1,452 s'arrondit à 1,45, tandis que 2,088 s'arrondit à 2,09 et que 3,145 s'arrondit à 3,15.

Une autre façon de faire est la suivante : si le chiffre caché est différent de 5, on fait comme la méthode précédente. Ainsi, comme précédemment, 1,452 s'arrondit à 1,45 et 2,088 s'arrondit à 2,09. Cependant, quand le dernier chiffre est 5, au lieu d'arrondir supérieurement de façon systématique, on arrondit au chiffre pair le plus proche (méthode dite du tie breaks even). Ainsi 3,145 s'arrondit à 3,14, et 5,255 s'arrondit à 5,26.

Pour départager objectivement les deux méthodes d'arrondi, calculer les premiers termes des deux suites (un)n³ 0 et (vn)n³ 0 définies par
u0 = x,   un = (un-1 - y)+y
v0 = x,   vn = (vn-1 - y)+y
x=1 et y=0,055. Les opérations se font de façon exacte, avec arrondi à la suite de chaque opération, cet arrondi étant classique pour u, et en utilisant le tie breaks even pour v. Que constatez-vous ? Si vous étiez banquier, quelle méthode choisiriez-vous ?


Previous Contents Next