In [13]:
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [10,7]
import numpy as np

##########################################################################
##### Fonction de calcul des quantités de matière avant l'équivalence ####
##########################################################################

def calcul_quantites_avant_et_a_equivalence(i): # Indentation de 4 espaces obligatoire pour une fonction
    # Ajout à la liste des volumes le volume V versé pour V < VE
    V.append(i)
    # Ajout à la liste pour chaque valeur de V = i (en mL) des quantités de AH n_AH
    n_AH.append((0.145*10-0.10*i)*0.001)
    # Ajout à la liste pour chaque valeur de V = i (en mL) des quantités HO- n_HO
    n_HO.append(0)
    # Ajout à la liste pour chaque valeur de V = i (en mL) des quantités Na+ n_Na
    n_Na.append(0.10*i*0.001)
    # Ajout à la liste pour chaque valeur de V = i (en mL) des quantités A- n_A
    n_A.append(0.10*i*0.001)

##########################################################################



##########################################################################
##### Fonction de calcul des quantités de matière après l'équivalence ####
##########################################################################

def calcul_quantites_apres_equivalence(i) :
    # Ajout à la liste des volumes le volume V versé pour V > VE
    V.append(i)
    # Ajout à la liste pour chaque valeur de V = i (en mL) des quantités de AH n_AH
    n_AH.append(0)
    # Ajout à la liste pour chaque valeur de V = i (en mL) des quantités HO- n_HO
    n_HO.append(0.10*i*0.001 - 0.00145)
    # Ajout à la liste pour chaque valeur de V = i (en mL) des quantités Na+ n_Na
    n_Na.append(0.10*i*0.001)
    # Ajout à la liste pour chaque valeur de V = i (en mL) des quantités A- n_A
    n_A.append(0.00145)

##########################################################################



##########################################################################
########################### Initialisation ###############################
##########################################################################

VE = 14.5  # Saisie du volume équivalent en mL
Veau = 200 # Saisie du volume d’eau ajouté en mL
n_AH, n_HO, n_Na, n_A, V = [], [], [], [], [] # Initialisation de 5 listes

##########################################################################
######## Calcul des quantités de matières par appel des fonctions ########
##########################################################################

for i in range(0,26,1) :
    if i <= VE :
        # Appel de la fonction qui calcule les quantités avant et à l’équivalence
        calcul_quantites_avant_et_a_equivalence(i)
    else :
        # Appel de la fonction qui calcule les quantités après l’équivalence
        calcul_quantites_apres_equivalence(i)

##########################################################################
################# Ligne de calcul de la conductivité #####################
##########################################################################

    # Indentation pour rester dans la boucle for
    Conduct = (20*np.array(n_HO)+5.0*np.array(n_Na)+4.1*np.array(n_A))/(0.010+Veau*1E-3+1E-3*np.array(V))

##########################################################################
############################## Affichage #################################
##########################################################################

# subplot(mnp) : m=nbre de colonnes pour les tracés | n=nbre de lignes | p=position
# À décommenter pour afficher plusieurs tracé

plt.subplot(122)
plt.plot(V, n_AH, 'bx-', linewidth=0.5, label="Courbe Bleue")
plt.plot(V, n_HO, 'rx-', linewidth=0.5, label="Courbe Rouge")
plt.plot(V, n_Na, 'mx-', linewidth=0.5, label="Courbe Mauve")
plt.plot(V, n_A, 'gx-', linewidth=0.5, label="Courbe Verte")

plt.subplot(121)
plt.scatter(V, Conduct, label="Conductivité en $\mathrm{mS\cdot m^{-1}}$")

plt.legend()
plt.show()