5 |
Représentation des réels (TD) |
|
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
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 ?
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 ?
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
où 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 ?