• Aucun résultat trouvé

Un exemple de propagation des erreurs d’arrondi

Dans le document MATHÉMATIQUES ET TI-Nspire (Page 176-182)

Annexe : les nombres hautement composés

Étape 1 : on décompose 1063 en base 2, en procédant à des divisions successives par 2

3. Un exemple de propagation des erreurs d’arrondi

Le produit 2 310148e1155 peut être calculé correctement et on peut maintenant avoir confiance dans le résultat affiché.

On constate sur cet exemple, et sur ceux qui ont précédé, que des expressions mathématiquement égales sont bien loin parfois d’être équivalentes du point de vue de la calculatrice : elles peuvent donner des résultats qui diffèrent. Les propriétés de l’ensemble  des nombres machine ne sont donc pas les mêmes du point de vue des opérations que celles de l’ensemble  des réels. On doit systématiquement réfléchir à la meilleure formule pour qu’un calcul soit mené à son terme le plus efficacement possible.

3. Un exemple de propagation des erreurs d’arrondi

On se propose d’examiner comment les erreurs d’arrondi se propagent dans un calcul banal, mais avec de nombreuses opérations, la somme 500 000

1

1

k k calculée avec le logiciel sur l’ordinateur.

Elles proviennent, comme on l’a vu de deux causes :

les erreurs d’affectation sur chacun des nombres entrés (ou presque !) ;

les erreurs dues aux opérations, qui sont, comme on l’a vu, des erreurs d’affectation sur les résultats de chaque somme.

3.1 De l’influence des opérations sur le résultat obtenu

Gardons les mêmes nombres, et donc les mêmes erreurs d’affectation, mais modifions l’ordre des termes : les opérations ne seront donc pas exactement les mêmes. Mathématiquement, le résultat doit être le même. Qu’en est-il exactement ?

Faisons d’abord le calcul dans l’ordre croissant des entiers :

Réponse 13,699580042419 Puis dans l’ordre décroissant :

Ou encore en additionnant les entiers pairs dans l’ordre croissant, puis les entiers impairs dans le même ordre :

Réponse 13,699580042312

… en additionnant les entiers pairs dans l’ordre décroissant, puis les entiers impairs dans le même ordre :

Réponse 13,699580042314

… enfin en additionnant par les deux bouts…

Réponse 13,699580042324 On pourrait multiplier les exemples…

3.2 Bilan de ces différents calculs…

Point négatif : cinq façons d’organiser un même calcul, quatre résultats différents… Globalement, on ne peut qu’avoir de sérieux doutes sur les deux chiffres de réserve, ainsi que sur le douzième chiffre significatif.

Est-ce surprenant ? Non, car on a vu précédemment que des expressions mathématiquement égales ne sont pas forcément équivalentes du point de vue l’organisation des calculs.

Point positif : les différences se manifestent essentiellement sur les chiffres de réserve... C’est aussi leur rôle que d’amortir la propagation des erreurs d’arrondi dans un calcul.

Quelles sont les causes d’erreur ?

On a parlé des erreurs d’affectation, mais elles ne peuvent justifier tous les écarts : les différents calculs précédents faisant intervenir les mêmes nombres, on a nécessairement les mêmes erreurs d’affectation. Il faut cette fois regarder du côté des erreurs induites par les opérations.

Mais au fait, quel est donc le résultat exact ?

On peut l’obtenir en utilisant un logiciel de calcul formel en lui demandant d’afficher 50 chiffres significatifs… Sur la base des différents résultats obtenus, on peut penser que les 30 ou 40 premiers sont corrects. On obtient :

13,699580042305528321963895496730411108319299879385

À la lumière de ce résultat, le calcul fait avec les indices décroissants est un des deux qui donnent le résultat le plus proche.

Cela n’est pas surprenant et on peut en déduire une loi empirique générale, qui contribue à retarder l’apparition de sommes de nombres d’ordre de grandeurs différents : il vaut mieux effectuer une somme en allant du plus petit nombre vers le plus grand.

3.3 Propagation des erreurs d’arrondi

 Limitons-nous au cas où l’on calcule la somme S dans l’ordre croissant S = 1

13,699 579 992 419 S 13,699 580 092 419

Avec ce calcul d’erreur, nous ne serions sûrs que des 4 premières décimales19 ; mais nous avons pour autant une valeur approchée à moins de 10  10-8 = 10-7 près.

Un tel calcul d’erreur d’erreur est particulièrement catastrophique et reflète sans doute très mal la réalité de notre résultat. L’erreur maximale est très peu probable : il faudrait pour ce faire que l’erreur sur chaque terme soit la plus grande possible, et qu’il n’y ait aucune compensation de ces erreurs d’un terme à l’autre. Ce n’est pas réaliste : la majoration obtenue est certes fiable, mais excessivement pessimiste. Ceci illustre la difficulté qu’il y a même pour un calcul simple à estimer de façon correcte l’erreur commise.

Une approche statistique est possible et fournit des résultats bien plus satisfaisants. Cette approche appréhende le calcul dans sa globalité et donne des résultats bien moins pessimistes que les désastreux calculs de majoration vus précédemment.

Appelons  l’erreur commise sur la somme S précédente (possédant n = 500 000 termes) et ek l’erreur d’arrondi globale, quelle qu’en soit la cause, commise sur le terme d’ordre k de cette somme.

On a clairement :  =

ek

D’autre part, compte tenu de l’arrondi sur chaque terme, on sait que ek  5 1013.

L’idée est de considérer ek et  comme des variables aléatoires et de faire les deux hypothèses suivantes :

(1) les erreurs ek sont des variables aléatoires indépendantes les unes des autres ;

(2) l’espérance mathématique de ek est égale à 0 : autrement dit, l’arrondi n’a pas plus de raison de se faire par excès que par défaut.

Remarquons que V e

 

kE e

 

k2

E e

 

k

2E e

  

k2  5 1013

2

18 Une de moins d’ailleurs quand la somme dépassera 10…

On pourrait conclure avec l’inégalité de Bienaymé-Tchebychev, mais le théorème central limite donne

Autrement dit, l’erreur probable est majorée dans 95% des cas par 3,54  10-10… résultat beaucoup plus intéressant que celui que nous avons obtenu par majoration plus haut.

On peut en déduire l’encadrement suivant :

Avec ce calcul d’erreur, nous sommes sûrs des 9 premières décimales, avec une erreur majorée par 7,08  10-10… mais avec une probabilité d’un peu plus de 0,95.

3.4 Correction de l’arithmétique de la calculatrice

 Il est cependant possible d’atténuer ce phénomène de propagation des erreurs d’arrondi, pour obtenir un résultat satisfaisant même avec une calculatrice.

La somme effectuée à ce moment est donc la suivante, les chiffres en grisé n’étant pas pris en compte par la calculatrice :

1 0 , 1 9 3 0 5 4 4 7 7 9 4 8 + 0 , 0 0 0 0 6 6 6 6 2 2 2 2 5 1 8 4 9 9

1 0 , 1 9 3 1 2 1 1 4 0 1 7 0 5 1 8 4 9 9 6 chiffres significatifs de 1

15 001 sont donc purement et simplement occultés dans ce calcul : cette perte, certes petite, contribue peu à peu à la dégradation des calculs.

Se pose alors une question : est-il possible de conserver ces chiffres significatifs qui disparaissent ? La réponse, paradoxalement, est oui et va grandement contribuer à améliorer le calcul.

Effectuons la suite de calculs suivants : d’abord, (s + 1

15 001) – s, qui met en évidence la valeur de 1

15 001 qui a été incorporée à s ;

par suite, 1

15 001, duquel on ôte le résultat précédent, donne la partie que l’on n’a pas utilisée de 115001 :

Remarquons que ce dernier résultat devrait être 0 mais… ce n’est pas le cas car les règles usuelles de calcul dans  ne sont pas conservées pour l’ensemble des nombres de la calculatrice…

Nous voilà donc avec des décimales qui passaient jusqu’à présent aux oubliettes. Les récupérer pour chaque terme doit permettre d’améliorer le calcul de S.

 Les remarques précédentes nous conduisent à écrire une fonction, pour atténuer les erreurs d’arrondi dues aux sommes successives. En effet, on peut facilement cumuler dans une variable e les erreurs d’arrondi calculées comme précédemment. Il suffit alors qu’à la fin la fonction retourne s + e au lieu de s pour que l’on obtienne un résultat plus précis.

C’est ce que fait la fonction suivante :

On obtient les résultats suivants :

ce qui est exactement la réponse renvoyée par WIMS, arrondie à 14 chiffres significatifs. On peut considérer que notre fonction a neutralisé la propagation des erreurs d’arrondi.

Mais on peut encore affiner le résultat en ajoutant à la main les contenus des variables s et e. On obtient s  13,699 580 042 419 et e  0,000 000 000 113 493 849 9

1 3 , 6 9 9 5 8 0 0 4 2 4 1 9 – 0 , 0 0 0 0 0 0 0 0 0 1 1 3 4 9 3 8 4 9 9 1 3 , 6 9 9 5 8 0 0 4 2 3 0 5 5 0 6 1 5 0 1 Résultat à comparer avec celui qu’on a obtenu avec WIMS :

13,699580042305528321963895496730411108319299879385

Dans le document MATHÉMATIQUES ET TI-Nspire (Page 176-182)