import matplotlib.pyplot as plt
import numpy as np

# ========================
# À compléter par l'élève
# ========================
L=[..., ..., ..., ...]  # Largeur de la tache (en cm)
a=[..., ..., ..., ...]  # largeur de la fente (en µm)

L=np.array(L)  #conversion liste en tableau
a=np.array(a)

# ========================================================
# Traitement des données "......" à compléter par l'élève
# ========================================================

a_m=a*...  # Conversion en mètres
L_m=L*....  # Conversion en mètres

x = ....   #choisir la grandeur à mettre en abscisse
y = ....   #choisir la grandeur à mettre en ordonnée

# ==================================================
# Choix du modèle "......" à compléter par l'élève
# ==================================================
# Options : "linéaire", "affine", "inverse"
modele = "..............."


if modele == "linéaire":
    a_coef = np.sum(x * y) / np.sum(x**2)
    b_coef = 0
    y_fit = a_coef * x
    equation = f"L = {a_coef:.2e} × (x)"
elif modele == "affine":
    a_coef, b_coef = np.polyfit(x, y, 1)
    y_fit = a_coef * x + b_coef
    equation = f"L = {a_coef:.2e} × (x) + {b_coef:.2f}"
elif modele == "inverse":
    inv_x = 1 / x
    a_coef = np.sum(inv_x * y) / np.sum(inv_x**2)
    y_fit = a_coef * inv_x
    equation = f"L = {a_coef:.2e} / x"
else:
    raise ValueError("Modèle non reconnu.")

# =====================
# Résultat
# =====================
print("Modèle choisi :", modele)
print("Équation de la courbe :", equation)

# =====================
# Affichage graphique
# =====================
plt.figure()
plt.plot(x, y, '+',color='blue', label='Mesures')
plt.plot(x, y_fit, color='red', label='Modélisation')
if modele == "linéaire":
    plt.xlabel('1/a (1/m)')
    plt.title('Largeur de la tache en fonction de 1/a')
elif modele == "affine":
    plt.xlabel('1/a (1/m)')
    plt.title('Largeur de la tache en fonction de 1/a')
elif modele == "inverse":
    plt.xlabel('a (m)')
    plt.title('Largeur de la tache en fonction de a')
else:
    raise ValueError("Modèle non reconnu.")
plt.ylabel('L (m)')
plt.grid(True)
plt.legend()
plt.show()


