Programmation Scientifique avec Python
(légèrement modifié par F.Faure)
23 octobre 2016
Table des matières
I Base de Python 3
1 Introduction 3
2 Installation de Python 4
3 Programmer avec Python 4
3.1 Ligne de Commande ou éditeur ? . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Documentation ................................... 5
3.2.1 Aideenligne................................ 5
3.2.2 Livres.................................... 5
3.3 Environnement de programmation . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.4 Variables et types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4.1 Variablessimples.............................. 6
3.4.2 Opérations:................................. 7
3.4.3 Nombrescomplexes ............................ 7
3.4.4 Chaînesdecaractères............................ 8
3.4.5 Listes.................................... 9
3.4.6 Vecteursdenombres ............................ 10
3.4.7 Matrices de nombresimporter le m . . . . . . . . . . . . . . . . . . . . . 10
3.4.8 Tuple [Facultatif] ............................. 11
3.4.9 Dictionnaires [Facultatif] ......................... 11
3.4.10 Conversion de variables entre différents types . . . . . . . . . . . . . . . 12
3.5 Bouclesetopérateurs................................ 12
3.5.1 opérateurs , , ........................ 12
3.5.2 L’instruction . . . . . . . . . . . . . . . . . . . . . . 13
3.5.3 Laboucle .............................. 14
3.5.4 Lesboucles .............................. 14
1
3.5.5 Exercice : la conjecture de Syracuse . . . . . . . . . . . . . . . . . . . . 15
3.6 Fonctions ...................................... 15
3.7 Portée des objets : variables locales et globales . . . . . . . . . . . . . . . . . . 16
3.8 Exercice....................................... 17
4 Classes et Objets 17
4.1 Présentation..................................... 17
4.2 Exemple....................................... 18
4.3 Variablesmembre.................................. 18
4.4 Fonctionsmembres ................................. 19
4.5 Fonctions membres spéciales [Facultatif] ..................... 20
4.5.1 Constructeur .......................... 20
4.5.2 Destructeur ............................ 20
4.5.3 Opérateurs , , , , . . . . . . 20
4.6 Héritage [Facultatif] ................................ 21
4.7 Attention : opérateur “==”, différence entre égalité et identité, copie et réfé-
rence... [Facultatif] ................................. 21
4.8 Exercice....................................... 22
5 Lecture et écriture de fichiers 23
5.1 Exercice....................................... 24
II Modules scientifiques 24
6 Utilisation de “modules” (standards et librairies extérieures) 24
6.1 math......................................... 24
6.2 Scipy (scientific python, http ://www.scipy.org) . . . . . . . . . . . . . . . . . . 25
6.2.1 Exemples.................................. 25
6.2.2 Sous-modules de scipy . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.2.3 Extensions ou applications de scipy . . . . . . . . . . . . . . . . . . . . 27
6.3 Tracé de données scientifiques (1D, 2D) avec matplotlib/pylab . . . . . . . . . . 27
6.3.1 Courbe1D ................................. 27
6.3.2 Courbe2D ................................. 28
6.4 Autres modules scientifiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7 Performance et interface C/C++ <-> Python [Facultatif] 29
7.1 Performance : C/C++ vs Python . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.1.1 Utilisation de scipy.weave . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.2 Interface C/C++ <-> Python avec SWIG . . . . . . . . . . . . . . . . . . . . . . 31
2
8 Fenêtres et graphiques avec wxPython 32
8.1 Animation : corde pendante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.2 Animationetcalcul................................. 34
Première partie
Base de Python
1 Introduction
Il existe déjà un grand nombre de langages utilisés pour le calcul scientifique (C/C++/fortran),
stabilisés et développés depuis de nombreuses années. Pourquoi développer (et donc apprendre !)
un nouveau langage ? Il s’avère que les langages traditionnels sont soit inadaptés à une utilisa-
tion généraliste (calculs et création d’un interface graphique - ex : fortran), ou ont une syntaxe
suffisamment complexe ou rigide pour rendre difficile son utilisation par un utilisateur occasion-
nel (c++). C’est ce qui a permis le succès de logiciels commerciaux spécialisés dans le calcul
(Mathematica, Maple, Mathlab,...), et de langages (IDL,...), qui associent une syntaxe relative-
ment simple avec des fonctionnalités (représentation graphique, librairies de calcul) étendues, et
utilisables directement à partir d’une ligne de commande (sans compilation préalable).
C’est pour pallier ce manque que le langage Python (http ://www.python.org) a été développé.
Il présente de multiples avantages par rapport aux langages traditionnels :
naturel (utilisation de l’indentation, typage dynamique)
utilisable en ligne de commande (donc interactif )
moderne (orienté objet)
extensible (modules externes de calcul et de visualisation écrites en C/C++/fortran)
très utilisé pour le calcul scientifique (grâce à la réutilisation de librairies de calculs déjà
existantes)
libre (“open-source”) et multi-plateforme (Linux, windows, MacOS,...)
Python est un langage compilé “au dernier moment”, et donc plus lent qu’un langage compilé
(fortran/c/c++). Ce n’est en fait pas un inconvénient, car chaque fois qu’un calcul “intensif” est
nécessaire, il est possible de l’effectuer dans un module externe écrit dans un autre langage, plus
efficace. En général seule une petite partie d’un programme a besoin d’être vraiment optimisée
(en général moins de 5% du code représente 95% du temps de calcul !).
En outre, il s’avère que l’on passe souvent plus de temps à écrire un programme qu’à l’utili-
ser, ce qui relativise l’importance de la “performance pure” du programme. L’intérêt de python
est justement d’accélérer le développement d’un programme par sa syntaxe simple, et par sa ca-
pacité à réutiliser des librairies existantes.
Les différences fondamentales par rapport au C++ avec lesquelles il faut se familiariser
3
sont :
C’est un langage interprété (en fait, “compilé au dernier moment”), utilisable avec une
ligne de commande
Les “blocs” de code (ex : intérieur d’une boucle) sont identifiés par l’indentation (nombre
d’espaces en début de ligne), et non par des acollades {...}
Le type des objets (’int’, ’float’, ’string’) est dynamique, ç.à.d. qu’il n’a pas besoin d’être
déclaré à l’avance et qu’il peut être modifié au cours du programme.
2 Installation de Python
Sous Linux : Python est installé sur toutes les distributions, en standard - il est par contre
nécessaire d’ajouter des modules tels que SciPy et matplotlib, suivant le type de programme
souhaité.
Sous Windows : la distribution standard de python est disponible sur http ://www.python.org,
mais il est recommandé d’installer la version de python de la société Enthought (Enthought Py-
thon = Enthon), qui inclut les modules de calculs scientifique les plus utiles http ://code.enthought.com/enthon/.
3 Programmer avec Python
3.1 Ligne de Commande ou éditeur ?
Python peut être utilisé à partir d’une ligne de commande (langage interprété). Pour lancer
l’interpréteur, taper “ ” dans une console linux, puis à l’invite de commande (“ ”), taper
”. Cela donne
Dans un autre langage, il aurait fallu écrire le texte du programme dans un fichier, puis le com-
piler avant de l’éxécuter. En fait il est également possible d’écrire le programme dans un fichier.
Pour cela ouvrir un éditeur de texte (par exemple kwrite,nedit ou kate), écrire le programme
( ), et le sauvegarder sous le nom toto.py. Ensuite, éxécuter le programme avec la
commande “ ” à partir d’une console Linux (il est également possible d’utiliser
” afin de rester dans l’interpréteur après éxécution du programma). De
fait, écrire un programme sur la ligne de commande ou le taper au préalable dans un fichier avant
de l’exécuter est rigoureusement équivalent.
Pour l’utilisation en ligne de commande, il est encore plus avantageux d’utiliser ipython :
” - c’est une version plus interactive de python, qui se souvient des instruc-
tions tapées lors de la dernière session ipython (utiliser les flèches haute et basse pour naviguer
4
dans l’historique des commandes), et qui sait “compléter” les commandes (pour utiliser une fonc-
tion ou un objet, taper le début du nom et appuyer sur la touche tabulation - le nom sera complété
ou différents choix seront proposés).
Voilà ! Vous savez programmer en Python. Dans la pratique, les tests rapides sont faits avec
la ligne de commande, et les programmes longs sont écrits dans un fichier avant d’être exécutés.
Remarques :
pour sortir de l’interpréteur Python, taper
le symbole # sert à commencer un commentaire en python. Tout ce qui se trouve sur une
ligne après un # n’est pas interprété par python :
pour éxécuter des commandes dans un fichier texte depuis l’interpréteur python, il faut
utiliser la fonction (e.g. )
pour pouvoir utiliser des accents dans Python, il faut préciser l’encodage que nous utili-
sons, en mettant au début du fichier python la ligne suivante :
3.2 Documentation
3.2.1 Aide en ligne
Tous les objets standards (de même que les modules correctement conçus) possèdent une aide
en ligne, qui peut ête invoquée avec la fonction . Par exemple ,
permettent d’accéder à l’aide sur les chaînes de caractère et sur les listes. Lorsqu’un module
est importé (e.g. ’ ’), il est possible de lire l’aide correspondant à ce module (e.g.
’) ou à une fonction de ce module (e.g. ’ ’).
Lorsque ipython est utilisé, c’est encore plus simple, il suffit de taper la commande sui-
vie de un ou deux points d’interrogations (suivant le détail de la documentation souhaitée), par
exemple :
3.2.2 Livres
Un tutorial sur le web (et autres documents) :
http ://www.python.org/
3.3 Environnement de programmation
En anglais : Integrated Development Environment (I.D.E.).
C’est un logiciel qui contient un éditeur afin d’écrire les commnades pythons, mais qui pro-
pose aussi beaucoup de fonctionnalités spécifiques à la programmation (recherche d’erreurs,...).
Il existe de nombreux IDE, nous recommandons par exemple : eric
5
1 / 35 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !