# -*- coding: utf-8 -*-
# ====================================================================
# Chapitre 3 Exercice 38                                      STANDARD 
# ====================================================================
import matplotlib.pyplot as plt
import numpy as np

c_t=0.040   #conc. en quantité de la solution titrante (en mol/L)
c_1=0.20    #conc. en quantité de la solution d'ion iodure (en mol/L)
V_1=0.050   #volume de la solution d'ion iodure (en L)
V_tot=0.100 #volume total du mélange réactionnel (en L)
V_2=0.010   #volume du prélèvement (en L)

# ====================================================================
# Saisie des données expérimentales
# ====================================================================
t=[1.0,3.0,4.5,6.0,8.5,12.0,15.0,18.0,24.0]   # t (en min)
V_eq=[2.2,4.8,6.3,7.3,9,10.8,11.7,12.7,13.7]  # Véqv (en mL)
N=len(t)
# ====================================================================
# Calcul de la quantité de diiode titrée aux dates ti
# ====================================================================
n_I2=[] 
for i in range(N) : 
    n_I2i=...A compléter... # qté de matière de I2 titrée (en mol)
    n_I2.append(n_I2i) 

# ====================================================================
# Calcul de la concentration en quantité des ions iodure aux dates ti
# ====================================================================
c_I=[] 
for i in range(N) : 
    c_Ii=...A compléter... # [I-] aux dates ti (en mol/L)
    c_I.append(c_Ii) 

# ====================================================================
# Affichage des valeurs numériques : Date , n(I2) titré , [I-]
# ====================================================================
print('\nDate t \t\t n(I2) titré \t\t [I-]')
print('(en min) \t (en mol) \t\t (en mol/L)')
for i in range(N):
    print('...A compléter...')

# ====================================================================
# Test d'une loi de vitesse d'ordre 1 pour l'évolution de [I-]
# ====================================================================

plt.figure(figsize=(16,4)) # Initialisation de la figure
plt.suptitle("Test d'une loi d'ordre 1 pour l'évolution de [I$^{-}$]")   

"""
Méthode 1 :
L’évolution de la concentration en ion iodure suit une loi de vitesse
d’ordre 1 si ln([I-](t)/[I-](t=0)) est une fontion linéaire du temps.
"""
plt.subplot(1,2,1) 

# Liste des dates en seconde de t=0s à tmax
date=[...A compléter... for i in range(N)]  # conversion des dates ti en s 
date.insert(...A compléter...) # insère 0 au début de la liste 'date'

# Liste des valeurs de ln([I-](t)/[I-](t=0)) de t=0s à tmax
Y=[np.log(...A compléter...) for i in range(N)] # Calcul du ln aux dates ti
Y.insert(...A compléter...) # insère 0 au début de la liste 'Y'

# Tracé de ln([I-](t)/[I-](t=0)) = f(t) de t=0s à tmax
plt.plot(...A compléter...,'b+',label='Points expérimentaux')

# Modélisation de la forme y=a*x+b à l'aide de la fonction np.polyfit()
a,b=...A compléter... 
modele=[...A compléter... for i in range(N+1)] # Calcul des ordonnées
                                               # du modéle
# Tracé de la modélisation : modele = f(date)
plt.plot(...A compléter...,'c:',label='Modélisation linéaire')

# Mise en forme de la fenêtre graphique
plt.text(600,-0.2,"$\ln\dfrac{[\mathrm{I}^{-}](t)}{[\mathrm{I}^{-}](t=0)}=f(t)$",fontsize=14,color='r')
...A compléter...  # Label de l'axe des abscisses            
...A compléter...  # Affichage d'une grille en ':'
...A compléter...  # Affichage de la légende en bas à gauche

"""
Méthode 2 :
L’évolution de la concentration en ion iodure suit une loi de vitesse
d’ordre 1 si la vitesse de consommation des ions iodures v_I est
proportionnelle à [I-].
"""    
plt.subplot(1,2,2)

# Liste des vitesses de consommation en ion iodure en mol/L/s de t=0s à tmax
c_I.insert(...A compléter...) # insère [I-](t=0)=c_1/2 en début de liste c_I
v_I=[...A compléter... for i in range(N)]

del c_I[-1] # Retire la dernière valeur de la liste c_I

# Tracé de v_I = f(c_I)
plt.plot(...A compléter...,'b+',label='Points expérimentaux')

# Modélisation de la forme y=a*x+b à l'aide de la fonction np.polyfit()
m,p=...A compléter...
mod=[...A compléter... for i in range(N)] # Calcul des ordonnées
                                          # du modéle
# Tracé de la modélisation mod = f(c_I)
plt.plot(...A compléter...,'c:',label='Modélisation linéaire')

# Mise en forme de la fenêtre graphique
plt.text(0.02,8e-5,"$v_{c,\mathrm{I}^-}=f(t)$",fontsize=14, color='r')
plt.ticklabel_format(axis='both',style='sci',scilimits=(0,0))
...A compléter...  # Label de l'axe des abscisses
...A compléter...  # Label de l'axe des ordonnées           
...A compléter...  # Limite de l'axe des abscisses 
...A compléter...  # Limite de l'axe des ordonnées 
...A compléter...  # Affichage d'une grille en ':'
...A compléter...  # Affichage de la légende en haut à droite

plt.show()


