# Créé par Fab Cap2, le 27/05/2025 en Python 3.7
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# --- Données (exemples à personnaliser) ---
inv_a = [2.50*10**4, 2.00*10**4, 1.00*10**4,..., 8.33*10**3, 3.57*10**3, 2.5*10**3]  # 1/a = abscisses
L = [4.7*10**-2, 4.0*10**-2, ..., 1.6*10**-2, 7.0*10**-3, 5.0*10**-3]       # L = ordonnées

# --- Affichage du tableau de valeurs ---
df = pd.DataFrame({'1/a': inv_a, 'L': L})
print("Tableau des valeurs :\n")
print(df)

# --- Régression forcée à l'origine : L = k * (1/a) ---
x = np.array(inv_a)
y = np.array(L)
k = np.dot(x, y) / np.dot(x, x)  # coefficient de la droite

# Équation texte
eq_text = f"L = {k:.2f} × (1/a)"
print(f"\nÉquation de la droite de tendance : {eq_text}")

# --- Tracé du graphique ---
plt.figure(figsize=(8, 5))
plt.scatter(inv_a, L, color='blue', label='Données')
plt.plot(x, k * x, color='red', label='Tendance linéaire (origine)')

# --- Affichage de l'équation sur le graphe ---
x_pos = min(x) + (max(x) - min(x)) * 0.05
y_pos = k * x_pos
plt.text(x_pos, y_pos, eq_text, color='red', fontsize=12,
         bbox=dict(facecolor='white', edgecolor='black'))

# --- Mise en forme ---
plt.title("Tendance linéaire : L en fonction de 1/a")
plt.xlabel("1/a")
plt.ylabel("L")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()

