import numpy as np
import matplotlib.pyplot as plt
plt.close('all')# ferme les éventuelles fenêtres précédentes

# -----------------------------
# 1. Données expérimentales
# -----------------------------
X = np.array([1, 2, 3, 4, 5], dtype=float)
Y = np.array([2.1, 4.0, 5.9, 8.2, 10.1], dtype=float)

# Incertitudes identiques pour toutes les mesures
sigma_X = 0.5
sigma_Y = 0.2

# -----------------------------
# 2. Régression linéaire simple
# -----------------------------
# polyfit renvoie : pente, ordonnée à l'origine
p = np.polyfit(X, Y, 1)

a = p[0]   # pente
b = p[1]   # ordonnée à l'origine

print("=== Résultats de la régression linéaire ===")
print(f"y = a x + b")
print(f"a = {a:.4f} ")
print(f"b = {b:.4f} ")

# -----------------------------
# 3. Tracé graphique
# -----------------------------
plt.errorbar(X, Y, xerr=sigma_X, yerr=sigma_Y,
             fmt='o', color='black', ecolor='gray',
             capsize=3, label="Mesures")

# Droite ajustée
Xfit = np.linspace(min(X), max(X), 200)
Yfit = a * Xfit + b
plt.plot(Xfit, Yfit, 'r-', label="Régression linéaire")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Régression linéaire")
plt.legend()
plt.grid()
plt.show()
