def affine(x,a,b):
return a*x + b
theta = np.array([])*(np.pi/180) #angle initial avant de lacher pendule
utheta = 1*(np.pi/180)
theta2 = theta**2
T10 = np.array([])*1e-6 # numéro d interruption (données d'arduino) pour cet angle
T20 = np.array([])*1e-6
T30 = np.array([])*1e-6
T40 = np.array([])*1e-6
T50 = np.array([])*1e-6
T60 = np.array([])*1e-6
T70 = np.array([])*1e-6
T10 = T10[:3]
T20 = T20[:3]
T30 = T30[:3]
T40 = T40[:3]
T50 = T50[:3]
T60 = T60[:3]
T70 = T70[:3]
T = np.zeros(len(theta))
n = np.linspace(0,len(T10) - 1,len(T10))
T_list = [T10, T20, T30, T40, T50, T60, T70]
for i in range(len(theta)):
popc, pcov = curve_fit(affine,n,T_list[i])
T[i] = popc[0]*2
def func(x,a,b,c):
return a*(1 + b*x + c*x**2)
popc,pcov = curve_fit(func, theta2, T, p0=[0.3, 6.25e-2, 3.6e-3])
a,b,c = popc
ub = np.sqrt(pcov[1,1])
uc = np.sqrt(pcov[2,2])
plt.plot(theta2, T, 'x', label='data')
plt.plot(theta2, func(theta2, *popc), label='fit')
plt.xlabel('theta')
plt.ylabel('Période T')
plt.legend()
plt.show()
print("La valeur théorique de b est 6.25e-2")
print("La valeur expérimentale de b est (", np.round(b*1e2,1), '+-', np.round(ub*1e2,1), ') e-2')
print("La valeur théorique de c est 3.6e-3")
print("La valeur expérimentale de c est (", np.round(c*1e3,1), '+-', np.round(uc*1e3,1), ') e-3')