Calculer les modèles simples avec la fonction polyfit

polyfit est une fonction de la bibliothèque numpy qui permet, comme son nom l'indique, d'obtenir les paramètres de modélisations polynomiales. Elle est d'une utilisation plus simple que curve_fit.

MéthodeUtilisation de la fonction

On commence par importer la bibliothèque numpy.

1
import numpy as np

On suppose qu'on dispose de deux listes :

  • les données en abscisses : X ;

  • les données en ordonnées : Y.

On utilise polyfit comme indiqué ci-dessous si on souhaite une modélisation de degré 2 du type \(Y = a \cdot X^2 + b\cdot X +c\).

1
coefficients = np.polyfit(X, Y, 2)

coefficients est une liste telle que dans notre exemple :

  • coefficients[0] est le paramètre a ;

  • coefficients[1] est le paramètre b ;

  • coefficients[2] est le paramètre c ;

ExempleObtention de l'équation d'une trajectoire dans le cas d'un mouvement parabolique

On suppose qu'on a effectué un pointage sur le lancé d'une balle de golf.

On dispose des listes des abscisses et des ordonnées.

On souhaite placer sur le même graphique :

  • les positions pointées ;

  • la trajectoire modélisée avec son équation.

Le programme ci-dessous exploite la fonction polyfit pour obtenir l'équation de la trajectoire et tracer les représentations souhaitées.

Affichage des positions successives et de la trajectoire modéliséeInformations[1]
1
"""Ce programme illustre l'utilisation de polyfit pour obtenir l'équation d'une trajectoire
2
à partir de positions issues d'un pointage sur une vidéo"""
3
4
import matplotlib.pyplot as plt  # Importation de la bibliothèque graphique
5
import numpy as np  # Importation de numpy pour utiliser la fonction polyfit
6
"""Ci-dessous : saisies des listes des abscisses et des ordonnées issues de pointages"""
7
x = [-1.15, -1.05, -0.95, -0.84, -0.73, -0.63, -0.52, -0.41, -0.31, -0.20, -0.09, 0.02, 0.13, 0.23, 0.34, 0.45, 0.56, 0.67, 0.77, 0.88, 0.98, 1.08]
8
y = [0.09, 0.22, 0.33, 0.43, 0.51, 0.57, 0.62, 0.64, 0.65, 0.64, 0.62, 0.57, 0.51, 0.43, 0.33, 0.21, 0.07, -0.08, -0.25, -0.44, -0.65, -0.87]
9
10
"""Utilisation de la fonction polyfit pour déterminer les paramètres de la modélisation parabolique de la
11
trajectoire : y = a.x² + b.x + c"""
12
13
coefficients = np.polyfit(x, y, 2)  # Les arguments de polyfit sont la liste en abscisses, la liste en ordonnées et le degré du polynôme
14
15
"""Calcul du modèle pour 100 valeurs prises entre xmin et xmax"""
16
xmod = np.linspace(min(x), max(x), 100)
17
modele = [coefficients[2] + coefficients[1] * val + coefficients[0] * val**2 for val in xmod]  # Calcul du modèle
18
19
"""On place sur un même graphique les pointages et la trajectoire modélisée"""
20
plt.figure(1)
21
plt.scatter(x, y, marker = "o", color = "blue", label = "Positions")
22
plt.plot(xmod, modele, color = "red", label = f"Modélisation : y = {coefficients[0]:.2f}x² + {coefficients[1]:.2f}x + {coefficients[2]:.2f}")  # L'étiquette (label) utilise les f-string pour la mise en forme
23
plt.xlabel("x (m)")
24
plt.ylabel("y (m)")
25
plt.legend()  # Affichage de la légende
26
plt.show()  # Affichage du graphique