import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.optimize import curve_fit
mesures=pd.read_csv('mesures.csv',sep=';',decimal=',')
Mais la variable possède un type difficile à appréhender
type(mesures)
Aussi, on la convertit en un tableau
mesures=pd.DataFrame(mesures).to_numpy()
## Affichage
mesures
Les valeurs récupérées sont des distances en cm. Il est nécessaire de les convertir en mètre pour vérifier la formule de conjugaison.
mesures_en_mètre=mesures/100
## Affichage
mesures_en_mètre
L'opération de division par 100 se fait sur chacunes des valeurs du tableau. Pas de double boucle à gérer.
inverses=1/mesures_en_mètre
## Affichage
inverses
Idem. L'opération se fait sur chacune des valeurs du tableau.
On récupère chacunes des colonnes de valeurs.
abscisses=[row[0] for row in inverses]
ordonnees=[row[1] for row in inverses]
Puis on trace l'un en fonction de l'autre, avec des croix (+) rouges (r).
plt.plot(abscisses,ordonnees,'r+')
plt.show()
Il faut ajuster les axes.
# Création d'un système d'axes appelé "axes"
axes = plt.gca()
# On choisit les bornes.
axes.set_xlim(-5, 1)
axes.set_ylim(-1, 5)
# Les axes gauche et bas se croisent en (0,0)
axes.spines['left'].set_position('zero')
axes.spines['bottom'].set_position('zero')
# On efface les axes restants.
axes.spines['right'].set_color('none')
axes.spines['top'].set_color('none')
# On trace la courbe dans le nouveau système d'axes.
plt.plot(abscisses,ordonnees,'r+',label='data')
plt.legend()
plt.show()
def modele(x, a, b):
return a*x+b
pop, covop = curve_fit(modele, abscisses, ordonnees)
aop, bop = pop
abscisse_modele=np.linspace(-6, 1, 300)
ordonnee_modele=modele(abscisse_modele,aop,bop)
# Création d'un système d'axes appelé "axes"
axes = plt.gca()
# On choisit les bornes.
axes.set_xlim(-6, 1)
axes.set_ylim(-1, 6)
# Les axes gauche et bas se croisent en (0,0)
axes.spines['left'].set_position('zero')
axes.spines['bottom'].set_position('zero')
# On efface les axes restants.
axes.spines['right'].set_color('none')
axes.spines['top'].set_color('none')
# On trace la courbe dans le nouveau système d'axes.
plt.plot(abscisses,ordonnees,'r+',label='data')
plt.plot(abscisse_modele, ordonnee_modele, label='fit')
plt.legend()
plt.show()