Master SDII - Programmation en Python et Calcul Scientifique
A.U. 2024−2025
Calcul scientifique sur Python
Abdessamad OUSAADANE
ENSAM
14 novembre 2024
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 1 / 44
Plan de cours
1 Introduction aux modules
2 NumPy : Calcul Scientifique de Base
3 Matplotlib : Tracé de Courbes et Visualisation
4 SciPy : Méthodes Numériques et Calculs Avancés
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 2 / 44
1 Introduction aux modules
2 NumPy : Calcul Scientifique de Base
3 Matplotlib : Tracé de Courbes et Visualisation
4 SciPy : Méthodes Numériques et Calculs Avancés
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 3 / 44
Qu’est-ce qu’un Module en Python ?
Un module est un fichier contenant des instructions Python (fonctions,
classes, variables).
Il y a différents types de modules : ceux qui sont inclus dans la version
de Python comme random ou math, ceux que l’on peut rajouter
comme numpy ou matplotlib et ceux que l’on peut faire soi-même (il
s’agit dans les cas simples d’un fichier Python contenant un ensemble
de fonctions).
Exemple : [Link], [Link], [Link].
Un module peut être intégré à Python ou externe (installé avec pip).
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 4 / 44
Comment Installer un Module ?
Utilisation de pip pour installer des modules depuis PyPI (Python
Package Index).
Exemple pour installer NumPy :
pip install numpy
Vérifier si un module est installé avec :
pip show numpy
Installer un module spécifique dans un environnement virtuel :
python -m venv mon_environnement
pip install numpy
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 5 / 44
Importation d’un Module
Syntaxe de base pour importer un module :
import numpy
Utilisation d’un alias pour simplifier l’importation :
import numpy as np
Importer uniquement une fonction ou une classe spécifique :
from numpy import array
Exemple :
arr = [Link]([1, 2, 3])
print(arr)
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 6 / 44
Créer un Module Python Personnalisé
Créer un fichier Python, par exemple mon_module.py.
Ajouter des fonctions ou des classes dans ce fichier.
Exemple de module :
def addition(a, b):
return a + b
Importer et utiliser ce module dans un autre fichier :
import mon_module
print(mon_module.addition(2, 3)) # Affiche 5
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 7 / 44
Bonnes Pratiques d’importation
import numpy : Chargement complet du module, syntaxe
[Link]().
import numpy as np : Utiliser un alias pour rendre le code plus
lisible.
from numpy import array : Importer uniquement une fonction
spécifique.
À éviter : Utiliser from numpy import *, car cela peut entraîner des
conflits de noms.
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 8 / 44
1 Introduction aux modules
2 NumPy : Calcul Scientifique de Base
3 Matplotlib : Tracé de Courbes et Visualisation
4 SciPy : Méthodes Numériques et Calculs Avancés
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 9 / 44
Introduction à NumPy
NumPy est une bibliothèque essentielle pour le calcul scientifique en
Python.
Elle offre des structures de données puissantes et des fonctions
mathématiques rapides.
Utilisée pour effectuer des calculs sur des tableaux multidimensionnels.
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 10 / 44
Qu’est-ce que NumPy ?
NumPy (Numerical Python) est une bibliothèque open-source pour le
calcul scientifique.
Elle permet de travailler avec des tableaux (arrays) et des matrices à n
dimensions.
NumPy est très utilisé dans le traitement de données (Pandas),
l’analyse numérique (SciPy), et les simulations (Matplolib).
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 11 / 44
Avantages de NumPy par rapport aux listes Python
NumPy est plus rapide pour les calculs sur de grands ensembles de
données.
Les opérations sont vectorisées (calculs sur toute une série de données
en une seule opération).
Prise en charge des tableaux multidimensionnels et des fonctions
mathématiques avancées.
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 12 / 44
Importation de Numpy
Pour utiliser NumPy, il faut d’abord l’importer :
import numpy as np
Une fois importée, vous pouvez utiliser les fonctions et classes de
NumPy avec le préfixe np.
Création des tableaux avec NumPy
Pour créer un tableau NumPy à partir d’une liste Python :
arr = [Link]([1, 2, 3])
Vous pouvez créer des tableaux multidimensionnels :
arr_2d = [Link]([[1, 2], [3, 4]])
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 13 / 44
NumPy - Types de données et attributs des tableaux
Les types de données (dtype) dans NumPy :
arr = [Link]([1, 2, 3], dtype=np.float64)
Obtenez des informations sur un tableau :
[Link] # dimensions
[Link] # nombre d’éléments
[Link] # nombre de dimensions
Exemple de création d’un tableau avec un type spécifique :
arr = [Link]([1, 2, 3], dtype=np.float32)
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 14 / 44
NumPy - Indexation et Slicing
Accéder à un élément spécifique :
arr[0, 2] # Premiere ligne, troisième colonne
Utiliser le slicing :
arr[:, 1] # Deuxième colonne de toutes les lignes
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 15 / 44
NumPy - Opérations sur les Tableaux
Les opérations vectorisées :
arr1 + arr2 # Addition élément par élément
arr1 * arr2 # Multiplication élément par élément
Exemple d’addition :
arr1 = [Link]([1, 2, 3])
arr2 = [Link]([4, 5, 6])
print(arr1 + arr2) # Affiche [5 7 9]
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 16 / 44
NumPy - Broadcasting
Le broadcasting permet de faire des opérations sur des tableaux de
formes différentes :
arr = [Link]([1, 2, 3])
print(arr + 10) # Diffusion d’un scalaire
NumPy - Fonctions Statistiques
Moyenne, somme, écart type, variance :
[Link](arr) # Moyenne
[Link](arr) # Somme
[Link](arr) # Écart type
[Link](arr) # Variance
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 17 / 44
NumPy - Module Aléatoire
Générer des nombres aléatoires :
random_arr = [Link](3, 2)
# Tableau 3x2 avec nombres aléatoires
Générer des entiers aléatoires :
random_int = [Link](0, 10, size=(3, 2))
NumPy - Reshaping des Tableaux
Modifier la forme d’un tableau :
arr = [Link]([1, 2, 3, 4, 5, 6])
reshaped_arr = [Link](2, 3) # Tableau 2x3
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 18 / 44
NumPy - Fonctions Avancées
[Link] pour les opérations linéaires (déterminant, inverses, etc.)
Exemple de calcul du déterminant d’une matrice :
import numpy as np
A = [Link]([[1, 2], [3, 4]])
det_A = [Link](A)
print(det_A) # Affiche -2.0
[Link] pour la transformée de Fourier rapide (FFT)
Exemple de calcul de la transformée de Fourier d’un signal :
import numpy as np
t = [Link](0, 10, 1000)
signal = [Link](2 * [Link] * 1 * t)
# Signal sinusoïdal à 1 Hz
fft_signal = [Link](signal)
print(fft_signal[:5])
# Affiche les premières valeurs de la FFT
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 19 / 44
1 Introduction aux modules
2 NumPy : Calcul Scientifique de Base
3 Matplotlib : Tracé de Courbes et Visualisation
4 SciPy : Méthodes Numériques et Calculs Avancés
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 20 / 44
Introduction à Matplotlib
Matplotlib est une bibliothèque de visualisation de données en Python.
Permet de créer divers types de graphiques : courbes, histogrammes,
barres, etc.
Utilisée pour l’exploration de données et la présentation de résultats
scientifiques.
La fonction de base est pyplot, accessible avec
import [Link] as plt.
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 21 / 44
Syntaxe de base pour tracer une courbe
Syntaxe pour tracer une courbe simple :
import [Link] as plt
import numpy as np
x = [Link](0, 10, 100)
y = [Link](x)
[Link](x, y)
[Link]()
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 22 / 44
Graphiques de base - Barres, Histogrammes et Scatter Plots
Graphiques à barres : Comparaison de valeurs entre catégories.
Histogrammes : Distribution d’une série de données.
Scatter Plots : Visualisation de la relation entre deux variables.
Exemples
# Barres
categories = [’A’, ’B’, ’C’]
values = [10, 15, 7]
[Link](categories, values)
# Histogramme
data = [Link](1000)
[Link](data, bins=30)
# Scatter Plot
x = [Link](50)
y = [Link](50)
[Link](x, y)
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 23 / 44
Exemples
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 24 / 44
Titre et étiquettes des axes
[Link]() : définit le titre du graphique.
[Link]() et [Link]() : ajoutent des étiquettes aux axes.
[Link](True) : ajoute une grille pour faciliter la lecture des
données.
Exemple
[Link](x, y)
[Link]("Graphique de $\sin(x)$")
[Link]("Axe x")
[Link]("Axe y")
[Link](True)
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 25 / 44
Exemple
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 26 / 44
Styles et couleurs des courbes
color : couleur de la courbe (ex : ’r’ pour rouge).
linestyle : style de la ligne (ex : ’–’ pour une ligne pointillée).
marker : marqueurs de points de données (ex : ’o’ pour des cercles).
label : ajoute une légende pour identifier la courbe.
Exemple
[Link](x, y, color=’r’, linestyle=’--’, marker=’o’,
label=’sin(x)’)
[Link]()
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 27 / 44
Exemple
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 28 / 44
Tracé de plusieurs courbes
Matplotlib permet de superposer plusieurs courbes dans un même
graphique.
Exemple avec sin(x) et cos(x)
y2 = [Link](x)
[Link](x, y, label=’sin(x)’, color=’b’)
[Link](x, y2, label=’cos(x)’, color=’g’)
[Link]("Courbes de $\sin(x)$ et $\cos(x)$")
[Link]("x")
[Link]("y")
[Link]()
[Link](True)
[Link]()
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 29 / 44
Exemple
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 30 / 44
Organisation des sous-graphiques (Subplots)
La fonction [Link]() permet de créer plusieurs graphiques
dans une même figure.
Utile pour comparer plusieurs données côte à côte.
Exemple
fig, axs = [Link](1, 2, figsize=(10, 5))
axs[0].plot(x, y, ’r’)
axs[0].set_title("$\sin(x)$")
axs[1].plot(x, y2, ’g’)
axs[1].set_title("$\cos(x)$")
[Link]()
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 31 / 44
Exemple
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 32 / 44
Graphiques 3D
Matplotlib permet de tracer des graphiques en 3D pour des
visualisations avancées.
Exemple de la fonction sin(x) · cos(y )
from mpl_toolkits.mplot3d import Axes3D
x = [Link](-5, 5, 100)
y = [Link](-5, 5, 100)
X, Y = [Link](x, y)
Z = [Link](X) * [Link](Y)
fig = [Link]()
ax = fig.add_subplot(111, projection=’3d’)
ax.plot_surface(X, Y, Z, cmap=’viridis’)
[Link]()
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 33 / 44
Exemple
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 34 / 44
Exemple pratique - Visualisation de données simulées
Évolution d’une fonction mathématique
x = [Link](0, 10, 100)
y1 = [Link](x)
y2 = [Link](x) * [Link](-x/5)
[Link](x, y1, color=’b’, linestyle=’-’, label=’sin(x)’)
[Link](x, y2, color=’r’, linestyle=’--’,
label=’cos(x)*exp(-x/5)’)
[Link]("Visualisation d’une Fonction Mathématique")
[Link]("x")
[Link]("y")
[Link]()
[Link](True)
[Link]()
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 35 / 44
Exemple
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 36 / 44
1 Introduction aux modules
2 NumPy : Calcul Scientifique de Base
3 Matplotlib : Tracé de Courbes et Visualisation
4 SciPy : Méthodes Numériques et Calculs Avancés
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 37 / 44
Introduction à SciPy
SciPy est une bibliothèque de calcul scientifique avancé, construite sur
NumPy.
Elle fournit des sous-modules pour résoudre des problèmes
d’optimisation, d’intégration, d’algèbre linéaire, et de calcul
scientifique.
Les sous-modules importants pour notre cours :
[Link] pour l’optimisation,
[Link] pour la résolution d’équations différentielles,
[Link] pour l’algèbre linéaire.
Syntaxe d’importation : import scipy as sp
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 38 / 44
Optimisation avec [Link]
Le module [Link] est essentiel pour résoudre des problèmes
d’optimisation, notamment ceux que l’on rencontre dans les méthodes
d’optimisation sans contraintes.
Il permet de minimiser (ou maximiser) des fonctions, et de résoudre
des problèmes d’optimisation de manière numérique.
[Link] est une fonction clé qui trouve le
minimum d’une fonction.
Exemple de minimisation
from [Link] import minimize
def f(x):
return x**2 + 3*x + 2
result = minimize(f, x0=0) # Recherche du minimum de f(x)
print(result)
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 39 / 44
Résolution d’équations différentielles avec [Link]
Le module [Link] permet de résoudre des équations
différentielles, ce qui est essentiel dans certains problèmes
d’optimisation dynamique.
La fonction solve_ivp permet de résoudre des équations
différentielles ordinaires avec des conditions initiales données.
Exemple de résolution d’une EDO
from [Link] import solve_ivp
def ode(t, y):
return -2 * y # EDO : dy/dt = -2y
solution = solve_ivp(ode, [0, 10], [1])
# Conditions initiales y(0) = 1
print(solution.y) # Résultat : La solution est un vecteur
représentant la solution à chaque instant t
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 40 / 44
Calcul linéaire avec [Link]
[Link] fournit des fonctions pour les calculs matriciels
avancés, ce qui est utile pour les problèmes d’optimisation qui
nécessitent des opérations sur les matrices (ex. : les algorithmes du
gradient).
Exemple de décomposition LU
from [Link] import lu
import numpy as np
A = [Link]([[3, 2], [1, 4]])
P, L, U = lu(A) # Décomposition LU de A
print(L, U)
Résultat : La matrice A est décomposée en une matrice triangulaire
inférieure (L) et une matrice triangulaire supérieure (U).
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 41 / 44
Exemple pratique : Optimisation d’une fonction
Application de minimize pour trouver un minimum local d’une fonction
donnée, f (x) = x 4 − 3x 3 + 2 sur l’intervalle [−5, 5], avec x0 = 0.
from [Link] import minimize
import [Link] as plt
def complex_func(x):
return x**4 - 3*x**3 + 2
result = minimize(complex_func, x0=0)
# Recherche du minimum de complex_func(x)
x_vals = range(-5, 5)
y_vals = [complex_func(x) for x in x_vals]
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 42 / 44
Exemple pratique : Visualisation des résultats
[Link](x_vals, y_vals, label=’Fonction’)
[Link](result.x, complex_func(result.x), ’ro’,
label=’Minimum’)
[Link]()
[Link]()
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 43 / 44
Exemple pratique : Visualisation des résultats
Abdessamad OUSAADANE (ENSAM) Calcul scientifique sur Python 14 novembre 2024 44 / 44