Université d’Aix-Marseille L3 de Mathématiques
2017-2018 Analyse Numérique
Travaux pratiques sous Python n
o0
Au début du fichier .py, charger les packages numpy et matplotlib.pyplot via la commande
i m p o r t numpy a s np
i m p o r t m a t p l o t l i b . p y p l o t a s p l t
Les programmes seront enregistrés dans un fichier .py, commentés et les réponses affichées via la commande print.
Initiation à la programmation en Python pour l’analyse numérique
1. Manipulation des vecteurs et des matrices
On peut utiliser Python comme une super-calculatrice qui opère sur les matrices en chargeant le module numpy.
Exercice 1. L’objectif de cet exercice est de comprendre les commandes suivantes. Leur description pourra être donnée sous forme de textes affichés lors de l’exécution via la commande print.
Création de listes
l i s t e 1 = [ 1 , 2 , 3 , 4 , 5 ]
l i s t e 2 = [ [ 1 1 , 12 ] , [ 2 1 , 22 ] ] l i s t e 3 = [’ t o t o ’, 1 , 4 . 0 ]
Définition de vecteurs et matrices
x = np . a r r a y ( [ 1 , 2 , 3 ] ) y = np . a r r a y ( [ [ 4 ] , [ 5 ] , [ 6 ] ] ) z = np . a r r a y ( [ [ 1 , 2 ] , [ 3 , 4 ] )
Matrices et vecteurs particuliers
v1 = np . z e r o s ( 3 ) v2 = np . o n e s ( 2 )
i d e n t i t e 1 = np . e y e ( 5 , 4 ) i d e n t i t e 2 = np . e y e ( 4 , k = −1) i d e n t i t e 3 = np . d i a g ( v2 )
i d e n t i t e 4 = np . d i a g ( v2 , k = −1) z z = np . z e r o s ( ( 2 , 3 ) )
s i z e z = ( np . s i z e ( z , 0 ) , np . s i z e ( z , 1 ) ) z z z = np . z e r o s ( s i z e z )
un = np . o n e s ( ( 2 , 2 ) )
Extraction de coefficients
p r i n t( x [ 0 ] ) p r i n t( x [−1 ] ) p r i n t( z [ 0 , 1 ] ) p r i n t( x [ 1 : 3 ] ) p r i n t( z [ : , 1 ] ) p r i n t( np . d i a g ( z ) )
Opérations d’algèbre linéaire
p r i n t( np . t r a n s p o s e ( z ) ) p r i n t( z . T)
p r i n t( np . l i n a l g . matrix_power ( z , 2 ) ) p r i n t( z+un )
p r i n t( z . d o t ( un ) )
p r i n t( np . l i n a l g . i n v ( z ) )
Operations coefficients par coefficients
p r i n t( z∗z ) p r i n t( 1 / z ) p r i n t( z +1)
Exercice 2. Construire les matrices A et B de taille 4 × 4 telles que
a
ij=
( 2 si i 6= j
1 si i = j et b
ij= j.
2. Programmation élémentaire en Python
Il est possible d’utiliser des fichiers pour regrouper des instructions Python. Pour les rédiger, on utilise un éditeur de texte ou un IDE comme Pyzo ou Spyder. Les fichiers peuvent être exécutés directement dans l’IDE ou en ligne de commande dans le terminal.
1
Exercice 3.
Éxecution de script
Créer le fichier exo3.py contenant les com- mandes d’importations ci-dessus et les instructions suivantes. Executer le et comprendre ce qu’il fait.
n = 5
A = np . z e r o s ( ( n , n ) ) f o r i i n r a n g e( n ) :
A [ i , i ] = i +1 p r i n t("A = ") p r i n t(A)
Utilisation de fonctions
Copier dans exo3.py les instructions suivantes et les éxecuter.
d e f f ( x ) : y = x∗∗3 r e t u r n y
p r i n t( f ( np . a r a n g e ( 4 ) ) )
3. Outils graphiques
De puissants outils graphiques sont fournis avec Python. On en donne ici quelques exemples.
Exercice 4. Comprendre les codes suivants.
Graphique de fonction
p l t . f i g u r e ( 1 ) p l t . c l f ( )
t = np . a r a n g e ( 0 . , 5 . , 0 . 2 )
p l t . p l o t ( t , t , ’ r ’, t , t∗ ∗2 , ’ b s ’, t , t∗ ∗3 ,
’ g ^ ’)
Textes et légendes
p l t . x l a b e l (’ a b s c i s s e s ’) p l t . y l a b e l (’ o r d o n n e e s ’)
p l t . l e g e n d ( [ ’ x ’ , ’ x ^2 ’, ’ x ^3 ’ ] , l o c =2)
Un exemple plus complet
t = np . l i n s p a c e ( 0 , 2∗np . p i , 4 0 0 ) x = np . c o s ( t )
y = np . s i n ( t ) z = np . s i n ( t∗ ∗2 ) p l t . f i g u r e ( 2 ) p l t . c l f ( )
p l t . s u b p l o t ( 3 , 1 , 1 )
p l t . p l o t ( t , z , ’ r−. ’ , lw =3) p l t . x l a b e l (’ t ’)
p l t . y l a b e l (’ s i n ( t ^ 2 ) ’) p l t . s u b p l o t ( 3 , 1 , 2 ) p l t . p l o t ( t , x , ’m ’ ) p l t . p l o t ( t , y ,’ c ’)
p l t . l e g e n d ( [ ’ c o s ’ , ’ s i n ’ ] ) p l t . s u b p l o t ( 3 , 1 , 3 )
p l t . l o g l o g ( x , x∗∗2 , ’+k ’ ) p l t . a x i s ( [ −1 , 1 , −1 , 1 ] ) p l t . s u p t i t l e (’ Gros t i t r e ’)