En 2017, lors du test de la calculatrice Numworks, les journalistes du site Inpact-Hardware constatent l’étonnante réponse donnée au calcul : $1-0,8-0,2$. Au lieu du $0$ attendu, la machine retourne :
$$-5,551115\times 10^{-17}$$
Quand on demande au même modèle, mais équipé de la version 9.2.0 de son système d’exploitation évolutif, d’effectuer le calcul :
$$\frac{10^{6}+10^{-6}-10^{6}}{10^{-6}}$$
il donne pour réponse le nombre suivant :
$$10^{12}$$
au lieu de $1$.
Or, un simple calcul préalable « à la main » suffit pour trouver le bon résultat. L’approximation n’est plus négligeable, puisque le résultat est mille milliards de fois plus grand !
Ni la marque, ni le système d’exploitation ne sont en cause. Avec la TI-83 Premium CE de Texas Instrument, l’entrée $10^{20}-1-10^{20}$ retourne $0$ et non $-1$.
De même au calcul $28923761^{2}-28923760^{2}$, elle donne :
$$57847520$$
Alors que le résultat est :
$$57847521$$
Quelle arithmétique pour les calculatrices ?
Puisque l’ensemble des nombres-machine qu’utilise un ordinateur est fini, l’arithmétique, autrement dit les règles et opérations sur ces nombres, n’est pas la même que celle portant sur les ensembles infinis de nombres tels que les entiers ou les réels. Les questions posées par ces manipulations se rapportent à la représentation des nombres, aux calculs sur ces représentations, ainsi qu’à l’étude des fonctions.
L’arithmétique des intervalles remplace celle des cours du collège. Il s’agit d’une branche nouvelle des mathématiques dont le but est de fournir des règles de calculs fiables et des résultats rigoureux.
Qu’on se rende compte du problème : $\sqrt{2}$ est un irrationnel. Mais la calculatrice le considère comme un nombre décimal – avec une précision fixée –, disons $\sqrt{2}=1,414$. Or $1,414^{2}=1,99396$.
Les exemples précédents nous fournissent plusieurs informations :
La calculatrice doit « avoir de la marge », car la multiplication requiert plus de nombres après la virgule. Les fonctions, « élévation au carré » et « racine », ne sont pas réciproques dans cette arithmétique. La multiplication courante et sa version « machine » ne correspondent pas.
L’arithmétique finie des machines ne suit pas les mêmes règles que celle de l’arithmétique traitant des ensembles de nombres potentiellement infinis. Il convient, comme dans l’exemple donné, de voir $\sqrt{2}$ comme un intervalle, en l’occurrence $\left[1,414;1,415 \right]$ et non un nombre mathématique.
En effet, sur l’ensemble des nombres manipulés par une machine on rencontre certains problèmes.
L’addition n’est ni associative :
Avec une précision de trois chiffres après la virgule, on a en effet :
$$(0,999+0,0004)+0,0004=0,999+0,0004=0,999$$
Alors que :
$$0,999+(0,0004+0,0004)=0,999+0,0008=1$$
ni régulière :
$a+x=b+x$ entraîne $a=b$ or $1+10^{-30}=1$ pour une machine, pourtant $10^{-30}\ne0$
Une fonction strictement croissante peut ne plus l’être pour une machine :
C’est-à-dire, sachant $\overline{x}<\overline{y}$ et $f$ une fonction strictement croissante, peut-on assurer que $f\left( \overline{x} \right)<f\left( \overline{y} \right)$ ? Nous avons vu dans le chapitre consacré au théorème des valeurs intermédiaires l’importance de cette question.
La multiplication multiplie les erreurs :
Si l’on considère deux nombres-machine $\overline{x}$ et $\overline{y}$, le résultat de la multiplication, $z=\overline{x}\times \overline{y}$ n’est, a-priori, pas un nombre-machine, car le produit demande deux fois plus de chiffres pour pouvoir être effectué.
Le nombre-machine
Le nombre-machine $\overline{z}$ sera proche, mais différent du résultat $z$. On définit alors l’erreur absolue entre un nombre réel et un nombre-machine par :
$$r_{\alpha}=\mid x-\overline{x}\mid$$
Et l’erreur relative entre ces deux nombres par :
$$r=\frac{\mid x-\overline{x}\mid}{\mid x \mid}$$
Nous avons la règle suivante :
$$\overline{x} \overline{\oplus} \overline{y}=\left( \overline{x} \oplus \overline{y}\right)\left( 1+r\right)$$
Où $\oplus$ représente l’opération exacte (parmi les quatre opérations élémentaires), $\overline{\oplus}$ son équivalent machine et$\mid r \mid<\varepsilon$ la précision du calculateur.
Les analystes numériques qui étudient les modèles arithmétiques des processeurs parlent d’epsilon machine. Il peut être compris comme la plus grande valeur non nulle $\varepsilon$ telle que : $1+\varepsilon=1$. Autrement dit, et le problème est sérieux, deux quantités mathématiques égales peuvent ne pas être équivalentes à l’affichage.