0% ont trouvé ce document utile (0 vote)
6 vues9 pages

Annexe

Ce document fournit une référence sur la syntaxe et les fonctionnalités de Python, en mettant l'accent sur l'utilisation de modules comme numpy pour les calculs numériques. Il aborde les types de données de base, les fonctions numériques, les opérations sur les vecteurs et matrices, ainsi que l'utilisation de matplotlib pour la création de graphiques. Les bonnes pratiques de codage et les erreurs courantes, comme la gestion des 'nan', sont également discutées.

Transféré par

Đinh Như Đức
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues9 pages

Annexe

Ce document fournit une référence sur la syntaxe et les fonctionnalités de Python, en mettant l'accent sur l'utilisation de modules comme numpy pour les calculs numériques. Il aborde les types de données de base, les fonctions numériques, les opérations sur les vecteurs et matrices, ainsi que l'utilisation de matplotlib pour la création de graphiques. Les bonnes pratiques de codage et les erreurs courantes, comme la gestion des 'nan', sont également discutées.

Transféré par

Đinh Như Đức
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Annexe A

Référence python

Préambule
La syntaxe de python permet de couper les lignes trop longues, mais il est recommandé, pour
que le code reste lisible, d’adopter une indentation claire. Par exemple

def une_fonction_compliquee(x) :
return x+[Link](x)+[Link](-x)*[Link]([Link](x**2+1))-
x**[Link]

L’exemple suivant montre à l’inverse des pratiques à éviter (couper l’expression à un endroit qui
complique sa lecture, ne pas aligner les débuts de la formule verticalement)

def une_fonction_compliquee(x) :
return
x+[Link](x)+[Link](-x)*[Link]([Link](x**2+1))-x**[Link]

1 Les modules
Une des particularités de python concerne les modules. Lorsque python démarre, il ne sait
pratiquement rien faire. Selon les besoins, on doit lui fournir un ensemble de fonctions appelé
module. Il existe des milliers de modules pour python, allant du très général au très spécifique.
L’intérêt de ce système est de sélectionner uniquement les modules qui seront utilisés dans le
programme, cela permet de garder de la mémoire dans l’ordinateur disponible pour notre travail.
Au début d’un programme python on trouve donc des directives qui donnent à python la liste
des modules qu’il doit charger. Le module que nous utiliserons le plus s’appelle numpy et on peut
le charger grâce à la ligne suivante

import numpy

Supposons que nous souhaitons utiliser la fonction «valeur absolue». On peut l’appeler à l’aide de
la syntaxe [Link].
On peut aussi préférer utiliser un autre nom plus court à la place du nom original :

50
import numpy as npy
La valeur absolue s’obtient alors à l’aide de la syntaxe [Link]. Cette méthode est très souvent
utilisée, mais nécessite de bien garder en tête les synonymes donnés en début de programme. 1
On peut aussi préférer importer explicitement les fonctions dont on aura besoin
from numpy import abs, cos, exp
auquel cas on les obtient sans préfixe : abs. Les autres fonctions du module numpy sont en revanche
inaccessibles.

2 Types basiques
2.1 Les nombres
Python connaît les nombres entiers, les nombres réels et les nombres complexes. Cependant,
la représentation numérique de ces nombres a des conséquences importantes sur les calculs et la
manière de les effectuer. À la fin du TD1, par exemple, il y a un exemple du rôle de la représentation
des nombres réels par des «nombres décimaux à virgule flottante».
Dans ce cours, il n’y a pas à se soucier de savoir si python utilise un entier ou un réel dans les
calculs, les conversions éventuelles se font automatiquement. Sachez toutefois que le module numpy,
que nous utiliserons beaucoup dans tout le cours, permet de gérer différents types numériques pour
les nombres entiers, réels et complexes, c’est-à-dire différentes représentations des nombres sous
forme de 0 et 1, qui ont toutes des propriétés différentes.
Un nombre étrange apparaît parfois dans un résultat, il s’agit de nan, ce qui signifie not a
number, autrement «résultat absurde» ou «impossible». C’est par exemple ce que l’on obtient
en calculant [Link](-1) ou bien en multipliant l’infini inf par 0. nan est un «nombre»
particulier qui indique qu’une erreur a eu lieu dans un calcul. Tous les calculs contenant un élément
nan ont pour résultat nan, de même les comparaisons avec un autre nombre sont toujours fausses,
même la condition nan==nan est fausse ! Pour tester si un nombre vaut nan, il faut utiliser la
fonction [Link].

2.2 Les tableaux


Le langage python permet de créer facilement des tableaux de nombres pouvant servir dans
les fonctions vectorisées. Il faut pour cela utiliser la fonction [Link]. Elle s’utilise en
donnant les bornes du tableau et le nombre de points souhaités.
x=[Link](0,10,11)
retourne le tableau [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].

2.3 Les chaînes de caractères


Pour ajouter bout-à-bout («concaténer») deux chaînes de caractères, on utilise le signe + :
s=’Hello ’ + ’world’ + ’ !’
est équivalent à s=’Hello world !’.
str convertit un object en chaîne de caractère, pour afficher un résultat à l’écran.
print permet d’afficher des objets à l’écran, quand cela est possible. On peut utiliser
autant d’argument que l’on souhaite, qui seront affichés sur une même ligne.
À la fin de son exécution, print revient à la ligne.
1. On évitera aussi, bien sûr de donner des noms sans rapport ou trompeurs comme import numpy as toto ou
import numpy as images !

V. Rossetto 51 L3 Physique 2021


3 Les fonctions numériques (numpy)
3.1 Fonctions d’un nombre
Ces fonctions prennent en argument un nombre (le plus souvent réel) et retournent un nombre.
Elles ne sont pas intégrées par défaut dans python, mais sont accessibles dans le module numpy.
Voici une liste des fonctions les plus simples de numpy.

abs La fonction valeur absolue x ÞÑ |x|.


arccos La fonction arc-cosinus Arccos ou cos´1 . ?
arccosh la fonction argument-cosinus hyperbolique x ÞÑ Argchx = ln(x + x2 ´ 1).
arcsin la fonction arc-sinus Arcsin ou sin´1 . ?
arcsinh la fonction argument-sinus hyperbolique. x ÞÑ Argshx = ln(x + 1 + x2 ).
arctan la fonction arc-tangente, Arctan ou tan´1 .
arctanh la fonction argument-tangente hyperbolique x ÞÑ Argthx = 12 ln 1+x
1´x
.
ceil La fonction arrondi à l’entier supérieur.
cos La fonction cosinus.
cosh La fonction cosinus hyperbolique ch.
exp La fonction exponentielle.
floor La fonction arrondi à l’entier inférieur.
log La fonction logarithme néperien ln.
round La fonction arrondi à l’entier le plus proche.
sin La fonction sinus.
sinh La fonction sinus hyperbolique?sh.
sqrt La fonction racine carrée x ÞÑ x.
sin x
tan La fonction tangente, x ÞÑ tan x = cos x
.
sh x
tanh la fonction tangente hyperbolique x ÞÑ th x = ch x
.

3.2 Fonctions d’un vecteur


Les fonctions suivantes prennent en argument un vecteur.

max calcule le plus grand élément du vecteur.


min calcule le plus petit élément du vecteur.
prod calcule le produit des éléments du vecteur.
sum calcule la somme des éléments du vecteur.

3.3 Fonctions à plusieurs résultats


Parfois on a besoin d’obtenir plusieurs résultats avec une seule fonction. Par exemple, le résultat
d’un calcul et le nombre de boucles effectuées. Dans ce cas, on peut retourner un couple, un triplet
et plus généralement un n-uplet, c’est-à-dire une structure du type

(3.14159, 1343, ’pi’)

qui peut contenir autant d’objets que l’on souhaite (3, sur cet exemple, c’est donc un triplet),
sans se soucier de leur type. Supposons que le triplet ci-dessus soit le résultat d’une fonction
calcule_pi. Dans le code de cette fonction on a la commande return suivante :

V. Rossetto 52 L3 Physique 2021


def calcule_pi(precision) :
#plein de lignes...
return value, n_iter, name

On doit alors enregistrer toutes les valeurs retournées, comme ceci


x, n, s=calcule_pi(0.001)

La variable x vaut maintenant 3, 14159, la variable n vaut 1343 et la chaine s contient ’pi’.

3.4 Algèbre linéaire


Les vecteurs (array)
Les vecteurs en python sont des tableaux qui ressemblent au type list. On les crée en conver-
tissant un objet list avec la fonction array, qui crée un objet de type [Link].

Les indices des vecteurs fonctionnent comme les indices de liste.

Les vecteurs possèdent de nombreuses méthodes, dont beaucoup ont une fonction associée qui
donne le même résultat. Le choix entre les deux syntaxes est laissé au programmeur.

Opérations élémentaires avec les vecteurs


fonction méthode ou descriptif
descripteur
in test d’appartenance, x in vect est vrai si une co-
ordonnée de vect vaut x ;
not in le contraire de in ;
max [Link]() le plus grand élément ;
min [Link]() le plus petit élément ;
sorted retourne une liste triée (type list) des éléments
du vecteur ;
[Link]() trie les éléments du vecteur ;
[Link] convertit un objet en vecteur ;
[Link] fonctionne comme range mais construit un vecteur
avec les nombres obtenus ;
[Link] [Link](vecteur) produit scalaire : [Link](u,v) et [Link](u)
retournent le produit scalaire de u et v ;
[Link] [Link]() la moyenne des éléments ;
[Link] [Link]() le produit des éléments ;
[Link] [Link] nombre d’éléments ;
[Link] [Link]() la somme des éléments ;
[Link](uplet) crée un vecteur contenant uniquement des zéros
dont les dimensions sont données par l’uplet, on
écrira donc [Link]((3,4)).

Les matrices (array)


Une matrice est un vecteur de vecteurs. Pour désigner un élément de matrice, on peut utiliser
deux syntaxes équivalentes.

V. Rossetto 53 L3 Physique 2021


Les syntaxes m[I ][J ] et m[I ,J ] sont équivalentes.

Ceci est vrai que I et J soit de simples indices ou des séries d’indices de slicing telles que
0:3 :-1 ou encore 2:

La première d’une colonne d’une matrice A est donc obtenue avec la syntaxe
A[0,:] ou A[0][:]

Certaines fonctions sur les vecteurs prennent sens seulement lorsqu’elles utilisées avec des ma-
trices et sont donc mentionnées ici.

Opérations élémentaires avec les matrices


fonction méthode ou descriptif
descripteur
[Link] [Link] le nombre de dimensions de l’objet de type
[Link] (vaut 1 pour un vecteur, 2 pour
une matrice) ;
[Link] [Link] un uplet contenant les dimensions de la matrice ;
[Link] [Link]() la trace de la matrice ;
[Link] [Link]() retourne la matrice transposée.

3.5 Calcul vectoriel


Les tableaux suivants présentent les opérations d’algèbre linéaire les plus courantes. Atten-
tion ! certaines opérations ont des syntaxes inhabituelles et trompeuses.

Table A.2 – Opérations entre un nombre a et un vecteur x dont le résultat est un vecteur y

code Signification formule


y=x+a Ajoute le nombre a à tous les éléments de x. yi = xi + a
y=a+x
y=x*a Multiplie par a tous les éléments de y. yi = axi
y=a*x
y=x-a Retire a de tous les éléments de x. yi = xi ´ a
y=a-x Soustrait de a tous les éléments de x. yi = a ´ xi
y=x/a Divise par a tous les éléments de x (avec a ‰ 0). yi = xi /a
y=a/x Divise a par les tous éléments de x (@i, xi ‰ 0). yi = a/xi
y=x**a Élève tous les éléments de x à la puissance a. yi = (xi )a
y=a**x Calcule a à la puissance des éléments de x. yi = ax i

V. Rossetto 54 L3 Physique 2021


Table A.3 – Opérations entre deux vecteurs x et y dont le résultat est un vecteur z

code Signification formule


z=x+y Somme des vecteurs z = x + y. z i = xi + yi
z=x-y Différence des vecteurs z = x ´ y. z i = xi ´ yi
z=x*y Produit terme à terme des éléments de vecteurs (pas de z i = xi yi
notation mathématique).
z=x/y Quotient terme à terme des éléments des vecteurs (pas zi = xi /yi
de notation mathématique).
z=x**y Exponentiation terme à terme des éléments des vecteurs zi = (xi )yi
(pas de notation mathématique).

Table A.4 – Opérations entre un vecteur x et une matrice A de taille n ˆ p

code Signification formule


p
ÿ
y=[Link](x) Calcule le produit à droite (produit habituel) yi = aij xj
y=[Link](A,x) y = Ax. La taille de x doit être égale au nombre j=1
de colonnes de A. La taille de y est égale au
nombre de lignes de A.

B=A*x B=x*A Calcule la matrice B dont chaque colonne est bij = aij xj
multipliée par l’élément correspondant de x. La
taille de x doit être égale au nombre de colonnes
de A.
n
ÿ
y=[Link](A) Calcule le produit à gauche y = txA. La taille yj = xi aij
y=[Link](x,A) de x doit être égale au nombre de lignes de A. i=1

V. Rossetto 55 L3 Physique 2021


4 Les fonctions graphiques (matplotlib)
La bibliothèque qui permet de faire des graphiques avec python que nous utiliserons s’appelle
[Link]. Pour simplifier on lui donne souvent un alias. Dans ce cours, j’utiliserai
mplot, ce qui se déclare de la façon suivante
import [Link] as mplot

en début de fichier. Si les graphiques sont destinés à une visualisation immédiate, il vaut mieux
activer le mode «interactif» avec la commande
[Link]()

4.1 Tracer une courbe (plot)


Cette fonction permet de tracer une ou plusieurs courbes dans une fenêtre graphique. Elle
s’utilise avec deux tableaux de même taille, le premier contient les valeurs des abscisses et le
second celui des ordonnées. Par exemple :
[Link](x,y, label=’y(x)’)

Pour tracer plusieurs courbes, il suffit d’ajouter une ligne avec la même fonction. python trace
automatiquement les courbes sur la même figure.
Pour modifier le tracé d’une courbe, on peut ajouter après les vecteurs d’abscisses et d’ordonnées
une chaîne de caractères qui modifie le tracé de la paire précédente. Voici quelques exemples, la
liste complète se trouve dans l’aide disponible avec la commande help([Link]).
Styles de points
Couleurs
’x’ croix
’b’ bleu foncé
’o’ ronds Styles de ligne
’c’ bleu clair
’*’ étoiles ’-’ ligne continue
’g’ vert clair
’s’ carrés ’--’ tirets
’k’ noir
’d’ losanges ’:’ pointillés
’m’ magenta
’^’, ’>’, ’v’, ’<’ triangles ’.-’ points et tirets
’r’ rouge
’p’ pentagones
’w’ blanc
’h’ hexagones
Ainsi pour tracé un courbe en pointillés magenta avec des étoiles on écrit
[Link](x,y,’m*:’)

Il est également possible de modifier la largeur du tracé, mais pour cela, la syntaxe est différente.
Par exemple [Link](x,y,linewidth=2) trace les lignes avec une largeur double.

Note
Les styles de ligne peuvent aussi être donnés sous la forme plus explicite : color=’red’,
marker=’x’, linestyle=’:’.

semilogx fait la même chose que plot avec l’axe des abscisses en échelle
logarithmique.
semilogy Fait la même chose que plot avec l’axe des ordonnées en échelle
logarithmique.
loglog Fait la même chose que plot avec les deux axes en échelle logarith-
mique.

V. Rossetto 56 L3 Physique 2021


4.2 Légendes, titre etc.
title Cette commande permet de donner un titre à la figure de la figure
courante.
xlabel Cette commande permet de nommer l’axe des abscisses de la figure
courante.
ylabel Cette commande permet de nommer l’axe des ordonnées de la figure
courante.
legend Cette commande permet de nommer les différentes courbes de la
figure courante. Les noms des courbes doivent être entrés dans le
même ordre que les données dans la commande plot (ou son équi-
valent).

4.3 Enregistrer une figure


La commande savefig permet d’enregistrer la dernière figure (la figure courante) dans un
fichier image. Il existe de nombreux formats disponibles, le format est choisi automatiquement en
fonction de l’extension donnée. Par exemple
[Link](’nom_du_fichier.png’)

enregistre la figure courante au format PNG.


savefig(fname, dpi=None, facecolor=’w’, edgecolor=’w’,
orientation=’portrait’, papertype=None, format=None,
transparent=False, bbox_inches=None, pad_inches=0.1,
frameon=None, metadata=None)

4.4 Exemple complet


Voici un exemple complet de tracé d’une fonction simple.
# Importation des fonctions dont nous aurons besoin
from numpy import linspace, sin
import [Link] as mplot

# Matplotlib en mode interactif


[Link]()

# Définition des paramètres pour le tracé


xmin=0
xmax=10
n_points=100

# Le vecteur des abscisses


x=linspace(xmin, xmax, n_points)

# Le vecteur des ordonnées


y=sin(x)

# Définition de la taille de la figure


[Link](figsize=(13,8))

V. Rossetto 57 L3 Physique 2021


# Définition de la taille des caractères
[Link]({’[Link]’: 22})

# Placement de la légende dans le coin en bas à gauche


[Link]({’[Link]’: ’lower left’})

# On trace la courbe
[Link](x, y, label=’sinus’)

# On ajoute les légendes des axes


[Link]()
[Link](r’$x$’) # Le ’r’ devant la chaîne indique qu’on
[Link](r’$y=\sin(x)$’) # utilise LaTeX pour écrire les légendes.

5 Autres fonctions
5.1 Mesure du temps
Pour chronométrer le temps mis par une opération, le module time est très simple à utiliser.
L’instruction time.perf_counter() permet d’obtenir l’horaire d’une horloge interne à python
exprimé en secondes sous forme d’un nombre réel. On pourra donc l’utiliser pour enregistrer
l’horaire avant et après une opération et calculer la différence.

V. Rossetto 58 L3 Physique 2021

Vous aimerez peut-être aussi