Alexandre Casamayou-Boucau Pascal Chauvin Guillaume Connan
Programmation e n Python p o u r l e s mathématiques C o u r s e t e x e r c ic ic e s
TJ
O c rj û ЮtH ГOМ
2^ édition
x: gi
>O Q.
U
DUNOD
nseignement supé supéririeur, eur, provoquant provoquant une Le pictogramme qui qui figure ci-contre ci-contre d'enseignem baisse or orutale de des ac achats de de liv livres et et de de mérite érite une explicati explication. on. Son objet est ba possibilitéé même pour d'alert lerter er le lecteu lecteurr sur la menace menace que que revues, au point que la possibilit les auteurs de créer des des œuvres représente pour l'avenir de l'écrit, nouv no uvelles elles et de les faire éditer éditer cor pa particulièrement dans le domaine DANGER rectementestaujourd' aujourd'hui menacée. de l'édition technique et universi No Nous ra rappelon lons donc que toute taire, taire, le développement massif massif du reproduction, reproduction, partiell partiellee ou ou totale, ph photocopillage. de la présente publication est Le Code Code de la propriété propriété intellec tuelle tuelle du 1®"^juillet juillet 1992 inter interdit dit LEPHOTOCOPILLAGE inter nterdi ditte san sanss aut autor oriisati ation de de l'auteur,r, de de son son éditeur éditeur ou du en effet expressément la photoco TUE LEU y ^ l'auteu Centre français d'exploitation xploitation du pie pie à us usage collectif sans autor tori sation des ayants ayants droit. Or, cette pratique pratique droit de copie (CFC, 20, rue des s'est généralisée dans les établissements Grands-Augustins, 75006 Paris). ___ ___
© D unod un od , 2012 2012,, 2016 2016 •a
O c13 Q CD
rOsi gi >Q. O
U
5 rue Larom L arom iguière, 7500 750055 Paris www.dunod.com ISBN 978-2-10-074476-3 978-2-10-074476-3 Le Code de la propriété intellectuelle n'autorisant, aux termes de l'article L. 122-5, 2° et 3° a), d'une d' une part, part, que les «copies «copies ou reproductions strictemen strictementt réservées à l'usage privé du copiste et non destinées à une utilisation collective » et, d'autre part, que les analyses et les courtes citations dans un but d'exemple et d'illustration, llustration, « toute représentation ou reproduction intégrale ou ou partielle faite sans le consentement de l'auteur ou de ses ayants droit ou ayants cause est illi illicite cite » (art. (art. L. 122-4). 122-4). Cette représentation ou reproduction, par quelque procédé que ce soit, constitue rait rait donc une une contrefaçon sanct sanctionnée ionnée par par les article articless L. 335-2 et suivants suivants du 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 C onn an et Pascal Chauvin on t réussi une diffic difficile ile synthè se : celle celle de prése nte r une introd uctio n claire au langage pro pre m en t dit, dit, tout en ex plicitant ses ses liens profon ds avec l’al l’al gorithmique gorithmique m athé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 pro p ro g ra m m a tio ti o n , e t d e fa ç o n é m in e n te c eu x p o u v a n t in té re s s e r l’ l ’a lg o rith ri thm m iq u e. 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 niqu e d ’un e a utom obile, et le fait fait de sim plem ent savoir la cond uire ! Le fait fait que P ython est entièrement en source libre et très utilisé dans l’industrie garantit en outre son accessibilité, sa pére nn ité et son évolutivité évolutivité dans le tem ps ; ce n’est n’est pas n éces sairem ent le cas des logici logiciels els pro p ro p rié ri é ta ire ir e s qui, qu i, p o u r c e tte tt e rais ra isoo n , n e s a u r a ie n t être êt re re c o m m a n d é s a u m ê m e titr ti tree p o u r des de s pro p ro g ra m m e s d ’e n s e ig n e m e n t. L’ouvrage ouvrage devrait conduire le lecteur lecteur à app rofondir bea ucou p sa connaissance des prin cipes cipes de la la programm ation et sa compréhension des algori algorithmes thmes ma thématiques fond am en taux. Il est construit à partir d’exemples nombreux et très riches qui en rendent la lecture attrayante. C eux-ci eux-ci devraient aussi gran de m ent faciliter faciliter la tâch e des ense ignan ts qui l’utilise l’utilise ront, de puis le lycée lycée jusq u’aux u’aux classes prépa ratoires et à l’université. l’université. Sain t-M artin d ’Hères, le 5 oct obr e 2011, 2011, •a
O c13 Q y£> rO\i ai >. CL O
‘s_ ‘s_ U
Jean-Pierre Dem ailly ailly Professeur à l’Université de Grenoble I M embre de l’Académ l’Académ ie des Sciences
"О
о с гз
Û »X) 1-Н о rsj х:
ст >. о .
о
и
Table des matières Avant-propos
vü
1 Introduction Introduc tion au langage langage Python 1 Pour Pourqu quoi oi Python ? ................................................ ........................................................................ ................................................ ................................................ .................................. .......... 2 Avant de commence commencer........ r................ ............... ................ ................. ............... ................ ................. ............... ................ ................. ............... ............... ................. ................ ............... .......... 3 Utiliser Utiliser Python com comme une calcu ca lculett lette................................. e......................................................... ................................................ ................................... ........... 4 Variable Variabless et affec af fecta tatio tions ns........................ ................................................... ................................................... ................................................ ............................................. ..................... 5 Fonctio Fonctions ns ................................................ ........................................................................ ................................................ ................................................ ................................................ ........................... ... 6 Instructions d’écriture et de lecture lecture ................ ........ ................. ................ ............... ................ ................ ................ ................ ................ ................ ............... ......... 7 La structure conditionn conditionnelle elle ................ ........ ............... ................ ................. ............... ................ ................. ............... ............... ................. ................ ............... ................. ........... 8 Les Les bouc boucles les w hile hi le ................................................ ........................................................................... ................................................... ................................................ ............................... ....... 9 Les Les liliss te s ................................................ ........................................................................ ................................................... ................................................... ................................................ ........................... ... 10 Les Les bouc boucle less f o r ................................................... ........................................................................... ................................................ ................................................ ...................................... .............. 11 Récapitulatif Récapitu latif sur les les principaux principaux types ................ ....... ................ ............... ................ ................ ................ ................ ................ ................ ................ ............. ..... 12 Quelq Quelque uess mots ots sur sur la réc ré c u rsiv rs ivitité............................................. é..................................................................... ................................................ ................................. ......... 13 Quelq Quelques ues méthod éthodes es pour pour trier une l i s t e ................ ........ ............... ................ ................. ............... ................ ................. ............... ................ ................. .......... 14 Quelq Quelques ues primitives primitives usuell usu elles. es.......... ................ ............... ................. .................. ................ ............... ................. ................ ............... ................. ................ ............... ............... ....... 15 Un mot sur sur les les except exc eption ions.............................. s......................................................... ................................................... ................................................ ................................... ........... 16 Comp Complém lémen ents ts sur les les fo n c tio ti o n s..................................................................... s............................................................................................. ..................................... ............. 17 Notio Notions ns sur sur les les c la s s e s ................................................ ........................................................................ ................................................ ................................................... ........................... 18 Exercices Exercices d’entraîne d’entraîneme ment nt ................................................ ........................................................................ ................................................ ............................................ ....................
1 1 2 2 3 6 10 14 18 20 28 31 33 35 37 40 41 43 49
2 Modules 1 Structure d’un d’un modu mo dule....................................... le............................................................... ................................................... ................................................... ................................. ......... 2 Quelques modules modules « Batter Bat teries ies included » 3 Lire et écrire dans dans un fichier ................ ........ ............... ............... ................. ................ ............... ................. ................ ............... ................. .................. ................ ............ ..... 4 Manip Manipula ulatio tionn de fichiers fichiers C S V ................................................ ........................................................................ ................................................ ..................................... ............. 5 Comme Comment nt géné génére rerr des des graphi graphique quess ? .............. ....... ................ ................. ............... ................ ................. ............... ............... ................. ................ ............... ............. ..... 6 Un coup coup d’œil vers le module odule M a t p io t lilib b 7 Exercices Exercices d’entraîn d’entraînem emen entt ....................................... ............................................................... ................................................ ................................................ ............................. .....
51 51 53 64 68 70 74 75
3 Thèmes mathématiques 1 M a tric tr icee s ............................................. ........................................................................ ................................................... ................................................ ................................................ .............................. ...... 2 Les nom nombres bres : entre entre analyse analyse et algèb algèbre re ................ ....... ................ ............... ................. ................ ............... ................ ................ ................ ................ ............ 3 Le nombre j t ................................................ ........................................................................ ................................................ ................................................ ............................................... ....................... 4 Prob Pr ob a bilit bi lités és........................... ................................................... ................................................ ................................................ ................................................ ............................................. ..................... 5 Relation Relationss binair binaires es et g ra p h es ................................................... ........................................................................... ................................................ .................................. ..........
77 78 112
4 Méthodes numériques 1 Les nom nombres bres en notatio notationn scientifiq scien tifique.... ue............ ................ ................ ............... ................ ................. ............... ................ ................. ............... ............... ............. ..... 2 Résolut Résolution ion d’équations d’équations non liliné néai aire res.. s........... ................. ............... ................ ................. ............... ................ ................. ............... ............... ................. .............. ..... 3 Résolut Résolution ion numériq numérique ue d’équations d’équations différ dif féren entie tielle lles.... s........... ............... ................ ................ ................ ................ ................ ................ ............. ..... 4 Interpo Interpolati lation on polyno pol ynomi miale ale
179 180 182 186 199
...................................................... .......................... ...................................................... ............................... .....
■Oa c3 Cl
tH
O (N
(y) (y)
ai >CL O
U
.............................................. ...................... ................................................ ....................................... ...............
149
163 170
Programmation en Python pour les mathématiques
VI
6 7
Intég Intégrat ration ion numé nu mériq rique ue........................... ............................................................ ............................................................... ............................................................ ..................................... ....... 205 Exercices Exercices d’entraîn d’entraînem ement ent ...................................................... .................................................................................... ............................................................ ..................................... .......2216
Récursivité 217 1 Quelq Quelque uess exem ex em ples.......................................... ple s........................................................................ ............................................................... ..............................................................21 .............................2177 2 Spirale Spirale de pent pe ntag agon ones...................................................... es.................................................................................... ............................................................... ........................................... .......... 225 3 Courbe Courbe du drag dragon on ............... ........ ............... ................ ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............. ...... 226 226 Triangle Triang le de S i e r p i n s k y ............................................................................................................. .................... 2 28 4 5 Sommes de termes termes d’une d’ unesuite suite géom géométriq étrique ue ........... .... ............... ............... ............... ............... ............... ............... ............... ............... ............... .............. ......23 2322 6 Exercices Exercices d’entraîn d’entraînem ement ent ...................................................... .................................................................................... ............................................................ ..................................... .......2233 Classes 236 1 Graph Graphes es ......................................................... ....................................................................................... ............................................................ ............................................................ ......................................2 ........2338 2 Représe Représentat ntation ion des des nombres........ nombres ................ ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ........... .... 243 243 3 L is te s ............................................................ .......................................................................................... ............................................................ ............................................................ ......................................... ........... 257 257 Arbres Arbres binaire binairess ......................................................... .......................................................................................... ............................................................... ...................................................26 .....................2666 4 5 Calculateur Calculateur ............................................................ .......................................................................................... ............................................................ ..........................................................2 ............................2775 6 Polynôm Polynômes es et fractions rationnell rati onnelles..... es............. ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ........ 291 7 Exercices Exercices d’entraîn d’entraînem ement ent ...................................................... .................................................................................... ............................................................ ..................................... .......3300
TJ
O c rj û «tJH D O CM (y) (y)
X I
OJ >Q. O
U
Bibliographie
302
Index général
305
Index des commandes
309
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 m ent pa r récriture de son code source. C’est C’est cet aspect-là aspect-là de la program ma tion qui nous in téresse tout particulièrement. Véritable activité de rédaction en soi, si fréquente dans les ap pre p renn tis ti s sa g e s, c’es t p a r c e tte tt e p h a s e j u s te m e n t — q u i p e u t ê tre tr e la b o rie ri e u se m ais ai s au ss i te lle ll e m e n t gratifiante —, que l’on l’on o btie nt le résultat désiré. 11nou 11nou s sem ble im po rtan t d’en d’en con vaincre les élèves. Tout le travai travaill consiste à analyser un problèm e et à décrire un moyen d ’obten ir une so lution. Dépourvu de toute capacité de déduction ou d’anticipation, le « robot », lui — inter pr p r é te u r o u c o m p ila il a te u r — , se c o n te n te de n ’e x é c u te r s tr ic te m e n t q u e ce q ue l’au l’a u te u r d u p r o gram me aura explicité. explicité. La La plus gran de rigue ur s’imp s’imp ose d onc. Cette exigence requise d ans la pro p ro g ra m m a tio ti o n , d o n t la p ra ti q u e e st e n c o re to u te n ou v elle el le p o u r les co llé gien gi enss et les lycé ly céen ens, s, ne pe ut que leur être à terme bénéfique d ans les autres autres apprentissages. Certes, les environnements modernes de développement logiciel (le « Ra R a p id A p p lic li c a tio ti o n D e ve lo p m e n t» dans la terminologie anglo-saxonne) foisonnent de dispositifs d’assistance au pro p ro g ra m m e u r, d a n s les le s ou tils ti ls em ploy pl oy és . M ais il y a s u rto rt o u t, d e p u is q u e lq u e s a n n é e s , la p r o gram m ation modulaire et la la conc eption objet, objet, qui perm ettent de segm enter de gigantesques pro p ro je ts p o u r u n e ré a lisa li sa tio ti o n c o m m u n e , p a rta rt a g é e p a r d e s c e n ta in e s d ’indi in divi vidu du s. Il n ’e n d e me ure pas m oins que les phases d ’écriture écriture perdu rent, qui plus est avec avec des langages langages de pro gram m ation qui son t en ce dé bu t de troisième troisième millénaire millénaire plus de deux mille mille,, alors alors que cette activit activitéé a réellemen t pris pris son essor un peu avant la Seconde Guerre Guerre mondiale. Si la prog ram m ation se sert de l’algorithm l’algorithm ique p ou r être effica efficace, ce, elle elle doit aussi être en mesure de fournir en plus des programmes à la fois lisibles, facilement utilisables et modi fiables par d ’autre s utilisa teurs . Dep uis FORT FORTRA RAN N (1956), (1956), langage q ui laissait l’utilis l’utilis ate ur très pro p ro c h e d e la m a c h in e , les le s lan l an ga g es n e c e s s e n t d ’é v o lue lu e r ve rs u n p lu s « h a u t n iv e a u », à savoir sav oir,, devienn ent toujou rs plus accessibles accessibles.. a O c D Q ЮtH O ГМ
@ x:
DI >Q. O U
Par exemple, voici voici trois routines (la (la prem ière fonc tion es t exprimée en langage C, la se conde en langage CaML, la troisième en langage Python) calculan t la factoriel factorielle le d ’un entier naturel n : factorielle.c
long factorielle(long n) { long long r é su lta t = 1; unsigned long i; i f (n < 0) return -1; fo r ( i = 1; i < n+1; n+1; ++i] résultat *= i; return résultat;
f a c t o r i e ll l l e .m .m l
le t rec fa c to rie lle = functi function on
I 0 -> -> 1
I n -> n * fa c to rie lle (n -l) ; ; factorielle.py
def factorielle(n): if n > 0: return return n* fa ct o rie lle(n -l)
Programmation en Python pour les mathématiques
VIII
Horm is le fait fait que la version C soit soit écrite da ns un style style itératif là où le langage CaML 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 ha ut p oint car ils ils ont cette rigueur qui sied à notre disciplin disciplinee et so nt en m êm e tem ps m oins parasités par les les détail détailss technologiques des langages langages trop près de la la ma chine ou trop lâches logiquem logiquem ent parlant. Cependant, les langages comme le C sont largement employés (car ils sont liés aux sys tèm es UNIX UNIX)), tout com m e la prog ram m ation objet, si prisée po ur la réalisation des interfaces hom m e/m achine des programmes industr industriel iels. s. C’est C’est pour qu oi nou s avons cho isi le langage Python. Il a fait fait ses preuves en tan t que lan gage gage orienté objet, objet, tout en pe rm ettan t égalem ent une p rogram m ation impérative et récursi récursive. ve. p ré s e n te u n e s yn taxe ta xe clai cl aire re e t re ste st e p a rtic rt ic u liè li è re m e n t a b o rd a b le p o u r les le s d é b u ta n ts , Python pré tout en offrant des des constructions de hau t niveau. niveau. Les Les langages langages cités cités ici ici sont, parmi d ’autres no n m oins im portants, largem ent répan dus et développés par des équipes à la pointe de la recherche informatique. Ils Ils on t été pensés, am é liorés liorés depuis des an nées et évitent les les écueils écueils de certaines interfaces préte nd um ent simples à m anipuler mais qui peuvent cacher de nom breux vice vicess et ne débouch eront sur aucune utili utili sation e n deh ors d u lycée lycée..
"O O c
Comm e on co ntinue à fair fairee des m athém atiques et à calculer calculer avec avec un papier et un crayon, de m êm e on préférera un contexte de program m ation le plus sobre possibl possible, e, dépouillé dépouillé de tout ce qui est inutile et qui nuit à la réflexion. Un éditeur de texte simple (et non un logiciel de traite m en t de texte) texte) fait am ple m ent l’aff l’affair aire, e, acco m pag né d’un d’un e c onsole (*N*X de préférence) po p o u r l’inte l’in te r p ré ta ti o n o u la c o m p ila il a tio ti o n , p u is l’ex é c u tio ti o n d ’u n p ro g ra m m e . Il s’ s ’ag it v ra im e n t de se co nce ntre r sur l’essentiel, l’essentiel, et nou s voyons les élèves élèves acce pter ce travail travail,, dans la mesu re où la récompense est immédiate : soit le programme fonctionne, soit il ne fonctionne pas, ou bien il effect effectue ue autre ch ose que ce que son au teur prévoyait prévoyait.. Aucune autre récom pense n’est n’est visée que la satisfaction intellectuelle p ropre à l’appre l’appre ntissage. Or c’est c’est là une p riorité de l’école.
=3
Q
'JD
rH
O (N
xz
DI >Q. O
U
C o m m e n t u t ilis e r c e l iv re ? Le présent ouvrage vise deux objectifs : introduire la programmation en Python et ap pli p liqq u e r les l es n o tio ti o n s a insi in si a c q u ise is e s au x m a th é m a ti q u e s . Après Après un premier chapitre présentan t les les fondam entaux du langag langagee Python, un deuxième deuxième chapitre aborde la notion de module. D’une part, il est expliqué comment programmer un m odule perso nnel ; d’autre d’autre part, on présen te que lques-uns des très très nom breux modu les four nis par défaut avec Python ^ En ce ce qui concerne les mo dules de tierces tierces parties parties les les plus plus connu s des scientifiques scientifiques (NumPy e t SciPy po p o u r le c alcu al cu l nu n u m é ri q u e , M a t p l o t l i b p o u r les le s g ra ph p h iq u e s, SymPy po p o u r le ca lcul lc ul form fo rm el), el ), n o u s n e les le s m e n ti o n n e ro n s q u e s o m m a ir e m e n t ici ic i o u 1.
Nous Nou s n’ab n’abor orde dero rons ns pas p as les mod m odule uless pe rm etta et tant nt de d e ma nipu ni pule lerr des base b asess de don d on nées né es SQL avec Python. Le lecteur