# Importation des bibliothèques
import numpy as np
import matplotlib.pyplot as plt

# Déclaration des listes contenant les valeurs mesurées de d=x2-x1 et D et les incertitudes
x1 = np.array([])
ux1= 0
x2 = np.array([])
ux2= 0
d = x2-x1
D = np.array([])                                                   # valeurs de D, en cm
ud = d * np.sqrt((ux2/x2)**2 + (ux2/x2)**2)                        # incertitude-type sur d, en cm
uD = 0.05/np.sqrt(3)                                               # incertitude-type sur D, en cm

# Grandeurs tracées : Y = a*X + b avec X = 1/D et Y = d^2/D^2
X = 1/D
Y = d**2/(D**2)

# Incertitudes par propagation
uX = uD/D**2
uY = 2*Y*np.sqrt((ud/d)**2 + (uD/D)**2)

# Régression linéaire
a, b = np.polyfit(X, Y, 1)
print("f' =", -a/4, "cm")


# Tracé
plt.plot(X, a*X + b, label='régression')
plt.xlabel('X = 1/D')
plt.ylabel('Y = d²/D²')
plt.title('Méthode de Bessel - Tracé de d²/D² en fonction de 1/D')
plt.legend()
plt.grid(alpha=0.3)
plt.show()



