QUELQUES ALGORITHMES DANS 5 500 ANS D’HISTOIRE
En très gros Quelques dates importantes au proche orient (en gros): -100 000 : Apparition de l’homo sapiens-sapiens. NOUS -11 000 : Premiers sédentaires, premières « maisons » au proche orient. -10 000 : Début de l’agriculture: Apparition du …. TRAVAIL - 9 000 : Début de l’élevage. - 5 000 : Premiers villages conséquents; il ya suffisamment à manger pour tous, la population s’accroît, hiérarchisation de la société: Naissance de l’aristocratie qui ne travaille pas… donc apparition de … L’IMPOT - 3 500 : Premières villes, cités états: Nombreux corps sociaux différents (clergé au service de l’aristocratie divine, artisans, fonctionnaires …). Pour payer tous ces gens, les rois doivent avoir un système d’imposition efficace: il faut savoir calculer, n’oublier personne. Deux outils deviennent vite indispensable : L’ECRITURE, LE CALCUL Ainsi les mathématiques procèdent de l’impôt… A partir de -2 500 : Résolution d’équations (premier et second degré), relation de Pythagore etc. Points de repère: Hammourabi : -1800 Ramsès II: -1300 Assurbanipal :-669 Thalès -625/-547 Nabuchodonosor : -600 Pythagore -580/-497 Aristote -384/-322 Alexandre: -350 Euclide -325/-265 Archimède -287/-212 Diophante 200/284
MESOPOTAMIE
1 ; 24 , 51 , 10 = 1 + 24/60 + 51/602 + 10/ 603 ≈ 1, 41421296 30 × 1, 41421296 ≈ 42, 4263870 = 42; 25 , 34 , 59 … 1 chevron = 10 3 chevrons =30 Une tablette de -2500 L’algorithme « de Babylone» permet de calculer les racines carrées de manière très efficace… 1 clou = 1 2 clous =2 Diapo largement inspiré des travaux de Gilles Aldon et Michel Mizony: http://rallye-math.univ-lyon1.fr/2007/Conference/conf2.pdf
L’algorithme de Babylone: calcul d’une racine carrée On part d’un rectangle (21), on cherche la moyenne des longueurs des côtés: (2+1)/2 = 3/2 = 1;30 qui sera notre nouvelle longueur. On cherche la nouvelle largeur de sorte que l’aire du nouveau rectangle soit toujours 2. 2/1;30 = 1;20. On obtient notre nouveau rectangle (1;30 1;20). On réitère: (1;25 1;24,42,10). Et encore: (1;24,51,10,35 1;24,51,9,40): c’est la valeur de la tablette: 1;24,51,10. L’algorithme pour calculer la racine de A est donc: (x,y)( (x+y)/2 , 2A/(x+y) ) en initialisant à (1,A)
Un problème babylonien du second degré (-1500) X2 + bX = c avec b=1 , c=0;45 (= 45/60) b/2=1/2=0;30 (= 30/60) (b/2)²=0;15 (1/4= 15/60) (b/2)²+c=1 (45/60+ 15/60=1) Le texte donne donc l’algorithme calculant la solution positive de l’équation X²+bX=c (avec b et c positifs: ils ne connaissent pas les négatifs) Aucun texte prouvant l’algorithme n’a été retrouvé. Pourtant ces algorithmes ont certainement du être « corrigés » …
EGYPTE ANCIENNE
La multiplication égyptienne Calcul de 13238 par les égyptiens:
La division égyptienne Sur le même principe, on divise… 212/6:
GRECE ANCIENNE
A tout seigneur…. L’algorithme « d’Euclide » Il s’agit de calculer le PGCD de deux nombres. L’algorithme repose sur deux règles: Si b0 : (a,b) (b,r) avec r = reste de a par b dans la division euclidienne (a,0) a Correction de l’algorithme: il faut démontrer que PGCD(a,b) = PGCD(b,r) il faut démontrer que PGCD(a,0) = 0 il faut démontrer que la suite des couples (a,b) est finie Tout ceci est très simple à faire… Mise en œuvre de l’algorithme
Incommensurabilité de racine de 2: méthode « d’antiphérèse » Soit un carré ABCD. On reporte sur la diagonale AC une longueur AE égale au côté AB et on mène la perpendiculaire à la diagonale en E qui coupe le côté BC en F. On veut démontrer l’incommensurabilité de AC et AB: Appliquons maintenant l’algorithme de recherche d’une commune mesure. Une mesure commune à AC et AB est une commune mesure à AB et EC (AC-AB) donc à BC et BF (BC=BF , BF=EC) ou encore à FC et EC: (AC,AB) (AC-AB,AB)=(EC,AB) = (BF,BC) (BC,BF) (BC-BF,BF) (FC,BF)=(FC,EC). On recommence et on obtient un nouveau carré semblable au précédent. Cela montre que le processus ne se termine pas. Il n’y a donc pas de commune mesure... Incommensurabilité de racine de 2: méthode « d’antiphérèse » Il s’agit d’un algorithme permettant de trouver une « commune mesure » de deux lignes. En clair: a et b étant les longueurs de deux segments, il faut trouver (ou non) un réel d (la commune mesure) et deux entiers n et p tels que a=nd et b=pd. L’algorithme est le même que le précédent: « Soient deux lignes a et b. On peut en retranchant un certain nombre de fois la plus petite b de la plus grande a, et en recommençant avec b et r, écrire une suite d’égalités : a=b q1+r1 , b=r1q2+r2 , r1=r2q2+r3 … avec 0 r1<b, 0 r2<r1,… (les qi sont entiers) jusqu’à ce qu’un reste soit nul. La partie commune est alors le dernier reste non nul. Il est facile de démontrer que si a et b ont une partie commune alors la suite est finie. Et donc si on démontre que la suite est infinie alors a et b n’ont pas de partie commune. Euclide va utiliser cette méthode pour démontrer que la diagonale du carré est incommensurable avec le côté du carré. Ceci est remarquable: c’est sans doute la première fois (bien avant le théorème des 4 couleurs) qu’un algorithme ne se contente pas d’exhiber un résultat (chose honnie des grecs), mais démontre un résultat.
Ce raisonnement a induit un autre algorithme du calcul de valeurs approchées de la racine de 2 que celui de Babylone (xx/2+1/x) : Euclide Si on pose s=BF et d=FC (côté et diagonale de EFGC) alors s’=AB=s+d et d’=AC=AB+s=2s+d (côté et diagonale de ABCD) L’algorithme (s,d)(s+d,2s+d) en partant de (1,1) permet de trouver une approximation de racine de 2 (d²/s² converge vers 2) :
Ptolémée et AL-Kashi
La question est: comment a-t-il fait? Ptolémée (90/168): Dans son traité d’astronomie (Almageste – « le très grand »), il a proposé un modèle géocentrique du système solaire, qui fut accepté dans les mondes occidental et arabe pendant plus de mille trois cents ans jusqu’à Copernic (1543) Si les indiens utilisaient déjà les « sinus », les grecs travaillaient sur les cordes dans leur cercle trigo de rayon 60, coupé en 360° comme les babyloniens. Il était nécessaire de connaître les longueurs de cordes aussi précisément possible: Sur la table ci-contre, on peut voir que la corde correspondant à un angle de 2°30’ est 2p 37’ 4 ’’ ce qui signifie 2+37/60+4/60² = 589/225 ≈ 2,617777 Nous savons que la corde sous-tendue par un angle a est 2Rsin(a/2) et donc égal ici à 120sin(1,25°) = 2,617786.. C’est donc une très bonne approximation: D’autant que 1 ’’ = 1/60² = 0,00027 Cette table est juste à la seconde près. La question est: comment a-t-il fait?
Il connaît Pythagore, donc il trouve les cordes correspondant aux angles 60° et 90° de manière exacte. Pour pouvoir continuer, il trouve son théorème: ABCD est un quadrilatère convexe, s’il est inscrit dans un cercle, alors ACBD=AB CD+CB AD (La réciproque est vraie) Il connaît aussi la construction du pentagone, donc il trouve les cordes correspondant aux angles 36° et 72° de manière exacte. Il utilise cette propriété pour trouver les formules de d’addition de la corde: Démonstration: E est sur [AC] tel que les angles ABD et EBC soient égaux. AEB et DCB sont semblables donc AE BD = AB CD BEC et BAD sont semblables donc EC BD =AD BC En additionnant: AB BD = AB CD + AD BC
Il va pouvoir ainsi trouver les cordes de 12°, 6°, 3° : corde(12°)=corde(72°-60°) corde(6°)=corde(12°/2) corde(3°)=corde(6°/2) corde(1,5°)=corde(3°/2) corde(0,75°) =corde(1,5°/2) Et ceci de manière exacte, donc avec l’algorithme de Babylone, obtenir des valeurs approchées aussi précise qu’il veut…
En revanche, pas possible d’obtenir la valeur exacte de corde(1°) (problème de la trisection de l’angle) et corde (0,5°). En utilisant le fait que « corde(0,75°)/0,75 < corde(1°)/1 < corde(1,5°)/1,5 », il encadre corde(1°) et trouve des valeurs approchées de corde(1°) et corde(0,5°) justes à 1’’ près. Il ne reste plus qu’à construire la table de valeurs par pas de 0,5°. Pour cela il décompose l’arc en une somme d’arcs dont il connaît la corde et applique la formule de duplication de la corde….
Vers 1400, AL KASHI (Persan) dans son « Epître de la corde et du sinus » va améliorer la table en améliorant la précision (60-7) et en trouvant la valeur exacte de Sin(1°). Il abandonne les cordes pour le sinus indien: Sin(a) = corde(2a)/2 = 60 sin(a). (les sinus ont été inventés par les indiens vers -500) Il trouvera la valeur exacte de Sin(1°) à partir de Sin(3°) [3;8,24,33,59,34,28,15] [c’est-à-dire un algorithme qui converge vers Sin(1°)] en résolvant notre égalité sin(3a)=3sin(a)-4sin3(a): en posant x=Sin(1°), il faut résoudre x3+ p = qx avec p=47,6;8,29,53,37,3,45 = 2826,141637… et q = 45,0;0 = 2700 (Sin(3°)/60= 3x/60-4(x/60) 3 x3+Sin(3°) 60²/4=3x60²/4 x3+900Sin(3°) =2700x) Sa méthode revient à écrire en langage moderne: pour résoudre x=(x3+p)/q: x=a0; a1, a2,.. = a0+a160-1+a260-2… et on pose bn=a0; a1, a2,.., an Il pose a0=b0=E(p/q) et an+1 = E( ( (p+bn3)/q – bn ) 60n ) et bn+1 = bn + an+160-(n+1) Il obtient: Sin(1°) = 1;2,49,43,11,14,44,16,26,17.
Et maintenant, quels algorithmes dans nos calculateurs pour calculer sin(x)? Les algorithmes CORDIC (COordinate Rotation Digital Computing) sont le plus souvent utilisés. Le principe reste le même, mais la base d’angles de référence n’est plus 90°,72°,60°… mais est : tan-1(20), tan-1(2-1), tan-1(2-2)… car les divisions ou multiplication par 2 sont de simples décalages de virgule en base 2. L’image d’un vecteur V(x,y) par une rotation d’angle a est V’(cos(a)(x-ytan(a)), cos(a)(y+xtan(a)). Pour calculer sin(a), on écrit a (entre 0 et p/2) comme une somme de ai=tan-1(2-i) de plus en plus petits. Puis on calcule les coordonnées d’une suite de vecteurs V images successives de V0(1,0) par les rotations d’angle ai.
Renaissance
EQUATION 3ème DEGRE TARTAGLIA 1534 X3+pX=q On cherche u et v avec uv=(p/3)3 EQUATION 3ème DEGRE TARTAGLIA 1534 X3+pX = u-v = q uv=(p/3)3 On cherche a et b a+b= q ab= - (p/3)3 Résoudre: Y²=qY+(p/3)3 VANTARD
Napoléon s’amuse
O est le centre du cercle! Correction de l’algorithme (démonstration): Le principe de la démonstration est la possibilité de construire au compas seul la longueur b²/a si les longueurs a et b sont connues: La démonstration s'appuie sur les propriétés du triangle rectangle: Dans la figure ci-dessous, le triangle ABA' est rectangle en B et H est le pied de la hauteur issue de B, on peut donc écrire l'égalité suivante : AH × AA' = AB² . Donc AH=b²/(2a) et AC=b²/a Dans la construction précédente, on retrouve deux fois une configuration de ce type : les points A, B et B' sont sur le cercle de centre O et de rayon r, les distances AB, AB', BC et B'C valent R donc AC=R²/r. les points A, D et D' sont sur le cercle de centre C et rayon R²/r , les distances DA, D'A, DO, D‘O valent R donc AO= R²/(R²/r) = r. La figure étant symétrique par rapport à la médiatrice de [BB’], A, O et C sont sur l’axe de symétrie. Donc O est le centre du cercle. O est le centre du cercle! Problème de Napoléon: Retrouver le centre d’un cercle avec le seul compas…
Maintenant
Un algorithme proposé par G. Berry (Collège de France) (pour le traitement d’images) Coût calcul d’angles: O(n) Coût tri et numérotation: O(nlog(n)) Coût construction: O(n)
BIBLIOGRAPHIE ET VOILÀ, C’EST FINI! Cours de Gérard Berry au collège de France: http://www.college-de-france.fr/default/EN/all/inn_tec2007 Eliane Cousquer: Babylone http://mediamaths.fr/pdf/babylone.pdf http://mediamaths.fr/pdf/grece.pdf http://mediamaths.fr/pdf/pythagore.pdf - « Les métamorphoses du calcul » G Dowek Le pommier - « Les débuts de l’histoire : le Proche-Orient, de l’invention de l’écriture à la naissance du monothéisme » Editions de la Martinière. - « Histoires d’algorithmes : du caillou à la puce » J-L Chabert Belin Gilles Adlon et Michel Mizony: De Babylone au XXIème siècle http://rallye-math.univ-lyon1.fr/2007/Conference/conf2.pdf - « Une histoire de la science arabe» Ahmed Djebbar Seuil. Séminaire (vidéo époustouflante) de Gilles Dowek au collège de France: http://www.college-de-france.fr/default/EN/all/inn_tec2007/seminaire_n5_gilles_dowek.htm ET VOILÀ, C’EST FINI! Vous pourrez retrouver ce diaporama ici: http://bretin.jacques.free.fr/algorithmes/histoire.ppt