# -*- coding: utf-8 -*- """Tracé d'un graphique de points expérimentaux et modélisation avec une droite.""" import numpy as np import matplotlib.pyplot as plt # listes des points expérimentaux - elles doivent avoir la même longueur! # pression en hPa p = [1021,1057,1092,1132,1164,1209,1253,1308,1363,1419,1479,1539,1618,1713,1800,1899] # volume en mL Delta_V = [30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15] def calculer_inverse(liste_valeurs): """Fonction calculant l'inverse de chaque valeur d'une liste. exemple: inverse_p = calculer_inverse( p )""" nouvelle_liste = [] for v in liste_valeurs: nouvelle_liste.append(1 / v) return nouvelle_liste # on trace Y en fonction de X X = calculer_inverse(p) Y = Delta_V # on modélise Y en fonction de X par une droite y = a x + b [a, b] = np.polyfit(X, Y, 1) #on récupère une fonction permettant de calculer les valeurs grâce au modèle equation_droite = np.poly1d([a, b]) #fabrique le texte pour l'équation y=b + a.x. text_equation_droite = f"modèle y= a.x + b avec\n a = {a:0.2f} et b = {b:0.2f}" # données à tracer plt.plot(X, Y, "b+", label="points expérimentaux") plt.plot(X, equation_droite(X), "r--", lw=1, label=text_equation_droite) plt.legend(loc="lower right") # paramètres du graphique: titre, légendes, limites, etc. plt.title('$\\Delta V$ en fonction de $\\frac{1}{p}$') #plt.axis("square") # pour avoir la même échelle sur les axes (peut être omis) #plt.xlim(0, 8) # valeurs min et max pour l'axe des x (peut être omis) plt.xlabel("$\\frac{1}{p}$ (en $hPa^{-1}$)") #plt.ylim(0, 10) # valeurs min et max pour l'axe des y (peut être omis) plt.ylabel("$\\Delta V$ (en $mL$)") # affichage du graphique plt.show()