import numpy as np
import matplotlib.pyplot as plt

# ================================
# 1. Entrer les données expérimentales
# ================================

# Volumes de soude ajoutés (en mL)
V = np.array([])

# Valeurs de pH mesurées
pH = np.array([])

# ================================
# 2. Calcul de la dérivée numérique
# ================================

# Calcul de la dérivée par différences centrales
dpHdV = np.gradient(pH, V)

# ================================
# 3. Recherche du volume à l'équivalence
# ================================

indice_equivalence = np.argmax(dpHdV)
V_eq = V[indice_equivalence]

print("Volume à l'équivalence ≈", V_eq, "mL")

# ================================
# 4. Tracés
# ================================

plt.figure()
plt.plot(V, pH, 'o-', label="Courbe pH = f(V)")
plt.xlabel("Volume de soude ajouté (mL)")
plt.ylabel("pH")
plt.title("Titrage pH-métrique de l'acide acétique par NaOH")
plt.grid()
plt.legend()
plt.show()

plt.figure()
plt.plot(V, dpHdV, 'o-', label="d(pH)/dV")
plt.axvline(V_eq, linestyle='--', label="Volume équivalence")
plt.xlabel("Volume de soude ajouté (mL)")
plt.ylabel("d(pH)/dV")
plt.title("Méthode de la dérivée")
plt.grid()
plt.legend()
plt.show()