#bibliothèques
import numpy as np
import matplotlib.pyplot as plt
import csv
from scipy.optimize import curve_fit
from scipy.interpolate import UnivariateSpline

from math import*


#lecture du fichier .csv
def readColCSV(fichier,sep,n):
    file=open(fichier,'r')
    reader=csv.reader(file,delimiter=sep)
    col=np.array([])
    for row in reader:
        notation_point=row[n].replace(',','.')
        col=np.append(col,notation_point)
    col=np.delete(col,0) #supprime la première valeur
    file.close()
    result=[float(i) for i in col]
    result=np.array(result)
    return result


#on met les valeurs qui nous intéressent dans des tableaux
#bien rentrer le nom du fichier
A=readColCSV('5102020_2.csv',';',1)
temps=readColCSV('5102020_2.csv',';',0)

#valeur de A à la fin de la réaction
#A[-1] signifie prendre la dernière valeur
A_infini=A[-1] #peut être rempli manuellement
y=(A_infini-A)/A_infini

#valeur de la concentration de départ du limitant
c0=1.6e-3
#concentration du réactif
c=c0*(A_infini-A)/A_infini

#calcul de la vitesse
v=-np.gradient(c,temps)

#regression linéaire de la vitesse en fonction de c
a,b=np.polyfit(c,v,1)

#valeurs du modèle
v_modele=a*c+b


plt.figure(1)
plt.subplot(121)
plt.plot(temps,c,'bo',label='Acquisition')
plt.xlabel('t en s')
plt.ylabel('concentration en mol/L')
plt.title('concentration')
plt.subplot(122)
plt.plot(c,v,'ro',label='expérience')
plt.plot(c,v_modele,'k--',label='modele')
plt.xlabel('concentration')
plt.ylabel('vitesse de disparition')
plt.legend()
plt.title('vitesse')
plt.suptitle('TP6 Cinétique')
plt.show()
