# -*- coding: utf-8 -*-
"""
Chapitre 1 - Acides, bases et pH
--------------------------------
Tracer log[H3O+] en fonction du pH mesure.

La relation  [H3O+] = c0 * 10^(-pH)  s'ecrit aussi  log([H3O+]/c0) = -pH :
le graphique  log[H3O+] = f(pH)  doit donc etre une DROITE de pente -1.
Les points experimentaux viennent de l'E.C.E. : les concentrations sont connues
par dilutions successives, et les pH sont mesures au pH-metre.

A ouvrir et executer dans EduPython (menu "Executer" ou touche F5).
VERSION CORRIGEE : la ligne des pH mesures est completee.
"""

import math
import matplotlib.pyplot as plt

# Concentration standard (mol/L) : rend l'argument du log sans dimension.
c0 = 1.0

# --- Resultats de l'E.C.E. : solutions d'acide chlorhydrique diluees ---
solutions = ["S0", "S1", "S2", "S3"]
H3O_connue = [1.0e-2, 1.0e-3, 1.0e-4, 1.0e-5]
pH = [2.0, 3.0, 4.1, 5.0]    # pH mesures pendant l'E.C.E. (corrige)

# --- Calcul de log[H3O+] pour chaque solution, une valeur a la fois ---
log_H3O = []
for h in H3O_connue:
    log_H3O.append(math.log10(h / c0))

# --- Droite theorique log[H3O+] = -pH, construite point par point ---
pH_theorique = []
log_theorique = []
for k in range(15):          # pH entier de 0 a 14
    pH_theorique.append(k)
    log_theorique.append(-k)

# --- Trace : log[H3O+] en fonction du pH (echelles lineaires) ---
plt.figure()
plt.plot(pH_theorique, log_theorique, color="gray", label="log[H3O+] = -pH")
plt.plot(pH, log_H3O, "o", color="crimson", label="solutions diluees")

plt.xlabel("pH")
plt.ylabel("log([H3O+]/c0)")
plt.title("log[H3O+] en fonction du pH")
plt.grid(True, linestyle=":")
plt.legend()
plt.show()
