Vous êtes sur la page 1sur 25

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

Vous aimerez peut-être aussi