Cours D'informatique MPSI-05-2015 Python
Cours D'informatique MPSI-05-2015 Python
Informatique Générale
CM: 30 Heures
TD/TP: 30 Heures
Dr Lambert KADJO 1
[Link]
Informatique
Partie 1: ELÉMENTS D’ARCHITECTURE DES ORDINATEURS - REPRÉSENTATION DES NOMBRES
Chapitre 1 : INTRODUCTION
Partie 2: ALGORITHMIQUE
Chapitre 2 : INTRODUCTION AU LANGAGE DE DESCRIPTION D’ALGORITHME
Chapitre 3 : STRUCTURES DE DONNEES ELEMENTAIRES
Chapitre 4: SOUS-PROGRAMMES : PROCEDURES & FONCTONS
2
[Link]
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.1 Principales caractéristiques du
langage Python
Caractéristiques
Python est un langage de programmation impérative, structurée, orientée objet, de haut
niveau.
Python étant ainsi appelé en référence à la troupe de comiques britanniques Monty
Python, le nom IDLE pourrait être une référence à Eric Idle, un membre fondateur de la
troupe.
Il présente les avantages suivants :
Sa syntaxe est très simple et concise : "on code ce que l'on pense".
Proche du 'langage algorithmique'.
Moderne. Très largement répandu dans l'industrie, l'enseignement et la recherche, notamment
pour ses applications scientifiques. Une large communauté participe à son développement.
Puissant, muni de nombreuses bibliothèques de fonctions. Dont de très bonnes bibliothèques
scientifiques.
Pratique pour travailler sur des objets mathématiques. Assez proche du langage mathématique.
Multi paradigmes, supportant les principaux styles de programmation : impératif, procédural,
orienté objet...
Multi plateformes : GNU/Linux, Mac OS X, Windows...
Libre et gratuit : logiciel Open Source ([Link]) distribué sous la licence PSF (Python
Software Foundation) compatible avec la GPL (Gnu Public Licence).
Gratuit, disponible sur la plupart des plateformes (Windows, Mac, Linux, ...).
Python est dynamiquement typé.
Python est extensible : On peut l'interfacer avec d'autres langages (C, C++, Delphi, Java…) 3
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.1 Principales caractéristiques du
langage Python
Historique
1991 : Guido van Rossum travaille aux Pays-Bas sur le projet AMOEBA,
un système d’exploitation distribué. Il conçoit Python à partir du langage
ABC et publie la version 0.9.0 sur un forum Usenet
1996 : sortie de Numerical Python. Ce langage a été baptisé ainsi en hommage à la troupe
de comiques les « Monty Python ».
Quelques implémentations
Plusieurs implémentations existent :
5
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
Quelques implémentations
De nombreuses bibliothèques aident le développeur à travailler sur des projets particuliers.
Plusieurs bibliothèques peuvent ainsi être installées pour, par exemple :
développer des interfaces graphiques en Python.
écrire de petits programmes très simples, appelés scripts, chargés permettant
d’effectuer des tâches très précises sur l’ordinateur ;
écrire des programmes complets, comme des jeux, des suites bureautiques, des logiciels
multimédias, des clients de messagerie…
faire des projets très complexes, comme des progiciels (ensemble de plusieurs logiciels
pouvant fonctionner ensemble, principalement utilisés dans le monde professionnel).
6
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
Si, par exemple, vous avez installé Python 3.4, vous pouvez y accéder grâce à la commande :
Pour fermer la ligne de commande Python, n'utilisez pas CTRL + C mais CTRL + D.
9
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
10
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
11
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
12
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
Pour fermer l'interpréteur de commandes Python, vous pouvez tapez « exit() » puis appuyer sur la
touche Entrée. 13
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
15
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
Pour écrire des commentaires (utile dans l’écriture d’un script dans un éditeur de texte), il faut
commencer par le caractère #.
16
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
17
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
La commande (ou
fonction) 'print( )' écrit à
l’écran une chaine de
caractères (des caractères
entre apostrophes '...' ou
double-quotes "..." et des
nombres ou expressions
algébriques.
18
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
19
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 5: INTRODUCTION AU LANGAGE PYTHON 5.2 Environnements matériels et logiciel
20
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON
21
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.1 CALCULS, OPERATIONS
Opérateurs arithmétiques
Dans le tableau ci-après, sont présentés les symboles utilisés pour les opérations de base.
NB : Pour une version 2 de Python, la division de deux entiers se fera comme la division
entière.
22
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.1 CALCULS, OPERATIONS
Opérateurs logiques
Opérations Opérateurs Autres opérateurs
ET and
Opérations Opérateurs
OU or
même identité ? is
négation not
identité différente ? is not
ET bit à bit &
appartient à ? in
XOR bit à bit ˆ
n’appartient pas à ? not in
OR bit à bi |
complément à 2 ~ 23
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.2 Affectations
Affectations simples
Une affectation se fait en utilisant le signe =
On remarque au passage que, dans l’interpréteur interactif, taper juste var a le même effet
que print(var). Ce n’est pas le cas dans l’éditeur où l’on a besoin de la fonction print pour
afficher un résultat.
24
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.2 Affectations
Affectations multiples
Python permet les affectations multiples:
25
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.2 Affectations
Opérateurs équivalence
x += y x=x+y
x -= y x=x-y
x *= y x=x*y
x /= y x=x/y
x //= y x = x // y
x **= y x = x ** y
x %= y x=x%y
26
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.3 Entrée/sortie standard
27
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.3 Entrée/sortie standard
Syntaxe:
formats signification
.df d décimales, format flottant
.de d décimales, format scientifique
[Link] n caractères avec d décimales, format scientifique
s chaîne de caractères
d entier en base 10
g choisit le format le plus approprié
28
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.4 Entrée/sortie standard
29
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables
Noms de variables
Les noms les plus simples sont constitués de lettres, majuscules ou non, mais attention
cela définit une variable différente.
Par exemple ces deux variables sont différentes
Par convention, on utilise uniquement des minuscules pour désigner les variables
simples (ainsi que les noms de fonctions);
les majuscules sont réservées en principe pour d'autres sortes de variables, comme
les noms de classe, les constantes.
Pour des raisons de lisibilité, il est également possible d'utiliser le tiret bas _ dans les
noms de variables. Par exemple, on préféra age_moyen à AgeMoyen.
30
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables
Noms de variables
NB :
Le premier caractère ne peut pas être un chiffre.
Il est, en théorie au moins, possible de faire commencer un nom de variable par un
tiret bas comme premier caractère;
il est fortement déconseillé d'utiliser des noms de la forme __variable__ qui sont
réservés au langage.
Il n'est pas possible d'utiliser d'autres caractères que les caractères
alphanumériques et le tiret bas. Notamment le tiret haut - est interprété comme
l'opération de soustraction
31
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables
Noms de variables
Mots-clés:
Il existe en python certains mots spéciaux, qu'on appelle des mots-clés, ou keywords en
anglais, qui sont réservés et ne peuvent pas être utilisés comme un nom de variable.
La liste complète des 33 mots-clés est
32
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables
Noms de variables
Mots clefs du langage
33
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.5 Notion de variables
Noms de variables
Mots-clés du langage
34
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base
35
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base
36
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base
37
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base
38
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base
40
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.6 Types de base
Chaînes de caractères
On utilise les guillemets ou les simples côtes pour former les chaines sur une seule ligne, triple
guillemet pour les chaines sur plusieurs lignes.
Pour afficher une chaîne de caractères, il faut utiliser la fonction print.
NB : Depuis la version 3 de Python, la commande print est considérée comme une fonction dont il faut
alors mettre les arguments entre parenthèses
NB : la chaîne de caractères vide s’écrit "" ou ''
Opérations :
Longueur de la chaine avec len(var_chaine)
Concaténation de chaines avec + (exemple : var_chaine1 + var_chaine2)
Répétition d’une chaine avec * (exemple : var_chaine * 3)
lower(), upper(), capitalize() et swapcase() sont des méthodes (fonctions membres) retournent
respectivement une chaîne en minuscule, en majuscule, en minuscule commençant par une
majuscule, ou en casse inversée (exemple : var_chaine.upper())
41
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python
Création
C’est une structure qui peut être très utile. Une liste peut contenir des données de types différents.
c'est un objet de type list qui permet de collecter des éléments : données de type
quelconque : int, float, str, bool, etc., ou d'autres listes..
Une liste est créée à l'aide d'une affectation.
Ses éléments sont entre crochets [.].
Les éléments d'une liste s'obtiennent grâce à leur indice entre crochets.
La numérotation des éléments de la liste commence à 0.
La méthode [Link]() On peut vouloir ordonner une liste de nombres dans l’ordre croissant
La méthode [Link](.) permet d’ajouter un nombre fourni en argument à la liste, dans le
sens d’agrandir la liste d’un élément.
La fonction len(liste) prend en argument une liste et retourne son nombre d‘éléments: longueur
de la liste fournie en argument.
la fonction sum(liste) prend en argument une liste et retourne, lorsque c'est possible, le résultat
de l'opération '+' sur ses éléments;
La fonction type(liste) donne le type.
L'indice -1 permet d'obtenir le dernier élément. C'est plus simple que liste[len(liste) - 1]. L'indice
-2 l'avant-dernier, etc...
Un indice qui n'est pas compris entre -len(liste) et len(liste)-1 produit une erreur 'IndexError'
42
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python
Création
43
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python
Création
Les éléments d'une liste sont des valeurs de différents types, celles qu'on lui a affectées.
Une liste de listes permet de constituer un tableau bi-dimensionnel, tri-dimensionel, etc.
44
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python
Création
Les listes sont des objets modifiables (on dit aussi mutables) : on peut modifier leurs
éléments.
On modifie un élément de la liste en lui affectant une nouvelle valeur (de n'importe quel
type, simple ou complexe).
45
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.7 Notion de liste en Python
Avec deux arguments entiers m,n, range(m,n) retourne la liste des max(0; n − m) entiers
consécutifs qui sont m ⩽ . < n.
46
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.8 Structures conditionnelles
L’instruction if *else]
Test if [else] : Mot clé if qui signifie « si » en anglais. La syntaxe est:
La condition est évaluée en booléen.
Si elle a valeur True, le premier bloc
d'instruction est exécuté, le deuxième ne
l'est pas, puis l'exécution du programme
se poursuit.
Si elle a valeur False le deuxième bloc
d'instruction est exécuté (le premier ne
l'est pas), puis l'exécution du programme
se poursuit
.
NB: - L’instruction else est optionnelle.
- Le signe deux points « : », qui termine la condition est indispensable; Python affichera
une erreur de syntaxe si il est omis.
47
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.8 Structures conditionnelles
L’instruction if *else]
Exemples
48
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.8 Structures conditionnelles
L’instruction if *else]
49
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.8 Structures conditionnelles
Exemple
NB: elif et else sont optionnels.
elif peut être utilisé plusieurs fois
dans une structure de test :
if ...
elif ...
elif ...
else ….
50
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle
L’instruction while
L'instruction while permet de répéter une séquence d'instruction, en boucle, tant qu'une
condition est vérifiée.
51
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle
L’instruction while
Exemple 2: Saisie non vide
52
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle
Boucle for
53
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle
Boucle for
54
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.9 Structures de boucle
Boucle for
Nous souhaiterions créer la liste des carrés des entiers compris entre 0 et 10.
Pour cela on utilisera la méthode [Link]() appliquée aux objets de type liste qui
permet d'ajouter un élément en queue de liste
55
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.10 Fonctions
Définition et syntaxe
Définition: Une fonction est un ensemble d’instructions regroupées sous un nom et s’exécutant
à la demande
Syntaxe: La définition d’une fonction est composée :
du mot clé def suivi de l’identificateur de la fonction, de parenthèses entourant les paramètres de
la fonction séparés par des virgules, et du caractère « deux points » qui termine toujours une
instruction composée ;
d’une chaîne de documentation indentée comme le corps de la fonction ;
du bloc d’instructions indenté par rapport à la ligne de définition, et qui constitue le corps de la
fonction.
Le bloc d’instructions est obligatoire. S’il est vide, on emploie l’instruction pass. La
documentation (facultative) est fortement conseillée
56
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.10 Fonctions
57
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.10 Fonctions
58
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 6 : BASES DU LANGAGE PYTHON 6.10 Fonctions
59
[Link] Dr Lambert KADJO ****** 2014-2015
Informatique
Partie 1: ELÉMENTS D’ARCHITECTURE DES ORDINATEURS - REPRÉSENTATION DES NOMBRES
Chapitre 1 : INTRODUCTION
Partie 2: ALGORITHMIQUE
Chapitre 2 : INTRODUCTION AU LANGAGE DE DESCRIPTION D’ALGORITHME
Chapitre 3 : STRUCTURES DE DONNEES ELEMENTAIRES
Chapitre 4: SOUS-PROGRAMMES : PROCEDURES & FONCTONS
60
[Link]
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs
DONNEES
Définitions
Tous les conteneurs Python sont des objets itérables
on peut les parcourir avec une boucle for.
61
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
62
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
63
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
Exemple 1:
Soient L, une liste et L_prim, une copie de L
Objet en mémoire
L et L_prim sont en effet des
10 11 12 13 14 alias, des étiquettes du même
objet [10, 11, 12, 13, 14].
Exemple 2: Utilisation de la fonction list(). Soient L, une liste et L_prim, une copie de L
Objet en mémoire
10 11 12 13 14 L et L_prim pointent sur
deux objets différents mais de
Objet en mémoire mêmes contenus
10 11 12 13 14
Objet modifié en mémoire
10 11 12 13 14 15 Donc, effectuer une
Objet en mémoire opération sur L ne
peut en aucun cas,
10 11 12 13 14 affecter L_prim
65
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
66
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
67
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
Utilisation de la fonction
deepcopy() du module copy
68
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
69
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
70
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
72
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
73
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.1 Conteneurs: Collections ordonnées
DONNEES
74
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES
NB: Les crochets délimitent les listes, les parenthèses délimitent les tuples et les accolades
délimitent les dictionnaires.
75
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES
Créons ce dictionnaire
Cote_d_Ivoire = ,'Capitale' : ‘Yamoussoukro', 'Superficie' : 322462, 'Population' : 25000000, 'Langue' : 'Français‘-
76
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES
77
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES
78
Chapitre 7 : LISTES ET AUTRES STRUCTURES DE 7.2 Conteneurs: Collections sans ordre
DONNEES
Cote_d_Ivoire.copy() retourne une copie du dictionnaire telle que vue avec les listes.
79
[Link] Dr Lambert KADJO ****** 2014-2015
Informatique
Partie 1: ELÉMENTS D’ARCHITECTURE DES ORDINATEURS - REPRÉSENTATION DES NOMBRES
Chapitre 1 : INTRODUCTION
Partie 2: ALGORITHMIQUE
Chapitre 2 : INTRODUCTION AU LANGAGE DE DESCRIPTION D’ALGORITHME
Chapitre 3 : STRUCTURES DE DONNEES ELEMENTAIRES
Chapitre 4: SOUS-PROGRAMMES : PROCEDURES & FONCTONS
80
[Link]
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.1 Les modules
Définitions
Un module est un fichier ayant pour extension .py permettant de définir des éléments de
programme réutilisables (définitions de constantes et fonctions).
Tout programmeur python peut réaliser un module.
NB: Lorsqu’on parle du module, on omet l’extention : le module accueil est dans le fichier
[Link]
Instruction import
Cette instruction charge et exécute le module indiqué s’il n’est pas déjà chargé.
L’ensemble des définitions contenues dans ce module deviennent alors disponibles : variables
globales, fonctions, classes.
Définitions
Exemple 1
Exemple 2
Exemple 3
Exemple 4
82
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.1 Les modules
83
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Généralités
Pour effectuer des calculs numériques au moins 3 solutions logicielles efficaces sont
envisageables :
84
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Le module numpy est la boîte à outils indispensable pour faire du calcul scientifique avec
Python.
Pour modéliser les vecteurs, matrices et, plus généralement, les tableaux à n dimensions,
numpy fournit la fonction array().
A la différence des listes qui pourraient elles aussi servir à représenter des vecteurs
(resp. des matrices) :
— Les tableaux numpy sont homogènes ( constitués d’éléments du même type).
— La taille des tableaux numpy est fixée à la création. On ne peut donc augmenter ou
diminuer la taille d’un tableau comme on le ferrait pour une liste.
— Le format d’un tableau numpy et la taille des objets qui le composent étant fixé,
l’empreinte du tableau en mémoire est invariable et l’accès à ses éléments se fait en
temps constant.
— Les opérations sur les tableaux sont optimisées en fonction du type des éléments,
et sont beaucoup plus rapide qu’elles ne le seraient sur des listes équivalentes.
La fonction arange() crée une matrice ligne de façon assez analogue à la façon dont
range() crée une liste, à ceci près que les coefficients ne sont pas forcement entiers
On peut appliquer sur les tableaux de nombreuses opérations arithmétiques, certaines
étant comprises terme à terme sans utiliser de boucle.
86
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Exemples
87
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Comme il y quelques subtilités dans la fonction range et arange quant au dernier élément,
Pour éviter tout désagrément la fonction linspace(premier,dernier,n) renvoie
un array commençant par premier, se terminant par dernier avec n éléments
régulièrement espacés.
88
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Exemple: Ici, on définit un tableau position de 10 lignes et 2 colonnes, formant des
positions aléatoires. Les vecteurs colonnes x et y sont extraits du tableau position.
89
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
On accède aux éléments d'un tableau comme les listes en python, grâce à un indice entre
crochets.
On peut appliquer du slicing.
Le type d'une matrice s'obtient grâce à la fonction shape(), son nombre d’élément grâce à
la fonction size().
La fonction reshape() ou flatten() permet de changer la forme (=type) d'une matrice (transformer
un array bi-dimensionnel en un array uni-dimensionnel .
L’instruction [Link]() renvoie une copie de v.
la syntaxe de reshape [Link](array,dimension)
Le produit matriciel s'obtient à l'aide de la fonction dot().
Si le deuxième argument est une matrice ligne, dot() la traitera si besoin est comme une matrice
colonne, ou vecteur, en la transposant.
Pour effectuer le produit scalaire de 2 "vecteurs" utiliser la fonction vdot()
La fonction transpose() permet d'obtenir la transposée
le sous-module linalg contient, entre autres :
la fonction inv() permettant d’obtenir l'inversion de matrice.
la fonction det() retourne le déterminant d'une matrice.
La fonction solve(A,b) résout le système linéaire de matrice A et de second membre b (vecteur ou
ligne). 90
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Exemple 1: Accès aux éléments de la matrice A
91
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Exemple 2: Slicing, et nombre d’éléments d’une matrice
92
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Exemple 3: Le produit matriciel avec la fonction dot()
93
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Exemple 4: transpose()
94
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Exemple5: dot() et linalg
95
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Exemple système linéaire: Résoudre le système linéaire :
96
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Numpy propose le type mat comme matrice, exclusivement un tableau bi-dimensionnel. Il
retourne un objet de type array. Cela permet de saisir simplement les matrices tel quecela
est fait dans Matlab et de faire le produit matriciel par le simple symbole *
97
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Matrices particulières
[Link](v) : matrice diagonale dont la diagonale est constituée des coordonnées du vecteur v
[Link](v,k): matrice dont la « diagonale » décalée de k, un entier relatif, est constituée des
coordonnées du vecteur v (k est un entier relatif)
Le module numpy
99
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
100
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module numpy
Extraction de sous-matrices
Syntaxe Valeur de retour
[Link] où A est une matrice Retourne les dimensions de A sous forme de tuple.
A[i][j] où A est une matrice, i et j deux entiers Extrait le coefficient d’indice (i+1, j+1) de A
A[: , i] où A est une matrice, i un entier Extrait la i+1-ème colonne de A sous forme de
matrice ligne
A[: , :i] où A est une matrice, i un entier Extrait les i premières colonnes de A sous forme
de matrice
A[: , i:] où A est une matrice, i un entier Extrait les i+1 dernières colonnes de A sous forme
de matrice
A[: , i:j+1] où A est une matrice, i et j deux entiers Extrait de la i-ème à la j-ème colonne de A sous
forme de matrice
A[i , :] où A est une matrice, i un entier Extrait la i+1-ème ligne de A sous forme de
matrice ligne
101
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Matplotlib = Mat (pour Matlab) + plot (pour Tracer) et Lib (pour Librarie)
bibliothèque qui, combinée avec les bibliothèques python de calcul scientifique numpy et scipy,
constitue un puissant outil pour tracer et visualiser des données principalement en 1D et 2D.
Utilise des tableaux NumPy (ou des listes) pour générer ces graphiques
Il s’appuit sur une syntaxe très proche de celle de MatLab pour des tracés graphiques
Sauvegarde des figures sous différents formats : pdf , ps, png,...
Graphes facilement intégrables dans une interface graphique utilisateur (GUI)
Pour utiliser Matplotlib avec Idle, on peut importer la bibliothèque pylab qui contient numpy et
Matplotlib
Pour le simple tracé de courbes nous n'utiliserons que le sous-module pyplot, importe,
avec alias, à l'aide de l’une des deux commandes
Équivaut à
102
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
103
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Fonctions essentielles de pyplot
[Link]() ou [Link](block=False): déclenche l’affichage à l’écran en mode bloquant
(stoppe l’exécution du script en cours jusqu’à ce que vous ayez fermé la fenêtre
d’affichage) ou non bloquant.
Cette fenêtre d’affichage permet de faire une multitude de choses en mode interactif, notamment
de zoomer sur une partie de la figure, enregistrer.
[Link](x,y, options): permet de représenter des fonctions en reliant par une ligne brisée
les couples de points (x[i],y[i]) successifs contenus dans les deux tableaux numpy à une
dimension x(abscisses) et y (ordonnées) de même taille
ces points du plan sont reliés entre eux de façon ordonnée par des segments et la couleur change
pour chaque nouvelle courbe.
plus on prendra de points intermédiaires, plus le tracé sera fidèle à l’allure théorique;
Le deuxième paramètre peut être une fonction
On peut créer une fonction autre que celles qui existent déjà dans numpy pour la tracer
Le troisième paramètre (options) est facultatif, il permet de choisir l'apparence du trait, l‘épaisseur,
la couleur, etc., entre quotes.
Il est possible de superposer deux courbes sur le même graphique avec la commande
[Link](x1,y1, option1, x2,y2, option2).
y1 et y2 peuvent être des fonctions numpy ou personnelles
104
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Fonctions essentielles de pyplot
[Link](x,y, options)
Options de la fonction plot()
Les couleurs peuvent être décrites par :
une lettre prédéfinie: b (bleu), g (vert), r (rouge), c (cyan), m(magenta) y ( jaune), k(noire), w (
blanc)
une valeur entre 0 et 1 pour un niveau de gris (color = valeur)
un tuple de 3 valeurs entre 0 et 1 pour un style RVB, ( color=(R,V,B))
un marqueur html en hexadécimal (color=#eeef )
Les styles de lignes (qui relient les points) :
`-' (ligne continue), ‘--’ (ligne de tiret), `-.' (point tiret), `:' (dotted), ‘’ ou ‘ ‘ ou None (rien)
linewidth=valeur (ou lw=valeur): pour préciser la largeur des traits
Les styles des marqueurs de point :
‘.’ (point), `,' (pixel), `o' (rond), `v' (triangle down), `^' (triangle up), `s' (carré), '*‘( étoile), d
ou D (losange), ‘+’(croix)
markersize=valeur
label = ‘libellé pour legende’
105
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Fonctions essentielles de pyplot
[Link](n,m, k): permet de subdiviser la fenêtre en n ∗ m cases,
la valeur n spécifie le nombre de lignes
la valeur m spécifie le nombre de colonnes
La valeur k spécifie dans quelle case on désire faire un graphique
Ces cases sont numérotées de gauche à droite et de haut en bas
106
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Fonctions essentielles de pyplot
[Link](« [Link]"): permet de sauvegarder la figure en cours dans le fichier
[Link].
Utile pour circonvenir à la limitation précédente d’arrêt du script lors de l’affichage.
Par défaut le format est PNG.
Il est possible d’augmenter la résolution, la couleur de fond , l’orientation, la taille
(a0, a1, lettertype, etc) et aussi le format de l’image.
Si aucun format n’est spécifié, le format est celui de l’extension dans
“[Link]” (où “ext” est “eps”, “png”, “pdf”, “ps” ou “svg”).
Il est toujours conseiller de mettre une extension aux noms de fichier ;
On peut donc faire [Link](‘monimage',format='pdf') sauvegarde “monimage”
(sans extension !) au format “pdf”
[Link](): efface la figure en cours (clf pour « CLear Figure ») car plt continue d’ajouter des
éléments à la même figure tant qu’on ne lui a pas dit d’arrêter. Or, il peut arriver que l’on
veuille représenter plusieurs graphiques différents issus des résultats d’un même calcul.
Il convient donc de penser à réinitialiser les choses avant de commencer à dessiner le
prochain graphique. 107
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Fonctions de pyplot pour la mise en forme de graphique
[Link]([xmin,xmax,ymin,ymax]) ou [Link](‘equal’): repère quelconque ou repere orthonormé
[Link](xmin,xmax) et [Link](ymin,ymax) permettent de préciser que l’on souhaite l’affichage
des absisses entre xmin et xmax et l’affichage des ordonnées entre ymin et ymax.
[Link](tx): Spécifie les graduations des abscisses qui vont figurer dans le graphique, où
tx est un tableau de valeurs ordonnées
[Link](ty): Spécifie les graduations des ordonnées qui vont figurer dans le graphique
où ty est un tableau de valeurs ordonnées
Le module Matplotlib
Fonctions de pyplot pour la mise en forme de graphique
[Link]((g1,g2, …,gn), ("texte1", "texte2",…,"texte-n")): fournit une légende pour les
graphe g1,g2, …,gn construit à partir de la commande gi=[Link]()
[Link](loc = 'upper right') : affiche la légende en utilisant le paramètre label d'un plot
et en précisant la localisation de cette légende donnée sur la figure.
Ces commandes ci-dessus retournent un objet de type text qui peut être référencé pour en
changer les propriétés a postorieri (taille de la police, orientation,
[Link] en utilisant la commande
[Link](ref, liste_propriétés_à_modifier): changer une propriété d'un objet 109
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Fonctions de pyplot pour la mise
en forme de graphique
ou
110
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Exemple: Représentation de trajectoires
111
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Le sous-module animation
depuis la version 1.1 de Matplotlib, des outils d’animation ont été ajoutés à la
bibliothèque matplotlib
pour les utiliser, il faut importer le sous-module animation
[Link] 112
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Le sous-module animation: utilisation de la fonction
FuncAnimation
Importer les modules nécessaires:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation as anim
Créer une Figure, les axes avec AxesSubplot, et une ligne vide qui pourrait changer (la seule
chose susceptible de changer, élément à animer)
fig = [Link]()
ax = [Link](xlim=(0, 2), ylim=(-2, 2))
line, = [Link]([], [], lw=2)
113
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Le sous-module animation: utilisation de la fonction FuncAnimation
Fonction d’initialisation init(). Elle est appelée au début de l’animation: Cette fonction
servira à la création de l’arrière de l’animation présent sur chaque image. On prend ici,
une liste de données de ligne vide.
def init():
line.set_data([],[])
return line,
Fonction d’animation animate(), appelée séquentiellement, avec i incrémenté à chaque
fois affichage. Cette fonction retourne un tuple d’éléments de la courbe qui ont été
modifiés (la ligne à modifier).
def animate(i):
x = [Link](0, 2, 1000)
y = [Link](2 * [Link] * (x - 0.01 * i))
line.set_data(x, y)
return line, 114
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module Matplotlib
Le sous-module animation: utilisation de la fonction FuncAnimation
Fonction animateur FuncAnimation:
Le module SciPy
Le module SciPy contient de nombreux algorithmes très utilisés pour les calculs scientifiques
regroupés dans un certain nombre de sous modules :
[Link] : sous module comportant des fonctions spéciales: (fonctions de Bessel, erf,
gamma, etc.)
[Link] : Intégration numérique et résolution d'équations différentielles ordinaires
[Link] : Méthodes d’optimisation (minimisation, moindres-carrés, zéros d’une
fonction, etc.).
[Link] : Interpolation: interpolation, lissage(smoothing spline)
[Link] : Transformées de Fourier
[Link] : sous-module dédié au traitement du signal (convolution, corrélation, filtrage,
ondelettes, etc.)
[Link] : Algèbre linéaire
[Link] : sous-module dédié aux statistiques (fonctions et distributions statistiques)
[Link] : Traitement d’images multi-dimensionnelles
[Link] : Entrées/sorties
constants: Constantes physiques ou mathématiques.
scipy peut être vu comme une extension de numpy car il contient toutes les fonctions de
numpy 116
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
La documentation
Sur internet:
[Link]
[Link]
[Link]
Commande help(): Toutes les aides internes aux fonctions et objets manipulés sont disponibles via la
commande help(),par exemple :
help(scipy)
help([Link])
help([Link])
commande [Link](): a le même comportement que help() mais ne rentre pas dans un éditeur: il affiche
directement l’aide sur l’écran (ou l’imprime dans un fichier, pour plus de détails, voir [Link]([Link])).
Par exemple:
[Link]([Link])
Commande [Link](): Permet de regarder dans les fichiers d’aide les occurrences de la chaîne de
caractère donnée en argument.
[Link](‘determinant’)
117
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
118
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
numpy vs scipy
119
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
C’est une bibliothèque de fonctions spéciales qu’on retrouve fréquemment.
pratiquement toutes les fonctions courantes de numpy (cos,sin,tan, etc.)
les autres sont dans [Link]: fonctions de Bessel (Jn, Yn), gamma, beta, erf, airy,
legendre, fonctions elliptiques, etc.
120
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
121
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
122
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
123
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
124
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
125
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
126
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
127
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
Exemple : fonctions de Bessel du premier type
128
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Fonctions spéciales : [Link]
C’est une bibliothèque de fonctions spéciales qu’on retrouve fréquemment.
pratiquement toutes les fonctions courantes de numpy (cos,sin,tan, etc.)
les autres sont dans [Link].
129
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Algèbre linéaire : [Link]
130
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Algèbre linéaire : [Link]
131
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Algèbre linéaire : [Link]
132
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Algèbre linéaire : [Link]
133
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Algèbre linéaire : [Link]
134
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Interpolation : [Link]
135
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Interpolation : [Link]
136
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Interpolation : [Link]
137
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Interpolation : [Link]
138
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Intégration : [Link]
139
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Intégration : [Link]
Soit Il existe plusieurs fonctions python pour effectuer cette intégration:
Le module SciPy
Intégration : [Link]
Il existe plusieurs fonctions
trapz(f, dx=α): applique la méthode des trapèzes à un échantillonnage avec un pas dx=(b-a)/n
simps(f, dx=α): : implémente la méthode de Simpson à un échantillonnage avec un pas dx=(b-a)/n
romb(f, dx=α) : implémente la méthode de Romberg à un échantillonnage régulièrement espacé et
comportant 2k + 1 points pour un entier k. Le pas dx=1./ 2k est à spécifier
odeint() : permet l’intégration d’équations différentielles avec condition initiale ( O.D.E. pour
« Ordinary Differential Equation », c.à.d. « Equation différentielle ordinaire », soit des équations du
premier ordre : y ′ = φ(y,t) avec condition initiale (t0, y0).
dblquad(f,a,b,g,h): intègre la fonction f(x,y) en x sur l’intervalle *a, b+ et en y sur l’intervalle *g(x), h(x)+
Renvoie un couple contenant la valeur de l’intégrale et une estimation de l’erreur maximale commise
lors de l’intégration. Attention, la 1ère variable x d’intégration est toujours le 1er argument de la
fonction et la 2ème variable y toujours le 2ème . Aussi, g et h doivent être « callable », c’est-à-dire
accepter un argument (en l’occurrence x). Si les bornes d’intégration en y sont fixes, on pourra utiliser
des « fonctions anonymes » (fonction lambda)
tplquad(f,a,b,g,h,r,q): intègre la fonction f(x,y,z) en x sur l’intervalle *a,b], en y sur l’intervalle
[g(x),h(x)] et en z sur l’intervalle *r(x, y), q(x, y)+. Elle renvoie un couple contenant la valeur de
l’intégrale et une estimation de l’erreur maximale commise lors de l’intégration. Attention, la 1 ère
variable x d’intégration est toujours le 1er argument de la fonction, la 2ème variable y toujours le 2ème
et la 3ème z toujours le 3ème . Aussi, g et h doivent être « callable » à un argument (x) mais r et q
doivent être « callable » à deux argument (x,y). 141
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Intégration : [Link]
Il existe plusieurs fonctions
odeint(f,y0,t): permet d’intégrer numériquement une équation différentielle du type
La « fonction inconnue » y peut être un tableau de fonctions inconnues (permet de résoudre soit un
système d’équations couplées, soit une équation d’ordre supérieur vue comme un système
d’équations du premier ordre couplées). y0 est la liste des conditions initiales (pour chaque élément
du tableau y) àl’instant t[0],et t représente l’ensemble des temps aux quels l’on veut que l’équation
différentielle soit résolue.
142
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Intégration : [Link]
Il existe plusieurs fonctions
trapz(f, dx=α): applique la méthode des trapèzes à un échantillonnage avec un pas dx=(b-a)/n
simps(f, dx=α): : implémente la méthode de Simpson à un échantillonnage avec un pas dx=(b-a)/n
romb(f, dx=α) : implémente la méthode de Romberg à un échantillonnage régulièrement espacé et
comportant 2k + 1 points pour un entier k. Le pas dx=1./ 2k est à spécifier
odeint() : permet l’intégration d’équations différentielles avec condition initiale ( O.D.E. pour
« Ordinary Differential Equation », c.à.d. « Equation différentielle ordinaire », soit des équations du
premier ordre : y ′ = φ(y,t) avec condition initiale (t0, y0).
Exemple
143
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Optimisation et fit : [Link]
144
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Optimisation et fit : [Link]
145
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
Optimisation et fit : [Link]
146
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
147
[Link] Dr Lambert KADJO ****** 2014-2015
Chapitre 8: PYTHON ET CALCUL SCIENTIFIQUE 8.2 Calcul scientifique
Le module SciPy
148
[Link] Dr Lambert KADJO ****** 2014-2015