Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Eléments finis pour le Génie Civil
Introduction au langage PYTHON
E. Liberge
1/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
spyder
Etape 2 : Ouvrir un fichier Etape 1 : aller dans le répertoire de travail
Etape 3 : Executer
Programme
Console
-On y suit l’execution du programme
-On peut y taper du code
2/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Introduction à python
Langage interprété ( il n’y a pas de compilation).
Il n’est pas nécessaire de déclarer les variables au début du
calcul.
Orienté objet.
Possède des bibliothèques de calcul scientifique.
Peut être couplé avec un autre langage (fortran, c,c++, ...).
Un même programme peut aussi bien être utilisé sous Windows
que sous Linux, sans modification.
Dans le cadre de cette formation, il sera utilisé comme un
“matlab-like”.
3/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Règles de bases
Commentaires :
#exemple de commentaire
La ligne n’est pas prise en compte pour l’execution du
programme
Identificateurs
Différenciation minuscule majuscule rang 6= Rang
Indentation obligatoire
i f (−4 < temp < 4 ) :
i f modAvertir :
p r i n t ( " r i s q u e de v e r g l a s " )
Une tabulation sert à définir un niveau de programmation
4/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Règles de bases
Continuation de lignes Explicite
i f 1900<an<2100 and 1<=mois <=12 \
and 1<= j o u r <=31 and 0<=heure <24 \
and 0<=minute <60 and 0<=seconde <60:
r e t u r n True
Continuation de lignes implicite
mois = [ ’ j a n v i e r , ’ f e v r i e r ’ , ’ mars ’ ,
’ a v r i l ’ , ’ mai ’ , ’ j u i n ’ , ’ j u i l l e t ’ ,
’ aout ’ , ’ septembre ’ , ’ o c t o b r e ’ , ’ decembre ’ ]
Affectation
variable=valeur
x , y , z =1 ,2 ,3
x0=y0=z0
5/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Constructeur de séquence
Construire des séquences d’entiers
I n [ 3 ] : range ( 4 ) # l a premiere v a l e u r e s t 0
Out [ 3 ] : [ 0 , 1 , 2 , 3 ]
I n [ 4 ] : range ( 4 , 6 ) #range ( debut , f i n , pas ) pas=1 par d e f a u t
Out [ 4 ] : [ 4 , 5 ]
I n [ 5 ] : range ( 4 , 1 0 , 2 )
Out [ 5 ] : [ 4 , 6 , 8 ]
I n [ 6 ] : range (8 ,4 , −1)
Out [ 6 ] : [ 8 , 7 , 6 , 5 ]
6/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Opérateurs sur les séquences
Affectation
I n [ 8 ] : seq=range ( 0 , 2 0 , 3 )
I n [ 9 ] : seq
Out [ 9 ] : [ 0 , 3 , 6 , 9 , 12 , 15 , 1 8 ]
Test de présence
I n [ 1 0 ] : 6 i n seq # non presence avec n o t i n
Out [ 1 0 ] : True
Nombre d’éléments
l e n ( seq )
Valeur min et max
min ( seq ) max ( seq )
Selection patielle de la liste
I n [ 1 7 ] : seq [ 1 : 5 ]
Out [ 1 7 ] : [ 3 , 6 , 9 , 1 2 ]
7/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Structure de contrôle
Nombre restreint :
test : if else elif
boucles : for in while break continue
Condition
i f i < 4:
print ( " inferieur a 4" )
elif i> 4 :
p r i n t ( " superieur a 4" )
else :
p r i n t ( " egal 4 " )
8/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Structure de contrôle
boucle for
for i i n seq :
print ( i )
boucle while
while i < 26 :
print ( i )
i = i +1
9/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Fonctions
Définition avec def + indentation
Exemple
I n [ 2 3 ] : d e f somme( a , b ) :
....: # f a i t l a somme de deux v a r i a b l e s
....: r e t u r n a+b
....:
I n [ 2 4 ] : somme( 5 , 4 )
Out [ 2 4 ] : 9
Aide sur une fonction
h e l p ( range ) # a f f i c h e comment u t i l i s e r l a f o n c t i o n range
A essayer
seq=range ( 1 0 )
h e l p ( seq )
10/25 CAO 1
Utilisation de l’interface de développement SPYDER
Utilisation basique de python
Bibliothèques d’analyse numérique
Exercices
Exercice 1
Créer une liste qui contient tout les mois de l’année
Créer une liste qui contient le nombre de jours pour chaque mois
Faire un programme qui créer 2 listes, la première contenant les
mois de 30 jours, et la seconde ceux de 31. On utilisera pour
cela la structure append pour une liste.
Transformer le programme précédent en une fonction qui entrée
reçoit 2 listes (la liste qui contient tout les mois de l’année, et
celle qui contient le nombre de jours) et affiche les mois de
moins de 30 jours et ceux 31.
11/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Exemple de création d’un module
Création d’un module contenant des fonctions mathématiques.
Un module = Un fichier
maths.py
# ! / u s r / b i n / python
p i = 3.1415926535897931
e = 2.7182818284590451
def a d d i t i o n ( x , y ) :
r e t u r n x+y
def m u l t i p l i c a t i o n ( x , y ) :
return x*y
12/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Utilisation de modules
Trois appels possibles
Import global
from maths i m p o r t *
p r i n t ( pi , e )
Toutes les fonctions et variables sont stockées dans la mémoire
vive
Import module
i m p o r t maths # ou i m p o r t maths as mth
p r i n t ( maths . p i , maths . e ) # ou p r i n t mth . p i , mth . e
Intermédiaire
from maths i m p o r t p i , e , a d d i t i o n
13/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Exercices
Exercice 2
Externaliser la fonction de l’exercice 1 dans un module
(module1.py)
L’utiliser via import module1
L’utiliser via un import global
14/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Quels modules utiliser ?
numpy
scipy
>>> i m p o r t s c i p y as s c i
>>> h e l p ( s c i )
librairies de fonctions mathématiques
librairies d’algèbre linéaire
fft
....
matplotlib (pylab)
>>> i m p o r t p y l a b as py
>>> h e l p ( py )
librairies d’affichage, tracer de courbes
15/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
scipy
Manipulation de matrices
Matrice identité n × n
id=sci . identity (n)
Déclaration d’une matrice 4 × 5
Mat= s c i . zeros ( ( 4 , 5 ) )
Déclaration d’un array 4 × 5 × 10
Ar= s c i . zeros ( ( 4 , 5 , 1 0 ) )
Plus d’information :
h e l p ( s c i . zeros )
16/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Manipulation de matrices/vecteurs
Multiplication
A= s c i . rand ( 2 , 3 ) # m a t r i c e a l e a t o i r e 2x3
b= s c i . rand ( 3 , 2 ) # m a t r i c e a l e a t o i r e 3x2
C= s c i . d o t ( A , b ) # p r o d u i t m a t r i c i e l Axb
D=A * b . T # p r o d u i t terme a terme
h e l p (A) # m a n i p u l a t i o n de l ’ o b j e t A
Remarque Dans spyder, l’action d’écrire dans la console
A.
fait apparaitre toutes les options de l’objet A.
17/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Manipulation de matrices/vecteurs
Manipulation
La numérotation des arrays commence toujours à 0
A= s c i . rand ( 1 0 ) # vecteur a l e a t o i r e de t a i l l e 10
p r i n t (A [ 0 ] ) # affiche l a premiere v a l e u r
p r i n t (A [ 9 ] ) # affiche la derniere valeur
p r i n t ( A[ − 1 ] ) # affiche la derniere valeur
p r i n t (A. size ) # affiche l a t a i l l e de A
Taille d’un array
B= s c i . rand ( 3 , 8 ) # m a t r i c e a l e a t o i r e de t a i l l e 3x8
In [ 1 5 ] : B. size # nombre de v a l e u r s dans B
Out [ 1 5 ] : 24
I n [ 1 6 ] : B . shape # dimension de B
Out [ 1 6 ] : ( 3 , 8 )
18/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Manipulation de matrices/vecteurs
Manipulation
Extraction de ligne/colonne
B= s c i . rand ( 3 , 8 ) # m a t r i c e a l e a t o i r e de t a i l l e 3x8
B[1 ,:] # v a l e u r s de l a deuxieme l i g n e
B[1] # v a l e u r s de l a deuxieme l i g n e
B[: ,4] # v a l e u r s de l a cinquieme colonne
B.T [ 4 ] # v a l e u r s de l a cinquieme colonne
B[2 ,4] # v a l e u r de l a case ( 3 , 5 )
B[2][4] # v a l e u r de l a case ( 3 , 5 )
19/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Entrées/sorties
Ecriture sur le disque
Enregistrement dans un fichier
B= s c i . rand ( 3 , 8 ) # m a t r i c e a l e a t o i r e de t a i l l e 3x8
s c i . s a v e t x t ( " matriceB " ,B) #sauve l a m a t r i c e B
Chargement d’un fichier de type matrice
C= s c i . l o a d t x t ( " matriceB " ) #Chargement dans C
sorties formatées
f =open ( ’ m o n _ p r e m i e r _ f i c h i e r ’ ,w)
f . w r i t e ( "%d \ t%s \ n " %(3 , " e s s a i " ) )
f . w r i t e ( "%d \ t%s \ n " %(4 , " l i g n e 2 " ) )
f . close ( )
20/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Entrées/sorties
Entrée formatée
f =open ( ’ m o n _ p r e m i e r _ f i c h i e r ’ , r )
r=f . readlines ( ) # stockage dans l a v a r i a b l e r
f . close ( )
longueur=len ( r ) # nombre de l i g n e s du f i c h i e r
for i in r :
print ( i . split ()) # decoupage des l i g n e s dans un t a b l e a u
Les éléments du tableau sont des chaînes de charactères.
Pour récupérer des valeurs numériques :
f l o a t ( r [ 0 ] . s p l i t ( ) [ 0 ] ) # r e c u p e r a t i o n d ’ un r e e l
int ( r [0]. split ()[0]) # r e c u p e r a t i o n d ’ un e n t i e r
21/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
linalg
Librairie d’algèbre linéaire
Chargement
i m p o r t s c i p y . l i n a l g as l g
help ( l g ) # l i s t e l e s f o n c t i o n s du module
A1= l g . i n v ( A ) # i n v e r s e d ’ une m a t r i c e
detA= l g . d e t ( A ) # d e t e r m i n a n t d ’ une m a t r i c e
x= l g . s o l v e ( A , b ) # r e s o l u t i o n de Ax=b
v l , vc= l g . e i g ( A ) # v a l e u r s p r o p r e s e t v e c t e u r s p r o p r e s
# de A
Avant d’utiliser une fonction ne pas hésiter à regarder l’aide
help ( l g . l u ) # Aide s u r l a f o n c t i o n de decomposition
# LU
22/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
linalg
Exemple SVD
i m p o r t s c i p y as s c i
i m p o r t s c i p y . l i n a l g as l g
A= s c i . rand ( 1 0 0 , 2 0 0 )
U, S , V= l g . svd ( A )
23/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Autres librairies de scipy
Librairies d’intégration
i m p o r t s c i p y . i n t e g r a t e as i n t e g
help ( i n t e g )
∂u
Exemple : résolution de (x, t) = −0.5u (x, t)
∂t
def func ( b , t t ) :
r e t u r n −0.5 * b
t t =np . arange ( 0 , T , d t )
b0= s c i . rand ( 4 )
b= i n t e g . o d e i n t ( func , b0 , t t )
24/25 CAO 1
Utilisation de l’interface de développement SPYDER
Scipy
Utilisation basique de python
Matplotlib
Bibliothèques d’analyse numérique
Matplotlib
Affichage de courbes
i m p o r t p y l a b as py
x= s c i . l i n s p a c e ( 0 , 1 , 1 1 )
py . f i g u r e ( )
py . t i t l e ( " s i n 2 $ \ p i $ x " )
py . p l o t ( x , s c i . s i n ( 2 * s c i . p i * x ) , ’ k ’ )
py . f i g u r e ( )
py . t i t l e ( " cos 2 $ \ p i $ x " )
py . p l o t ( x , s c i . cos ( 2 * s c i . p i * x ) , ’ r 0 ’ ) )
py . show ( )
25/25 CAO 1