ebook img

Programmation en Python pour les mathématiques : cours et exercices PDF

320 Pages·1994·14.52 MB·French
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Programmation en Python pour les mathématiques : cours et exercices

Alexandre Casamayou-Boucau Pascal Chauvin Guillaume Connan Programmation Python en p o u r le s mathématiques C o u rs e t e x e rc ic e s 2^ édition TOJ c rj û Ю tH O ГМ x: gi >- Q. O U DUNOD Le pictogramme qui figure ci-contre d'enseignement supérieur, provoquant une mérite une explication. Son objet est baisse orutale des achats de livres et de d'alerter le lecteur sur la menace que revues, au point que la possibilité même pour représente pour l'avenir de l'écrit, ___ les auteurs de créer des œuvres particulièrement dans le domaine DANGER nouvelles et de les faire éditer cor­ de l'édition technique et universi­ rectement est aujourd'hui menacée. taire, le développement massif du Nous rappelons donc que toute photocopillage. reproduction, partielle ou totale, Le Code de la propriété intellec­ de la présente publication est tuelle du 1®"^ juillet 1992 interdit LE PHOTOCOPILLAGE interdite sans autorisation de en effet expressément la photoco­ TUE LE Uy^ l'auteur, de son éditeur ou du pie à usage collectif sans autori­ Centre français d'exploitation du sation des ayants droit. Or, cette pratique droit de copie (CFC, 20, rue des s'est généralisée dans les établissements Grands-Augustins, 75006 Paris). © Dunod, 2012, 2016 5 rue Laromiguière, 75005 Paris •a O c www.dunod.com Q13 CD ISBN 978-2-10-074476-3 O rsi Le Code de la propriété intellectuelle n'autorisant, aux termes de l'article gi L. 122-5, 2° et 3° a), d'une part, que les «copies ou reproductions strictement >- réservées à l'usage privé du copiste et non destinées à une utilisation collective » QO. et, d'autre part, que les analyses et les courtes citations dans un but d'exemple et U d'illustration, « toute représentation ou reproduction intégrale ou partielle faite sans le consentement de l'auteur ou de ses ayants droit ou ayants cause est illicite » (art. L. 1 22-4). Cette représentation ou reproduction, par quelque procédé que ce soit, constitue­ rait donc une contrefaçon sanctionnée par les articles L. 335-2 et suivants du Code de la propriété intellectuelle. Préface à la première édition Dans cet ouvrage consacré à l’étude du langage Python, Alexandre Casamayou-Boucau, Guillaume Connan et Pascal Chauvin ont réussi une difficile synthèse : celle de présenter une introduction claire au langage proprement dit, tout en explicitant ses liens profonds avec l’al­ gorithmique mathématique. Il est certain que le choix de Python rendait a priori cette synthèse possible : grâce à sa syntaxe de programmation multi-paradigme, l’écriture de programmes en Python est à la fois puissante et abordable ; elle est susceptible de couvrir la plupart des domaines de la programmation, et de façon éminente ceux pouvant intéresser l’algorithmique. De ce point de vue, l’apprentissage d’un langage « fondamental » comme Python nous semble être une alternative didactique bien supérieure à celle qui consisterait à apprendre seulement l’usage de logiciels de calcul formel : pour donner une analogie, disons que c’est un peu la différence qu’il y a entre maîtriser en profondeur le fonctionnement et la méca­ nique d’une automobile, et le fait de simplement savoir la conduire ! Le fait que Python est entièrement en source libre et très utilisé dans l’industrie garantit en outre son accessibilité, sa pérennité et son évolutivité dans le temps ; ce n’est pas nécessairement le cas des logiciels propriétaires qui, pour cette raison, ne sauraient être recommandés au même titre pour des programmes d’enseignement. L’ouvrage devrait conduire le lecteur à approfondir beaucoup sa connaissance des prin­ cipes de la programmation et sa compréhension des algorithmes mathématiques fondamen­ taux. Il est construit à partir d’exemples nombreux et très riches qui en rendent la lecture attrayante. Ceux-ci devraient aussi grandement faciliter la tâche des enseignants qui l’utilise­ ront, depuis le lycée jusqu’aux classes préparatoires et à l’université. Saint-Martin d’Hères, le 5 octobre 2011, •a O c Jean-Pierre Demailly Q13 Professeur à l’Université de Grenoble I y£> Membre de l’Académie des Sciences O r\i ai ‘s_ >. COL U "О о с гз Û »1-XН) о rsj х: ст >. оо. и Table des matières Avant-propos vü 1 Introduction au langage Python 1 1 Pourquoi Python ? .................................................................................................................................. 1 2 Avant de commencer................................................................................................................................ 2 3 Utiliser Python comme une calculette............................................................................................ 2 4 Variables et affectations........................................................................................................................ 3 5 Fonctions ................................................................................................................................................... 6 6 Instructions d’écriture et de lecture ................................................................................................ 10 7 La structure conditionnelle ................................................................................................................. 14 8 Les boucles while .................................................................................................................................. 18 9 Les listes...................................................................................................................................................... 20 10 Les boucles fo r......................................................................................................................................... 28 11 Récapitulatif sur les principaux types ............................................................................................ 31 12 Quelques mots sur la récursivité...................................................................................................... 33 13 Quelques méthodes pour trier une liste......................................................................................... 35 14 Quelques primitives usuelles................................................................................................................. 37 15 Un mot sur les exceptions.................................................................................................................... 40 16 Compléments sur les fonctions.......................................................................................................... 41 17 Notions sur les classes........................................................................................................................... 43 18 Exercices d’entraînement .................................................................................................................... 49 2 Modules 51 1 Structure d’un module........................................................................................................................... 51 2 Quelques modules « Batteries included » ..................................................................................... 53 3 Lire et écrire dans un fichier ............................................................................................................. 64 4 Manipulation de fichiers CSV............................................................................................................. 68 5 Comment générer des graphiques ? ................................................................................................... 70 ■a O 6 Un coup d’œil vers le module Matpiotlib..................................................................................... 74 c 3 7 Exercices d’entraînement .................................................................................................................... 75 Cl tH O 3 Thèmes mathématiques 77 (N 1 Matrices...................................................................................................................................................... 78 (y) 2 Les nombres : entre analyse et algèbre ......................................................................................... 112 ai 3 Le nombre jt............................................................................................................................................... 149 >- 4 Probabilités................................................................................................................................................ 163 COL 5 Relations binaires et graphes............................................................................................................. 170 U 4 Méthodes numériques 179 1 Les nombres en notation scientifique................................................................................................ 180 2 Résolution d’équations non linéaires................................................................................................ 182 3 Résolution numérique d’équations différentielles........................................................................ 186 4 Interpolation polynomiale.................................................................................................................... 199 5 Dérivation numérique ...............................................................................................................................203 VI Programmation en Python pour les mathématiques 6 Intégration numérique...............................................................................................................................205 7 Exercices d’entraînement .........................................................................................................................216 Récursivité 217 1 Quelques exemples......................................................................................................................................217 2 Spirale de pentagones...............................................................................................................................225 3 Courbe du dragon ......................................................................................................................................226 4 Triangle de Sierpin sky.................................................................................................................................228 5 Sommes de termes d’une suite géométrique .....................................................................................232 6 Exercices d’entraînement .........................................................................................................................233 Classes 236 1 Graphes ...........................................................................................................................................................238 2 Représentation des nombres.....................................................................................................................243 3 Listes.................................................................................................................................................................257 4 Arbres binaires .............................................................................................................................................266 5 Calculateur ....................................................................................................................................................275 6 Polynômes et fractions rationnelles.......................................................................................................291 7 Exercices d’entraînement .........................................................................................................................300 Bibliographie 302 Index général 305 Index des commandes 309 TOJ c rj û «JD tH O CM (y) XOIJ >- Q. O U A v a n t - p r o p o s La réalisation d'un programme informatique de façon traditionnelle passe nécessaire­ ment par récriture de son code source. C’est cet aspect-là de la programmation qui nous in­ téresse tout particulièrement. Véritable activité de rédaction en soi, si fréquente dans les ap­ prentissages, c’est par cette phase justement — qui peut être laborieuse mais aussi tellement gratifiante —, que l’on obtient le résultat désiré. 11 nous semble important d’en convaincre les élèves. Tout le travail consiste à analyser un problème et à décrire un moyen d’obtenir une so­ lution. Dépourvu de toute capacité de déduction ou d’anticipation, le « robot », lui — inter­ préteur ou compilateur —, se contente de n’exécuter strictement que ce que l’auteur du pro­ gramme aura explicité. La plus grande rigueur s’impose donc. Cette exigence requise dans la programmation, dont la pratique est encore toute nouvelle pour les collégiens et les lycéens, ne peut que leur être à terme bénéfique dans les autres apprentissages. Certes, les environnements modernes de développement logiciel (le « Rapid Application Development» dans la terminologie anglo-saxonne) foisonnent de dispositifs d’assistance au programmeur, dans les outils employés. Mais il y a surtout, depuis quelques années, la pro­ grammation modulaire et la conception objet, qui permettent de segmenter de gigantesques projets pour une réalisation commune, partagée par des centaines d’individus. Il n’en de­ meure pas moins que les phases d’écriture perdurent, qui plus est avec des langages de pro­ grammation qui sont en ce début de troisième millénaire plus de deux mille, alors que cette activité a réellement pris son essor un peu avant la Seconde Guerre mondiale. Si la programmation se sert de l’algorithmique pour être efficace, elle doit aussi être en mesure de fournir en plus des programmes à la fois lisibles, facilement utilisables et modi­ fiables par d’autres utilisateurs. Depuis FORTRAN (1956), langage qui laissait l’utilisateur très proche de la machine, les langages ne cessent d’évoluer vers un plus « haut niveau », à savoir, deviennent toujours plus accessibles. ■a O c Par exemple, voici trois routines (la première fonction est exprimée en langage C, la se­ D Q conde en langage CaML, la troisième en langage Python) calculant la factorielle d’un entier Ю tH naturel n : O ГМ @ factorielle.c factorielle.m l x: DI long factorielle(long n) { let rec factorielle = function >- long résultat = 1; I 0 -> 1 QO. U unsigned long i; I n -> n*factorielle(n-l); ; if (n < 0) return -1; factorielle.py for (i = 1; i < n+1; ++i] résultat *= i; def factorielle(n): return résultat; if n > 0: return n*factorielle(n-l) } else: return 1 VIII Programmation en Python pour les mathématiques Hormis le fait que la version C soit écrite dans un style itératif là où le langage CaML est redoutablement efficace en ce qui concerne la récursivité, quel est le langage de plus haut niveau?... En mathématiques, les langages de haut niveau basés sur un formalisme logique nous intéressent au plus haut point car ils ont cette rigueur qui sied à notre discipline et sont en même temps moins parasités par les détails technologiques des langages trop près de la ma­ chine ou trop lâches logiquement parlant. Cependant, les langages comme le C sont largement employés (car ils sont liés aux sys­ tèmes UNIX), tout comme la programmation objet, si prisée pour la réalisation des interfaces homme/machine des programmes industriels. C’est pourquoi nous avons choisi le langage Python. Il a fait ses preuves en tant que lan­ gage orienté objet, tout en permettant également une programmation impérative et récursive. Python présente une syntaxe claire et reste particulièrement abordable pour les débutants, tout en offrant des constructions de haut niveau. Les langages cités ici sont, parmi d’autres non moins importants, largement répandus et développés par des équipes à la pointe de la recherche informatique. Ils ont été pensés, amé­ liorés depuis des années et évitent les écueils de certaines interfaces prétendument simples à manipuler mais qui peuvent cacher de nombreux vices et ne déboucheront sur aucune utili­ sation en dehors du lycée. Comme on continue à faire des mathématiques et à calculer avec un papier et un crayon, de même on préférera un contexte de programmation le plus sobre possible, dépouillé de tout ce qui est inutile et qui nuit à la réflexion. Un éditeur de texte simple (et non un logiciel de traitement de texte) fait amplement l’affaire, accompagné d’une console (*N*X de préférence) pour l’interprétation ou la compilation, puis l’exécution d’un programme. Il s’agit vraiment de se concentrer sur l’essentiel, et nous voyons les élèves accepter ce travail, dans la mesure où la récompense est immédiate : soit le programme fonctionne, soit il ne fonctionne pas, ou bien il effectue autre chose que ce que son auteur prévoyait. Aucune autre récompense n’est visée que la satisfaction intellectuelle propre à l’apprentissage. Or c’est là une priorité de l’école. "O O c =3 Q C o m m e n t u tilis e r c e liv re ? 'JD rH O (N Le présent ouvrage vise deux objectifs : introduire la programmation en Python et ap­ pliquer les notions ainsi acquises aux mathématiques. xz DI Après un premier chapitre présentant les fondamentaux du langage Python, un deuxième >- chapitre aborde la notion de module. D’une part, il est expliqué comment programmer un QO. U module personnel ; d’autre part, on présente quelques-uns des très nombreux modules four­ nis par défaut avec Python ^ En ce qui concerne les modules de tierces parties les plus connus des scientifiques (NumPy et SciPy pour le calcul numérique, M atplotlib pour les gra­ phiques, SymPy pour le calcul formel), nous ne les mentionnerons que sommairement ici ou 1. Nous n’aborderons pas les modules permettant de manipuler des bases de données SQL avec Python. Le lecteur intéressé par ce sujet pourra, par exemple, consulter le chapitre 16 de l’ouvrage [SwilO] dont une version électronique est librement téléchargeable sur le site de son auteur. Avant-propos IX là : en effet, leur présentation détaillée dépasse largement le cadre de cet ouvrage. En outre, pour le tracé des fonctions, nous avons fait le choix de développer, à titre pédagogique, un petit module permettant de générer un graphique au format PostScript à partir d’une liste de points à tracer. Le chapitre suivant se propose de présenter une liste variée d’algorithmes mathéma­ tiques programmés le plus simplement possible en Python : sont illustrés plusieurs algo­ rithmes d’arithmétique (algorithme d’EuCLiDE, tests de primalité, etc.), de cryptographie (chif­ frement de Hill, de Vigenère, système RSA, etc.), les problématiques d’approximation dé­ cimale (calcul des premières décimales de я par les méthodes de Nicolas de Cues, de John Machin, de Brent et Salamin, etc.), des problèmes de probabilités et de théorie des graphes. Ensuite, sont passées en revue les méthodes classiques d’analyse numérique : résolution d’équations diverses, d’équations différentielles ordinaires, de dérivation et d’intégration nu­ mériques. Les deux derniers chapitres sont davantage tournés vers l’algorithmique. Après avoir traité de la notion de récursivité, le dernier chapitre prend comme fil conducteur plusieurs implémentations d’un petit calculateur formel : sont abordées quelques structures de don­ nées classiques (arbres, graphes, piles, queues, etc.) et la conception orientée objet, dont un objectif est d’obtenir, au moyen de l’abstraction, une bonne modularité, si utile pour les grands projets. Certains programmes un peu trop longs pour figurer sur la version papier sont dispo­ nibles dans une archive, qui contient en outre l’ensemble de ceux du livre, et que l’on peut télécharger sur la page du site www. dunod. corn consacrée à cet ouvrage. Les notions exposées dans cet ouvrage sont illustrées par des exercices répartis au long de chaque chapitre. De plus, en fin de chapitre sont regroupés des exercices d’entraînement dont les corrigés sont disponibles sur le site dunod.com à partir de la page d’accueil de l’ou­ vrage. L’ouvrage s’adresse notamment aux professeurs de mathématiques au lycée. Ils pourront vérifier que l’utilisation du langage Python est un très bon choix pour l’enseignement de l’al­ gorithmique inscrit dans les nouveaux programmes de mathématiques. Les élèves du lycée •a O c et les étudiants de licence et des classes préparatoires pourront également trouver ici de quoi û13 stimuler leur apprentissage de la programmation. O Aucune notion en informatique n’est requise pour entreprendre la lecture de cet ouvrage. rsl (y) CT C o n v e n tio n s p o u r la p ré s e n ta tio n d u c o d e >. COL U Pour l’écriture du code, vous rencontrerez plusieurs présentations : - les instructions précédées de chevrons dans une boîte grisée sont à saisir dans une ses­ sion interactive ; »> 1 1 2 Programmation en Python pour les mathématiques les instructions sans chevrons dans une boîte grisée sont des bouts de code à écrire dans un fichier ; print('Bonjour !') les instructions dans une boîte grisée avec un filet sombre à gauche et un nom de fichier en italique au-dessus de la boîte sont des extraits d’un fichier se trouvant dans l’archive téléchargeable sur le site de l’éditeur; dans ce cas, si le résultat de l’exécution du script est présentée, elle apparaît immédiatement après le script sur fond blanc ; fichier, py #!/usr/bin/python3 #-*- coding: Utf-8 print('Voici le résultat.') Voici le résultat. deux traits horizontaux délimitent une session dans un terminal Unix : ----------------------------------------------------- [ Terminal | ---------------------------------------- $ pythons fichier.py Voici le résultat. $ pythons Python S.l.S (rSlS:868S4, Nov 28 2010, 11:28:10) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information » > 1 + 1 2 R e m e rc ie m e n ts Nous tenons à remercier vivement tous ceux qui ont relu le manuscrit de cet ouvrage : ■O Alain BUSSER, Stéphane Grognet, Hubert H. HUPKES, Gérard KUNTZ, François Panttgny et O Aymar DE SAINT-SEINE. c =3 Cl Nous remercions également nos étudiants et élèves pour avoir servi de « cobayes » et yo proposé des améliorations de nos programmes. 1—1 O r\l Enfin, nous remercions vivement Jean-Pierre Demailly qui a accepté de préfacer cet ou­ vrage. 03 ‘s_ >. COL U

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.