|
|
| |
FLUCTUAT
: Principes |
| |
| |
 |
|
Considérons par exemple le calcul
simple a * b faisant intervenir les valeurs a=621.3 et b=1.287. Pour plus de simplicité,
on suppose que a et b appartiennent à un ensemble simplifié de nombres flottants
en base 10 et avec une mantisse de taille m=4. On suppose de plus que des
erreurs initiales sont attachées à a et b, et écrivons
a = 621.3 + 0.05 E1 b
= 1.287 + 0.0005 E2
pour indiquer qu'une erreur initiale de 0.05 (resp. 0.0005) a été commise sur a
(resp. b). Le résultat exact du produit a * b est 799.6131. Le même calcul sous la
forme flottant plus erreurs donne
a * b = 799.6131 + 0.06435 E1 + 0.31065 E2 + 0.000025 E1 E2
La différence entre a * b et 621.35 * 1.2875 est
0.375025, et cette erreur vient du fait que l'erreur initiale sur a (resp. b)
a été multipliée par b (resp a), et qu'une erreur de second ordre, correspondant
à la multiplication des deux erreurs a été introduite. Ainsi, à la fin du calcul,
la contribution à l'erreur globale de l'erreur initiale sur a est 0.06435, et
correspond au coefficient attaché à la variable formelle E1. De façon similaire,
la contribution à l'erreur globale de l'erreur initiale sur b est donnée par le
coefficient de E2. La contribution de l'erreur de second ordre due aux erreurs
initiales sur a et b est donnée par le terme 0.000025 E1 E2, qu'on écrit plutôt
0.000025 E1.2 par la suite. Enfin, le nombre 799.6131 a trop de chiffres pour
être représentable dans notre ensemble simplifié de nombres flottants.
Comme la norme IEEE 754 spécifie que les opérations élémentaires doivent être
correctement arrondies, on peut assurer que le nombre flottant calculé par la
machine est 799.6, et qu'un nouveau terme d'erreur 0.0131 E* est introduit par
la multiplication. En résumé, on a
a * b = 799.6 + 0.06435 E1 + 0.31065 E2 + 0.000025E12
+ 0.0131 E*
A première vue, on pourrait croire que la précision du calcul dépend principalement
de l'erreur initiale sur a puisqu'elle est 100 fois plus grande que celle sur b.
Cependant, comme on peut le voir sur la figure ci-dessous, ce résultat indique
que l'erreur finale est principalement due à l'erreur initiale sur b. Ainsi,
pour améliorer la précision du résultat finale, on doit plutôt essayer d'améliorer
la précision de b.

|
|
|
| |
|
|