A L G O R I T H M E S C OURS DE MATHÉMATIQUES P REMIÈRE ANNÉE Exo7 Algorithmes Cerecueilregroupedifférentschapitressurlesmathématiquesenlienavecl’informatique. Sommaire 1 Algorithmes et mathématiques 1 1 PremierspasavecPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Écrituredesentiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3 Calculsdesinus,cosinus,tangente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4 Lesréels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5 Arithmétique–Algorithmesrécursifs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6 Polynômes–Complexitéd’unalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2 Zéros des fonctions 29 1 Ladichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2 Laméthodedelasécante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3 LaméthodedeNewton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3 Cryptographie 41 1 LechiffrementdeCésar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2 LechiffrementdeVigenère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3 LamachineEnigmaetlescléssecrètes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4 Lacryptographieàclépublique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5 L’arithmétiquepourRSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6 LechiffrementRSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4 Calcul formel 67 1 PremierspasavecSage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2 StructuresdecontrôleavecSage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3 Suitesrécurrentesetpreuvesformelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4 Suitesrécurrentesetvisualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5 Algèbrelinéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 6 Courbesetsurfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7 Calculsd’intégrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9 Équationsdifférentielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Chapitre 1 Algorithmes et mathématiques VidØo (cid:132) partie 1. Premiers pas avec Python VidØo (cid:132) partie 2. Ecriture des entiers VidØo (cid:132) partie 3. Calculs de sinus, cosinus, tangente VidØo (cid:132) partie 4. Les rØels VidØo (cid:132) partie 5. ArithmØtique (cid:21) Algorithmes rØcursifs VidØo (cid:132) partie 6. Polyn(cid:244)mes (cid:21) ComplexitØ d’un algorithme 1. Premiers pas avec Python Danscettepartieonvérified’abordquePythonfonctionne,puisonintroduiralesboucles(foretwhile), letestif ... else ...etlesfonctions. 1.1. Hello world! Pourcommencertestonssitoutfonctionne! Travaux pratiques 1. 1. Définirdeuxvariablesprenantlesvaleurs3et6. 2. Calculerleursommeetleurproduit. Voiciàquoicelaressemble: Code 1 (hello-world.py). >>> a=3 >>> b=6 >>> somme = a+b >>> print(somme) 9 >>> # Les rØsultats >>> print("La somme est", somme) La somme est 9 >>> produit = a*b >>> print("Le produit est", produit) Le produit est 18 Onretientleschosessuivantes: • Onaffecteunevaleuràunevariableparlesigneégal=. ALGORITHMES ET MATHÉMATIQUES 1.PREMIERS PAS AVEC Python 2 • Onafficheunmessageaveclafonctionprint(). • Lorsquequ’unelignecontientundièse#,toutcequisuitestignoré.Celapermetd’insérerdescommen- taires,cequiestessentielpourrelirelecode. Danslasuiteonomettralessymboles>>>.Voirplusdedétailssurlefonctionnementenfindesection. 1.2. Somme des cubes Travaux pratiques 2. 1. Pourunentier nfixé,programmerlecalculdelasommeS =13+23+33+···+n3. n 2. Définirunefonctionquipourunevaleur nrenvoielasommeΣ =1+2+3+···+n. n 3. Définirunefonctionquipourunevaleur nrenvoieS . n 4. Vérifier,pourlespremiersentiers,queS =(Σ )2. n n 1. Code 2 (somme-cubes.py(1)). n = 10 somme = 0 for i in range(1,n+1): somme = somme + i*i*i print(somme) Voicicequel’onfaitpourcalculerS avec n=10. n • Onaffected’abordlavaleur0àlavariablesomme,celacorrespondàl’initialisationS =0. 0 • Nousavonsdéfiniuneboucleavecl’instructionforquifaitvarier i entre1et n. • NouscalculonssuccessivementS1,S2,...enutilisantlaformulederécurrenceSi =Si−1+i3.Comme nous n’avons pas besoin de conserver toutes les valeurs des S alors on garde le même nom pour i toutes les sommes, à chaque étape on affecte à somme l’ancienne valeur de la somme plus i3 : somme = somme + i*i*i. • range(1,n+1)estl’ensembledesentiers{1,2,...,n}.C’estbienlesentiersstrictementinférieurs à n+1.Laraisonestquerange(n)désigne{0,1,2,...,n−1}quicontient néléments. 2. NoussavonsqueΣ =1+2+3+···+n= n(n+1) doncnousn’avonspasbesoindefaireuneboucle: n 2 Code 3 (somme-cubes.py(2)). def somme_entiers(n): return n*(n+1)/2 Unefonctioneninformatiqueestsimilaireàunefonctionmathématique,c’estunobjetquiprenden entréedesvariables(ditesvariablesformellesouvariablesmuettes,ici n)etretourneunevaleur(un n(n+1) entier,uneliste,unechaînedecaractères,...ici ). 2 3. Voicilafonctionquiretournelasommedescubes: Code 4 (somme-cubes.py(3)). def somme_cubes(n): somme = 0 for i in range(1,n+1): ALGORITHMES ET MATHÉMATIQUES 1.PREMIERS PAS AVEC Python 3 somme = somme + i**3 return somme 4. EtenfinonvérifiequepourlespremiersentiersS =(cid:128)n(n+1)(cid:138)2,parexemplepour n=12: n 2 Code 5 (somme-cubes.py(4)). n = 12 if somme_cubes(n) == (somme_entiers(n)**2): ’ print("Pour n=", n, "l assertion est vraie.") else: ’ print("L assertion est fausse !") Onretient: • Lespuissancessecalculentaussiavec**:52 s’écrit5*5ou5**2,53 s’écrit5*5*5ou5**3,... • Unefonctionsedéfinitpardef ma_fonction(variable):etsetermineparreturn resultat. • if condition: ... else: ...exécutelepremierblocd’instructionssilaconditionestvraie;sila conditionestfaussecelaexécutel’autrebloc. • Exempledeconditions — a < b: a< b, — a <= b: a(cid:54) b, — a == b: a= b, — a != b: a(cid:54)= b. • Attention!Ilestimportantdecomprendrequea==bvautsoitvraieoufaux(oncompare a et b)alors qu’aveca=bonaffectedans a lavaleurde b. • EnfinenPython(contrairementauxautreslangages)c’estl’indentation(lesespacesendébutdechaque ligne)quidéterminelesblocsd’instructions. π 1.3. Calcul de au hasard Nousallonsvoirqu’ilestpossibledecalculerlespremièresdécimalesdeπparlaméthodedeMonte-Carlo, c’est à dire avec l’aide du hasard. On considère le carré de coté 1,le cercle de rayon 1 centré à l’origine, d’équation x2+ y2=1,etlaportiondedisquedanslecarré(voirlafigure). (0,1) (0,0) (1,0) Travaux pratiques 3. 1. Calculerl’aireducarréetdelaportiondedisque. 2. Pour un point (x,y) tiré au hasard dans le carré, quelle est la probabilité que le point soit en fait danslaportiondedisque? 3. Tirerungrandnombredepointsauhasard,compterceuxquisontdanslaportiondedisque.
Description: