Adhérer ou faire un don

Étude d’un très vieil algorithme

Catherine Combelles

Ne laissons pas passer ce dossier sur l’algorithmique sans célébrer les vertus d’un algorithme plein de richesses pour le prof de maths de lycée : il est bien connu, il s’agit de l’algorithme de Babylone. Pourquoi ces louanges ?

Parce qu’il mêle histoire et culture, parce qu’il se décline en activités riches et formatrices, parce qu’il a un côté caméléon, s’adaptant à tous les niveaux et tous les contextes.

Pour simplifier, le problème consiste à calculer une valeur approchée de $\sqrt 2$. On peut l’adapter au calcul de toute autre racine carrée.

Seconde : La première idée est toute simple et m’a souvent servi pour un premier TD en seconde. $\sqrt 2 $ est le côté d’un carré d’aire 2. Alors, on part d’un rectangle de côtés $l_0 = 1$ et $L_0 = 2$, trop long, et on le « raccourcit » tout en gardant son aire constante. La méthode pour ce faire consiste à choisir pour nouvelle longueur la moyenne des dimensions du rectangle précédent. 1 est trop petit, 2 est trop grand, alors, comme l’esclave du Ménon, coupons en deux et tapons au milieu. On obtient ici $L_1 = {3 \over 2}$ , et la largeur assurant que l’aire reste 2 : $l_1 = {2 \over L_1}={4 \over 3}$.

Et on recommence, d’abord à la main… C’est une belle occasion, en début de seconde, de consolider le calcul sur les fractions, sans l’ennui d’un exercice purement technique. Il n’est pas question de poursuivre longtemps , le quatrième calcul est déjà à la limite des possibilités de la calculatrice puisque le numérateur a 13 chiffres, mais passer par cette étape me semble utile et fait comprendre, en acte, ce qu’est une boucle.

C’est une première boucle, c’est aussi une première suite, sans le dire, et une occasion d’introduire la notation indicielle sans douleur, parce qu’elle est une aide naturelle dans l’expression des calculs.

La première étape dans l’organisation automatisée du calcul semble être le tableur : une colonne « pour compter les tours » (n), une colonne pour un côté (a), une colonne pour l’autre (b). C’est une occasion d’affirmer la nécessité de déclarer les variables, et de montrer à quel point cette « déclaration » éclaire la mise en forme de l’algorithme. La phase d’initialisation se fait naturellement en complétant la première ligne : au début n=0 (ou n=1, on peut laisser le choix à la classe), a=2 et b=1. Les formules s’écrivent très naturellement : « = (B2+C2)/2 » dans B3 et « = 2/B3 » dans C3. La boucle se réalise par recopie vers le bas. Les résultats confirment les calculs à la main, mais surprise : les deux suites semblent constantes dès n = 4. Si on modifie le format de la cellule pour obtenir le nombre maximum de chiffres après la virgule (30), c’est à partir de n = 5 que la suite apparaît constante, avec beaucoup de zéros qui peuvent laisser croire que est non seulement rationnel, mais décimal !

L’heure est passée, et on n’ira pas plus loin, sans doute, dans une séance de TD de seconde. Mais un deuxième travail s’impose alors pour le TD suivant : prouver que n’est pas une fraction. Certes, ce n’est plus une obligation du programme, mais c’est un beau travail de logique et un accompagnement nécessaire à l’exposé de cet algorithme. Une autre suite à ce travail est l’exploration de la précision des outils de calcul, et une réflexion sur les notions de valeur exacte et de valeur approchée.

Si on dispose d’un peu de temps, on peut aussi revenir à un calcul de fractions, en calculant non pas une suite mais 4, les numérateurs et dénominateurs des deux suites de fractions. Le nombre de chiffres double à chaque étape, ce qui n’est pas une surprise, et on n’obtient de valeur exacte que jusqu’au cinquième calcul.

Ce travail est essentiellement numérique, il ne présente pas beaucoup de difficultés, mais il permet de réfléchir sur les nombres, sur leur nature (décimal, rationnel, irrationnel), sur leur représentation, sur papier ou sur machine, sur la distinction entre valeur exacte et valeur approchée. Il a aussi un parfum historique très plaisant, qui contribue à persuader les élèves que la matière qu’ils étudient a une bien longue histoire. On pourra par exemple leur montrer des photos d’une tablette d’argile babylonienne datant de 1800 à 1600 avant Jésus-Christ, comportant une approximation étonnamment précise de $\sqrt 2 $ que l’on suppose issue de cet algorithme : on les trouve par exemple à l’adresse suivante :

http://www.math.ubc.ca/ cass/Euclid....

On peut en les admirant, se convaincre que l’algorithmique n’est pas une nouveauté de l’année 2009 !

Passons en première et Terminale S :

Les nouveautés en première, ce sont en analyse les notions de suite, de limite, et de dérivée d’une fonction. Elles sont au coeur de notre problème, car la suite de l’histoire, c’est l’algorithme de Newton et la méthode de la tangente.

On cherche toujours une approximation rationnelle de $\sqrt 2 $.

On regarde ici ce nombre comme une solution de l’équation : $x^2 - 2 = 0$. On trace la parabole représentant la fonction associée, $f (x)=x^2-2$, et on démarre l’algorithme avec la même valeur 2 que plus haut, qu’on va noter $u_0$. On trace la tangente à la parabole au point d’abscisse 2, et on calcule l’abscisse de son point d’intersection avec l’axe des abscisses : c’est $u_1$. Et on recommence… Lorsqu’on essaie de faire la figure sur Geogebra par exemple, on ne peut guère dépasser la deuxième étape sans perdre la vue globale de la situation, mais le zoom est possible et il est d’une efficacité très intéressante ! Ses performances sont étonnantes : je me suis amusée à la pousser à bout, et il m’a donné 13 décimales !

Entrons dans le calcul :

En partant de $u_n$, on obtient ce qui suit : le point $A_n$ d’abscisse $u_n$ de la parabole a pour ordonnée $u_n ^2 -2$ , la tangente en $A_n$ a pour équation $ y=2u_n x-u_n ^2 -2$, et elle coupe l’axe des abscisses au point d’abscisse $u_{n+1}={1 \over 2} \left( u_n + {2 \over u_n} \right)$.

C’est bien la suite des longueurs des rectangles de l’algorithme de Babylone, lorsqu’on commence à 2, et je me souviens encore de mon étonnement lorsque j’ai découvert ce télescopage dans l’histoire des mathématiques. Plus de 30 siècles plus tard, Newton a, en quelque sorte, retrouvé l’algorithme des Babyloniens ! Inconvénient de cette nouvelle approche, plus savante certes, et généralisable à bien d’autres problèmes : on n’obtient plus un encadrement de $\sqrt 2$, mais simplement une suite qui converge en décroissant vers $\sqrt 2$. Les tangentes sont extérieures à la parabole, et il n’est donc pas questions d’obtenir des approximations par défaut.

Pour retrouver un encadrement, il faudra ici appliquer la méthode de Lagrange, ou méthode de la sécante : appelons B le sommet de la parabole, de coordonnées (0,−2), et traçons la sécante $(BA_n)$. Elle a pour équation : $y = u_n x-2$, et coupe donc l’axe des abscisses au point d’abscisse $v_n = {2 \over u_n}$. La courbe étant convexe, le point est « à l’intérieur de la parabole », et c’est bien une approximation par défaut de la racine. Nous avons ainsi retrouvé intégralement l’encadrement de l’algorithme de Babylone (Fig. 1) ! (Mes remerciements à Daniel Duverney qui m’a indiqué cette méthode.)

Étudions la suite $(u_n)$. L’étude de $(v_n)$ s’en déduit aisément. On peut commencer par utiliser le schéma usuel dans un problème de point fixe : la représentation graphique classique de la suite récurrente utilisant la fonction $x -- {1 \over 2} \left( x + {2\over x} \right)$ et la droite d’équation $y = x$, suggère que la suite est décroissante et minorée, et donc convergente.

C’est facile à prouver : tous les termes de la suite sont à l’évidence positifs dès que la valeur de départ $u_0$ est positive.

$u_{n+1}-\sqrt 2 ={1 \over 2u_n} \left( u_n- \sqrt 2 \right)^2$ ce qui est positif. La suite est donc minorée par $\sqrt 2 $ à partir de $u_1$ quelle que soit la valeur positive de départ $u_0$.

De plus : $u_{n+1}-u_n={1 \over 2u_n} \left( u_n- u_n ^2 \right)$ ce qui est négatif dés le rang 1. La suite est donc décroissante à partir de $u_1$.

L’élève de Terminale prouve ainsi aisément la convergence de la suite, et l’équation $x={1 \over 2} \left( x + {2 \over x} \right) $ confirme la limite : elle n’a qu’une solution positive, $\sqrt 2 $ .

Mais ce traitement, réservé à l’élève de terminale parce qu’il utilise le théorème sur les suites monotones et bornées, laisse un goût d’inachevé, car il ne rend pas compte de la rapidité étonnante de convergence de cette suite.

Cette façon d’étudier les suites récurrentes est en vogue depuis que le nouveau programme a réintroduit le théorème des suites monotones et bornées, et chassé l’inégalité des accroissements finis. Celle-ci nous valait certes des problèmes d’examen très stéréotypés, mais on a changé une méthode unique pour une autre, et le théorème d’existence de la limite ne dit rien de la rapidité de convergence. Il ne met plus l’accent sur l’importance décisive dans ce type de situation de la valeur de la dérivée au point fixe. Ici, cette dérivée est nulle, et on peut espérer faire mieux que la traditionnelle comparaison à une suite géométrique.

C’est l’égalité $u_{n+1}-\sqrt 2={1 \over 2u_n} \left( u_n- \sqrt 2 \right)^2$ qui permet d’expliquer cette vitesse. Le facteur $ {1 \over 2u_n}$ peut être majoré par 1, et on découvre ainsi que $u_{n+1}-\sqrt 2=\left( u_n- \sqrt 2 \right)^2$

Ainsi, si $u_n-\sqrt 2 <10^{-k} $ , alors $u_{n+1}-\sqrt 2 <10^{-2k} $

Le nombre de décimales exactes va donc au moins doubler à chaque étape !

Plus précisément, on obtient par récurrence :

$$0

Cette inégalité suffit à prouver la convergence en première S, sans recours au théorème de Terminale, dès que $u_0- \sqrt 2 <1$ , ce qui est le cas lorsqu’on démarre à 2.

Pour qui préfère la solidité d’une égalité, on peut utiliser la suite annexe $(w_n)$ définie par $w_n={u_n- \sqrt 2 \over u_n + \sqrt 2}$ , qui vérifie $w_{n+1}=w_n ^2$.

Cette méthode est moins directe mais permet de s’affranchir de la condition $u_0- \sqrt 2 <1$ , car $w_0$ est toujours entre 0 et 1, dès que l’on démarre après $\sqrt 2$.

En terminale, on peut revenir à l’encadrement de l’algorithme de Babylone : les suites étudiées fournissent en effet un exemple de suites adjacentes même si le théorème des suites adjacentes n’est pas ici le meilleur outil, l’étude directe étant plus simple. Mais on pourra du moins majorer l’amplitude de l’intervalle obtenu $u_{n+1}-{2 \over u_{n+1}}={1 \over {2u_n (u_n ^2 + 2)^2}} \left(u_n ^2 -2 \right) ^2$ , que l’on peut majorer aussi par : $\left( u_n- \sqrt 2 \right ) ^2$ , par exemple.

Travailler sur un algorithme, ce n’est pas seulement l’écrire et le programmer : c’est aussi examiner son efficacité, évaluer sa rapidité. Et les outils mathématiques traditionnels de l’analyse gardent alors toute leur utilité et retrouvent même un regain d’intérêt.

Que faire de nouveau sur ce problème ? L’intérêt renouvelé porté à l’algorithmique donnera peut-être envie de calculer d’autres décimales de $\sqrt 2$ : quand on sait qu’on double le nombre de décimales par un simple calcul de moyenne arithmétique, c’est bien tentant ! Mais ce n’est pas si facile : le calcul réclamera une division en double précision, et un travail consistant d’arithmétique, avec d’autres algorithmes. Ce sera la suite de l’histoire ?

(Article mis en ligne par Armelle BOURGAIN)