QUELQUES ALGORITHMES DANS 5 500 ANS D’HISTOIRE Quelques dates importantes au proche orient (en gros): En très 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 Pythagore -580/-497 Euclide -325/-265 Thalès -625/-547 Aristote -384/-322 Archimède -287/-212 Nabuchodonosor : -600 Alexandre: -350 Diophante 200/284 MESOPOTAMIE 1 ; 24 , 51 , 10 = 1 + 24/60 + 51/602 + 10/ 603 ≈ 1, 41421296 chevron==42; 1025 , 34 , 59 … 30 × 1, 41421296 ≈ 42, 14263870 Une tablette de -2500=30 3 chevrons 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 » 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. Soit un carré ABCD. On reporte sur la diagonale AC une longueur AE égale au côté AB et on Euclide va utiliser cette méthode pour démontrer que la diagonale du carré est mène la perpendiculaire à la diagonale en E qui coupe le côté BC en F. incommensurable avec le côté du carré. On démontrer l’incommensurabilité de AC et AB: Ceciveut est remarquable: c’est sans doute la première fois (bien avant le théorème des 4 couleurs) Appliquons maintenant l’algorithme de recherche d’une commune mesure. qu’un algorithme ne se contente pas d’exhiber un résultat (chose honnie des grecs), mais Une mesure commune à AC et AB est une commune mesure à AB et EC (AC-AB) donc à démontre un résultat. 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... 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) : 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) : Euclide Ptolémée et AL-Kashi 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? IlPour Ilconnaît connaît aussi Pythagore, la construction donc il trouve duson pentagone, les cordesdonc correspondant il trouve lesaux pouvoir continuer, il trouve théorème: ABCD cordes angles est correspondant 60° un et quadrilatère 90° de manière auxconvexe, angles exacte. 36° s’iletest 72° inscrit de manière exacte. dans un cercle, alors ACBD=AB CD+CB AD (La réciproque est vraie) Il utilise cette propriété pour trouver les formules de Démonstration: est sur [AC] tel que les angles ABD et d’addition de laEcorde: 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 X3+pX=q On cherche u et v avec uv=(p/3)3 EQUATION 3ème DEGRE X3+pX = u-v = q uv=(p/3)3 TARTAGLIA 1534 On cherche a et b a+b= q ab= - (p/3)3 Résoudre: Y²=qY+(p/3)3 VANTARD Napoléon s’amuse 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',du BCcercle! et B'C valent R O est le centre 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. 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 -Gilles Cours Histoires de débuts métamorphoses Gérard d’algorithmes Berry l’histoire au ducollège :calcul du learabe» Proche-Orient, caillou GFrance: Dowek à laDowek puce de LeXXIème »au pommier l’invention J-L Chabert deFrance: Belin l’écriture à la Eliane Cousquer: Babylone -« Séminaire « Les UneAdlon histoire (vidéo etde Michel de époustouflante) la science Mizony: De de»de Babylone Gilles Ahmed au Djebbar collège Seuil. siècle de naissance http://www.college-de-france.fr/default/EN/all/inn_tec2007 du monothéisme » Editions de http://mediamaths.fr/pdf/grece.pdf la Martinière. http://mediamaths.fr/pdf/babylone.pdf http://www.college-de-france.fr/default/EN/all/inn_tec2007/seminaire_n5_gilles_dowek.htm http://rallye-math.univ-lyon1.fr/2007/Conference/conf2.pdf http://mediamaths.fr/pdf/pythagore.pdf ET VOILÀ, C’EST FINI! Vous pourrez retrouver ce diaporama ici: http://bretin.jacques.free.fr/algorithmes/histoire.ppt