![]() |
Les limites des ordinateurs dans la résolution des problèmes numériques( Télécharger le fichier original )par Ruffin NGOIE MPOY Institut Supérieur Pédagogique - Master 2008 |
LES LIMITES DE L'ORDINATEUR DANS LA RESOLUTION D'UN PROBLEME NUMERIQUE Par NGOIE MPOY Ruffin Benoît1(*) ABSTRACTThe goal of this article is to show to the user that computer, fast and powerful computational tool, cannot be used without precautions to deal with mathematical problems. In calculations, numbers handled by the computer are represented in memory with a restricted number of figures. This limitation inherent in the structure of the machine is sometimes generating errors which can make lose any significance with a result. The examples are given in PASCAL language, but certain results were produced by a programmable calculator of mark Texas Instrument TI 86 INTRODUCTIONLe but de cet article est de montrer à l'utilisateur que l'ordinateur, outil de calcul rapide et puissant, ne peut pas être utilisé sans précautions pour traiter les problèmes mathématiques. Dans les calculs, les nombres manipulés par l'ordinateur sont représentés en mémoire avec un nombre restreint des chiffres. Cette limitation inhérente à la structure de la machine est parfois génératrice d'erreurs qui peuvent faire perdre toute signification à un résultat. Les exemples sont donnés en langage PASCAL, mais certains résultats ont été produits par une calculette programmable de marque Texas Instrument TI 86 1. Notation Nous supposerons que le lecteur s'est familiarisé avec les propriétés élémentaires des ensembles IN, Z, Q et IR où : IN = Z = Q = IR = Q U I où I = 2. Quelques rappels des notions mathématiques
Soit Démonstration Par hypothèse, il existe sur une courbe
d'équation
Soit Démonstration En effet, il suffit d'appliquer le théorème de
Rolle à la fonction D'où (Lorent, R et Lorent, S., 1990)
Considérons le polynôme ... D'où Nous nous proposons d'étendre la formule des
accroissements finis en introduisant les dérivées successives de
La formule (2.3.1) qui est valable pour un polynôme de degré n sera généralisée. Cette formule est dite de Mac Laurin. Notons que la formule de Mac Laurin est un cas particulier de la formule de Taylor.
Soit Posons Remarquons que
Considérons la fonction Remarquons que Comme
Or en dérivant D'où
En remplaçant
La formule (2.3.2 bis) dite formule de Taylor est encore
valable si Remarque Si on pose
3. Limites de l'ordinateur
Dans un ordinateur, tout nombre réel Dans un ordinateur, chaque nombre est placé dans un mot
de la mémoire. Un mot est formé d'un nombre fini de cases,
chacune ne pouvant contenir qu'un seul chiffre. Dans la première, on va
placer le signe de · La troncature qui consiste à couper (à
tronquer) la mantisse de · L'arrondi qui consiste à tenir compte du ( Presque la totalité des ordinateurs travaille
actuellement par arrondi. Dans les deux cas, le nombre réel Théorème « L'erreur d'affectation vérifie
Démonstration Donnons la démonstration dans le cas de la troncature. On a : Donnons une borne supérieure de ce rapport en majorant
son numérateur et en minorant son dénominateur. Le
numérateur est majoré par 0.99999... = 1 et le
dénominateur est minoré par 0.100... puisque Il est évident que, pour l'arrondi, l'erreur est deux fois plus faible et correspond donc à K = 5. Remarquons que l'on peut également écrire
l'inégalité donnée dans ce théorème sous
forme d'égalité
Nous venons de voir que la taille de la place
réservée en mémoire pour ranger un nombre est
fixée. Il en résulte que si les nombres manipulés ont une
écriture nécessitant pour
Voyons maintenant comment un ordinateur s'y prend pour effectuer les quatre opérations arithmétiques élémentaires +, -, x, /.
Soit à calculer A = B + C. Cette opération,
comme les trois autres d'ailleurs, ne s'effectue pas dans la mémoire
centrale mais dans ce que l'on appelle l'accumulateur. Cette
accumulateur est un ensemble de trois mots dont la particularité est
d'avoir les mantisses avec Pour effectuer l'opération A = B + C, l'ordinateur
commence par recopier sans modification dans l'accumulateur celui des deux
opérandes qui est le plus grand en valeur absolue. Comme, dans
l'accumulateur, la mantisse doit avoir Mais il faut, bien sûr, le diviser aussi par 103 pour que sa valeur ne change pas, c'est-à-dire que C = (0.56799442/103 )x103 et, dans l'accumulateur, on aura C = 0.000567994420000x103 Finalement, cela montre que l'ordinateur procède comme
quand nous effectuons une addition avec un papier et un crayon : nous
plaçons les uns en dessous des autres les chiffres correspondants aux
puissances identiques de 10. Maintenant, l'addition peut s'effectuer dans
l'accumulateur et l'on trouve B + C = 0.2354455644200000 x 103. On
voit que, dans l'accumulateur, l'addition s'est effectuée sans aucune
erreur ( au moins sur cet exemple ; on verra plus loin d'autres exemples
où le résultat obtenu dans l'accumulateur présente une
erreur). Enfin, notre résultat doit être renvoyé dans un
mot de la mémoire de l'ordinateur. Or ces mots ont des mantisses qui ne
possèdent que
Dans le cas d'une multiplication, le produit de deux mantisses
de longueur
Pour une division enfin, il est évident que, dans
l'accumulateur, le résultat n'est pas toujours exact (par exemple,
lorsque l'on divise 1 par 3, le résultat possède une
infinité de 3). L'erreur, dans l'accumulateur, se situe au niveau du
Théorème « L'erreur sur une opération
arithmétique satisfait
a. Exemple 1 Nous pouvons vérifier rapidement sur un ordinateur qu'on peut trouver r suffisamment grand tel que :
Ces résultats s'expliquent en remarquant que : · Les opérations sont effectuées de la gauche vers la droite · Quand on effectue 1 + 10-r, l'opération de décalage et de troncature sur 10-r transforme ce nombre en 0. b. Exemple 2 L'exécution des instructions suivantes : PROGRAM Calcul1 (INPUT, OUTPUT); VAR n : INTEGER ; s : REAL ; BEGIN s := 0 ; FOR n := 1 TO 10000 DO s := s + 1.0 E-10 ; s:= s+1; WRITE (s) END. et l'exécution de : PROGRAM Calcul2 (INPUT, OUTPUT); VAR n : INTEGER ; s : REAL ; BEGIN s := 1 ; FOR n := 1 TO 10000 DO s := s + 1.0 E-10 ; WRITE (s) END. peuvent afficher des valeurs différentes à l'écran. En effet, s donne 1.0000010000 E+00 pour Calcul1 et 1.0000010004 E+00 pour Calcul2. Ceci nous suggère le principe suivant : « Dans une somme, il sera toujours préférable d'additionner d'abord les termes les plus petits en valeur absolue pour leur cumul ne soit pas négligé face aux termes les plus grands » c. Exemple 3 L'affichage est fait en base 10 avec un nombre fixé de chiffres. Les nombres sont le plus souvent fournis à l'ordinateur sous forme décimale. Nous avons vu qu'ils sont transformés et manipulés sous forme binaire avec les erreurs que cela comporte. Une fois le calcul terminé, ils sont reconvertis en base 10, ce qui introduit une nouvelle erreur. L'affichage sur l'écran ne fournit donc pas nécessairement la valeur exacte contenue en mémoire.
Sur une calculette de marque Texas instrument TI 86 x = 10-14 · La première opération donne un résultat apparemment exact. Si ce résultat était rigoureusement exact, on devrait avoir 0 comme résultat de la seconde opération. Pour comprendre ce qui s'est passé, travaillons en base 2 : Un calcul simple montre qu'alors, d. Exemple 4 · · On a
Donc, pour x positif : On pourra vérifier par un calcul sur ordinateur que
pour x suffisamment grand, les formules donnant Testés sur une calculette Texas Instrument TI 86, les résultats obtenus sont pour x=E+100 (soit 10100) : e. Exemple 5 Une erreur répétée un grand nombre de fois ou multipliée par un grand nombre peut conduire à une erreur globale non négligeable. L'exécution des instructions suivantes affectera à ERREUR une valeur non nulle alors que d'un point de vue strictement mathématique on devrait avoir ERREUR = 0. PROGRAM Calcul3 (INPUT, OUTPUT); VAR I : INTEGER ; S, ERREUR, a : REAL ; BEGIN a := 1/3 ; S:=0; FOR I:= 1 TO 30000 DO s := s + a ; ERREUR:= S-10000; WRITE (ERREUR) END. Remarquons que 1/3 est représenté en mémoire par une valeur par défaut. Par ailleurs au fur et à mesure que S augmente, 1/3 est de plus en plus décalé et tronqué pour additionner S et a. Il en résulte une petite erreur par défaut. Testé sur ordinateur, ce code revoie la valeur -2,5331974030 E-06 au lieu de 0. f. Exemple 6 La récursivité donne la possibilité de faire figurer dans la définition d'un objet une référence à ce même objet. Une procédure ou une fonction récursive est un sous - programme qui s'appelle lui-même, et qui intègre une variable de contrôle permettant d'arrêter le processus d'appel. On considère les suites ( Les programmes récursifs de calcul des termes de ces suites sont : PROGRAM Calcul4 (INPUT, OUTPUT); VAR I, n : INTEGER ; FUNCTION terme(val:INTEGER):REAL; BEGIN IF val = 0 THEN terme:=1/3 ELSE terme:=4*terme(val-1)-1 END ; BEGIN WRITELN(`Saisir un nombre entier'); READLN(n) ; WRITE(`Le terme qui correspond à ce nombre est',terme(n)) END. Et PROGRAM Calcul5 (INPUT, OUTPUT); VAR I, n : INTEGER ; FUNCTION terme(val:INTEGER):REAL; BEGIN IF val = 0 THEN terme:=4/3 ELSE terme:=terme(val-1)/4+1 END ; BEGIN WRITELN(`Saisir un nombre entier'); READLN(n) ; WRITE(`Le terme qui correspond à ce nombre est',terme(n)) END. Calculés à la main, les termes successifs de ces
deux suites sont égaux à 1/3 pour ( * 1 Assistant au Département de Mathématique à l'ISP/Mbanza-Ngungu |
|