Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
2A PO Ingénierie de la Construction
Jean-Charles Passieux
passieux@insa-toulouse.fr
Python est un langage de programmation interprété. Interprété signifie qu’il ne nécessite pas
de compilation avant l’exécution. Il s’agit d’un langage général qui permet de développer toute
sorte d’applications. Nous l’utiliserons assorti de la libraire de calcul numérique Numpy. Cette
librairie permet de faire des calculs matriciels efficacement. Il existe des outils concurrents tels
que Matlab, Octave, Scilab et dans une certaine mesure Excel.
Ces outils permettent de faire du calcul scientifique. Ils permettront de créer des scripts de
quelques lignes jusqu’à des vrais logiciels avec interface graphique. Il est par exemple possible
d’automatiser des procédures de calcul, de faire des mesures, d’analyser ou valoriser des don-
nées expérimentales, d’estimer des tendances, de simuler des modèles numériques, de faire des
calculs de RdM, d’optimiser une conception vis à vis de la résistance mécanique... bref, une
boite à outils de calcul très utile pour l’ingénieur.
Nous vous invitons à télécharger et installer Anaconda qui embarque Python et l’environne-
ment de développement Spyder qui est à Python, ce que Word est au langage Français.
https://www.anaconda.com/downloads
Spyder est composé de trois fenêtres. L’éditeur à gauche, qui se comporte comme une feuille
de brouillon dans lequel on va écrire les différentes instructions en langage Python. Le prompt
(ou invite de commande) qui fonctionne comme une calculatrice. C’est ici que l’on va exécuter
les instructions. Enfin l’éditeur de variables, qui permet de contrôler, si besoin, le type, la
taille et les valeurs stockées dans les variables disponibles en mémoire vive.
La première manipulation avant d’aller plus loin consiste à modifier une option graphique
par défaut qui sera utile ultérieurement (opération à faire une fois pour toutes) :
Accéder au menu Outils>Préférences puis cliquer sur Console IPython dans le menu de
gauche, puis onglet Graphiques, puis dans le cadre Sortie Graphique, sélectionner Automatique
dans le menu déroulant.
3 Vecteurs
La puissance de Numpy réside dans sa capacité à faire du calcul vectoriel et matriciel. Il ma-
nipule donc de manière native les vecteurs et les matrices. Taper :
>>> a=np.array([4,5,6.5]) # cree un vecteur [4,5,6.5] (taille 3)
>>> b=np.arange(7,10) # defini un vecteur d'entier avec les
# ... valeurs de 7 a 10 (10 exclu)
>>> c=np.arange(1,10,2) # permet de definir le pas de 2 (debut,fin,pas)
>>> d=np.arange(1,-5,-1) # fonctionne avec un pas negatif
>>> e=np.linspace(0,1,100) # 100 valeurs equi-reparties entre 0 et 1
>>> f=np.zeros(12) # vecteur nul de taille 12
>>> g=np.ones(5) # vecteur rempli de 1 de taille 5
Ne pas confondre la valeur et la position dans le vecteur qui s’appelle l’indice. L’indice est
toujours entier et commence à 0 avec Python. Par exemple pour le vecteur a :
Par analogie avec Excel, l’indice est le numéro de la case (ex : B12, nécessairement entier) et
la valeur est le contenu de la case (peut-être entier, scalaire, chaine de caractère...).
Ainsi pour accéder aux valeurs :
>>> e[0] # pour acceder a la premiere valeur du vecteur e
>>> e[5] # ...la cinquieme valeur du vecteur e
>>> a[3] # la 4e valeur du vecteur a n'existe pas!
>>> e[-1] # ...la derniere valeur du vecteur e
>>> e[-2] # ...l'avant-derniere valeur du vecteur e
>>> e[:4] # un vecteur des 4 premieres valeurs de e
>>> e[4:] # un vecteur des autres valeurs de e
>>> e[4:11] # valeurs des indices 4 a 11 (11 exclu)
>>> ind = np.array([0,2]) # ind est un vecteur d'indices
>>> a[ind] # premet d'acceder aux 1e et 3e valeurs de a
assigner une valeur : e[1]=3 : la deuxieme valeur de e vaut 3
Question 1 : Que donnent les instructions suivantes. Essayer de deviner
avant de vérifier :
>>> a[1:2]
>>> a[:2]
>>> a[:-2]
Opérations sur les vecteurs :
>>> a + b # addition de vecteurs
>>> a - c # soustraction de vecteurs. Attention a la dimension!
>>> a - c[:3] # ce calcul est autorise
>>> a * b # le produit terme a terme
>>> a.dot(b) # le produit scalaire de deux vecteurs
>>> a@b # autre notation du produit scalaire
>>> a.T # transposee d'un vecteur
>>> np.sqrt(a@a) # defini donc la norme du vecteur a
>>> e = 2*a + 1 # addition et multiplication avec un scalaire simple
>>> a**2 # pour elever les valeurs du vecteur au carre
>>> np.sin(2*np.pi*e/100) # toutes les fonctions de math sont vectorisees
>>> len(a) # pour connaitre la taille d'un vecteur
4 La librairie matplotlib.pyplot
Cette librairie permet d’afficher des courbes. Pour l’importer, taper l’instruction suivante :
>>> import matplotlib.pyplot as plt
5 Matrices
Très proche des vecteurs, mais avec deux indices.
>>> m=np.array([[1,2,3],[4,5,6]]) # matrice de 2 lignes, 3 colonnes
>>> m.shape # la taille de a,
m (2,3)
>>> v=np.array([0,1,0]) # un vecteur quelconque de taille 3
>>> m.dot(v) # produit matrice vecteur càd ?
>>> m@v # marche aussi pour le produit matrice vecteur
>>> m[1,2] # valeur de m en 2e ligne, 3e colonne
Question 8 : Que donnent les instructions suivantes. Essayer de deviner
avant de vérifier :
valeur de m en 1ere ligne, 2e colonne
>>> m[0,1] vecteur constitué de la 3e ligne et 3e col et
>>> m[:2,2] 3e ligne inexistante donc 3 e ligne
>>> m[-1,[2,0]] Texte
Pour définir des matrices particulières :
>>> m=np.zeros((2,3)) # matrice nulle de 2 lignes, 3 colonnes
>>> m=np.ones((5,1)) # matrice unitaire de 5 ligne, 1 colonne (donc un vecte
>>> m=np.eye(5) # matrice identite de taille 5x5
>>> m=np.diag([1,2,3]) # matrice diagonale 3x3 a partir d'un vecteur
>>> np.diag(m) # valeurs diagonales a partir d'une matrice
>>> m=np.random.rand(5,3) # matrice aleatoire 5x3
a==b # egal
a!=b # different
a>b # superieur strictement
Les autres tests sont : a>=b # superieur ou egal
a>2 and a<3 # ET logique (ici vrai si a est entre 2 et 3)
a>2 or a<3 # OU logique (ici vrai dans le cas contraire)
not a # NON logique
TRES IMPORTANT
10 Pour aller plus loin
Python/Numpy/Matplotlib est extrêmement bien documenté sur internet. Dès qu’on a le
moindre doute sur la façon d’appeler une fonction ou son existence, il faut avoir le réflexe de
rechercher dans votre moteur de recherche favori.
Python : https://www.python.org/
Numpy : https://numpy.org/
Matplotlib : https://matplotlib.org/
Il est possible de trouver de nombreux tutoriels sur Python, Numpy et Matplotlib, voire
Scipy, la librairie de calcul scientifique, également utile en analyse numérique.
Une page Moodle pour se former à Python (plus large que les seuls librairies numpy et
matplotlib) se trouve même sur le moodle de l’INSA :
http://moodle.insa-toulouse.fr/course/view.php?id=898