# 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 (à personnaliser) ---
inv_b = [5.0*10**3, ..., 2.00*10**3]  # abscisses : 1/b
i = [4.9*10**-3, ... , 2.0*10**-3]      # ordonnées : i saisir la valeur de i manquante

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

# --- Régression linéaire forcée à l'origine : i = k * (1/b) ---
x = np.array(inv_b)
y = np.array(i)
k = np.dot(x, y) / np.dot(x, x)

# --- Équation en écriture scientifique ---
k_sci = format(k, ".2e")
eq_text = f"i = {k_sci} × (1/b)"
print(f"\nÉquation de la droite de tendance : {eq_text}")

# --- Tracé du graphique ---
plt.figure(figsize=(8, 5))
plt.scatter(x, y, 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 : i en fonction de 1/b")
plt.xlabel("1/b")
plt.ylabel("i")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
