Bonjour, voici mon code
import matplotlib.pyplot as plt
from math import*
x=[23.9,26.2,29.3,33.3,37.9,43.2,48.9,54.9,61,67.7,73.8,80.1,83.4,92.5,98.2,102.7,103,103.1,103.1,103.1]
y=[106.3,97.92,89.28,78.81,65.12,55.03,46.26,38.99,32.22,26.57,21.71,18.15,15.21,13.03,10.9,9.55,9.45,9.45,9.45,9.45]
plt.plot(x, y, color='g', linestyle='-',marker='o')
plt.ylabel('Resistance en Ohm')
plt.xlabel("Temperature (C)")
plt.show()
def f(x):
return 37,936*exp(10,082/x)
X = np.arange(20, 105, 10000)
Y = [ f(x) for x in X ]
plt.plot(X, Y, color='g', linestyle='-',marker='o')
plt.show()
Merci beaucoup pour la virgule, ça me sauve!!!
Oui j'ai trouvé une modèle de la forme 37,936*exp(10,082/x).
Mais je n'arrive pas à afficher les deux en même temps, lorsque j'affiche ma fonction pour le modèle, il ne m'affiche qu'un point...
# module pour le systeme d'exploitation
import os
# module specifique pour le systeme
import sys
import numpy as np
import matplotlib.pyplot as plt
# effacement de l'ecran
os.system('cls')
x=[23.9,26.2,29.3,33.3,37.9,43.2,48.9,54.9,61,67.7,73.8,80.1,83.4,92.5,98.2,102.7,103,103.1,103.1,103.1]
y=[106.3,97.92,89.28,78.81,65.12,55.03,46.26,38.99,32.22,26.57,21.71,18.15,15.21,13.03,10.9,9.55,9.45,9.45,9.45,9.45]
T_MIN = 20.0
T_MAX = 105.0
T_NB = 100
T = np.linspace(T_MIN, T_MAX, T_NB)
# modele
M = 37.936 * np.exp(10.082 / T)
plt.plot(T, M, color = 'r', linestyle = '-')
plt.plot(x, y, color = 'g', linestyle = '-', marker = 'o')
plt.ylabel('Resistance en Ohm')
plt.xlabel("Temperature (C)")
# traces
plt.show()
petite modif...
# module pour le systeme d'exploitation
import os
# module specifique pour le systeme
import sys
import numpy as np
import matplotlib.pyplot as plt
# effacement de l'ecran
os.system('cls')
x = np.array([23.9,26.2,29.3,33.3,37.9,43.2,48.9,54.9,61,67.7,73.8,80.1,83.4,92.5,98.2,102.7,103,103.1,103.1,103.1])
y = np.array([106.3,97.92,89.28,78.81,65.12,55.03,46.26,38.99,32.22,26.57,21.71,18.15,15.21,13.03,10.9,9.55,9.45,9.45,9.45,9.45])
[A, B] = np.polyfit(x, np.log(y), 1)
T_MIN = 20.0
T_MAX = 105.0
T_NB = 100
T = np.linspace(T_MIN, T_MAX, T_NB)
# modele
M = np.exp(B) * np.exp(A * T)
plt.plot(T, M, color = 'r', linestyle = '-')
plt.plot(x, y, color = 'g', linestyle = '', marker = 'o')
plt.ylabel('Resistance en Ohm')
plt.xlabel("Temperature (C)")
# traces
plt.show()
Oh merci beaucoup!!
Mais je ne comprends pas bien la différence entre vos deux messages : dans le second vous avez fait la régression linéaire avec Python ?
Pour ma part j'ai utilisé LatisPro qui m'a donné les deux valeurs que j'ai indiqué. Mais qu'importe le logiciel, le model devrait être le meme non ?
j'ai effectivement :
1/ transformé les listes x et y en array (cf. np.array)
2/ utilisé la librairie numpy pour une régression
en principe, nous devrions avoir les mêmes résultats.
Ici, on a y = exp(5,346519) * exp(-0,030302 * t)
un conseil, utilisez les grilles :
import matplotlib.ticker as ticker
...
# axes
ax = plt.axes()
ax.xaxis.set_major_locator(ticker.MultipleLocator(10))
ax.xaxis.set_minor_locator(ticker.MultipleLocator(1))
ax.yaxis.set_major_locator(ticker.MultipleLocator(10))
ax.yaxis.set_minor_locator(ticker.MultipleLocator(1))
# grille
plt.grid(True, which = "major", linestyle = 'solid', linewidth = 1, color = 'grey')
# traces
plt.show()
D'accord, merci beaucoup je vais essayer de travailler ce que vous m'avez donné!
Je voudrai savoir s'il était aussi possible de faire une régression linéaire en exp(1/x) (je dois vérifier un modèle de cette forme).
J'ai voulu remplacé [A, B] = np.polyfit(x, np.log(1/y), 1) et M = np.exp(B) * np.exp(A * (1/T))
mais cela ne fonctionne pas...
Et nos 2 régressions linéaire (la mienne sur latispro et la votre sur python) sont finalement assez différentes ; la mienne est bien moins précise....
Bonjour.
Adaptation à vos données (TP sur CTN ?) avec utilisation du module scipy
#*******************************************************************************
# IMPORT ***********************************************************************
#*******************************************************************************
# module pour le systeme d'exploitation
import os
# module specifique pour le systeme
import sys
# module numpy
import numpy as np
# module scipy
from scipy.optimize import curve_fit
# module matplotlib pour le trace de courbe
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
#*******************************************************************************
# DONNEES MESUREES *************************************************************
#*******************************************************************************
# mesures de temperature en °C
t = np.array([ 23.9, 26.2, 29.3, 33.3, 37.9,
43.2, 48.9, 54.9, 61.0, 67.7,
73.8, 80.1, 83.4, 92.5, 98.2,
102.7, 103.0, 103.1, 103.1, 103.1])
# mesures de resistance en ohms
r = np.array([106.30, 97.92, 89.28, 78.81, 65.12,
55.03, 46.26, 38.99, 32.22, 26.57,
21.71, 18.15, 15.21, 13.03, 10.90,
9.55, 9.45, 9.45, 9.45, 9.45])
#*******************************************************************************
# DEF **************************************************************************
#*******************************************************************************
# modele
def fonction_modele(t, a, b) :
# attention : passage en Kelvins
return a * np.exp(b / (t + 273.15))
#*******************************************************************************
# MAIN *************************************************************************
#*******************************************************************************
# effacement de l'ecran
os.system('cls')
print "\n"
# recherche des coefficients du modele
popt, pcov = curve_fit(fonction_modele, t, r)
# definition de la plage des temperature en °C
T_MIN = 20.0
T_MAX = 110.0
T_NB = 100
# vecteur temperature sur l'axe des x
vec_T = np.linspace(T_MIN, T_MAX, T_NB)
# definition de la plage des resistances en ohms
R_MIN = 0.0
R_MAX = 120.0
# trace du modele
plt.plot(vec_T, fonction_modele(vec_T, *popt), color = 'b', linestyle = '-')
# trace des couples de mesures r = f(t)
plt.plot(t, r, color = 'g', linestyle = '', marker = 'o')
# X-label
X_XLABEL = r"${\bf Temp\'erature\ (\degree C)}$"
plt.xlabel(X_XLABEL)
# Y-label
Y_XLABEL = r"${\bf R\'esistance\ (\Omega)}$"
plt.ylabel(Y_XLABEL)
# plage des resistances sur l'axe Y
plt.ylim(R_MIN, R_MAX)
# axes
ax = plt.axes()
ax.xaxis.set_major_locator(ticker.MultipleLocator(10))
ax.xaxis.set_minor_locator(ticker.MultipleLocator(1))
ax.yaxis.set_major_locator(ticker.MultipleLocator(10))
ax.yaxis.set_minor_locator(ticker.MultipleLocator(1))
# grille
plt.grid(True, which = "major", linestyle = 'solid', linewidth = 1, color = 'grey')
# traces
plt.show()
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :