{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[{"file_id":"1zmDcG9bHAOYkzkoWomwIfc78GYBOEO0t","timestamp":1642690697664}],"authorship_tag":"ABX9TyORSkWkk4c4NkzbBrHR8FFC"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","source":["import matplotlib.pyplot as plt #Pour tracer des graphiques\n","import numpy as np #Pour faire divers calculs\n","import numpy.random as rd\t#Importe la fonction de tirage aléatoire rectangulaire\n","from scipy.interpolate import make_interp_spline #Importe la fonction pour faire le lissage\n","\n","## Données dosage\n","\n","V = np.array(['à remplir'])\n","pH = np.array(['à remplir'])\n","\n","## Définition de  la dérivée\n","\n","def derivee(x,y):\n","    return (y[2:]-y[:-2])/(x[2:]-x[:-2])\n","\n","derpH = derivee(V, pH)\n","\n","V_sub = V[1:-1] # on redimensionne les valeurs de Va pour qu'elles soient de même taille que derpH\n","\n","##Affichage graphique\n","\n","#Courbe du dosage\n","\n","plt.figure(figsize=(12,10))\n","plt.subplot(2,1,1)\n","plt.plot(V, pH, '+-', color= 'purple', label=\"pH\")\n","plt.xlabel(\"V (mL)\")\n","plt.ylabel(\"pH\")\n","plt.grid(linestyle='-.')\n","plt.title(\"Dosage de l'acide benzoïque par la potasse\")\n","plt.legend()\n","\n","plt.gcf().subplots_adjust(left = 0.1, bottom = 0.2, right = 0.9, top =0.9, wspace = 0.5, hspace = 0.5)\n","\n","#Courbe dérivée lissé\n","\n","plt.subplot(2,1,2)\n","plt.xlabel(\"V (mL)\") #Légende de l’axe des abscisses\n","plt.ylabel(\"dérivée\") #Légende de l’axe des ordonnées\n","V_new = np.linspace(min(V_sub), max(V_sub), 300) #Définit le nombre de point (300) à tracer pour V\n","f = make_interp_spline(V_sub, derpH, k=2)#Définit la fonction de lissage d’ordre k = 2\n","y_smooth = f(V_new) #Attribution des ordonnées aux abscisses\n","plt.plot(V_new, y_smooth, 'b-',label=\"dérivée\") #Représente la dérivée en fonction de V en bleu de manière continue avec une étiquette pour la courbe\n","plt.title(\"évolution de la dérivée\") #Titre du graphe\n","plt.legend()#Affiche l’étiquette de la courbe\n","plt.grid() #Affiche le quadrillage\n","plt.show() #Affiche le graphique\n","\n","#Volume équivalent du dosage\n","\n","y_max=np.amax(y_smooth) #Donne le maximum d’un vecteur\n","n_max=np.argmax(y_smooth)\t#Donne l’indice d’un élément d’un vecteur\n","Ve=V_new[n_max]\t#Attribue la valeur d’un élément du vecteur\n","print(\"Ve = \",format(Ve,\"#.2f\"), \"mL\")\t#Affiche le résultat\n","\n","#Calcul de la concentration et de l'incertitude par méthode Monte-Carlo\n","\n","Cb = \"à remplir\"  #concentration de la solution titrante de la soude en mol/L\n","u_Cb=0.01*Cb #incertitude de Cb\n","V_0=10.0  #volume prélevé de la solution titrée en mL\n","m_V=0.05 #demi-étendu de V et Ve\n","\n","Ca=(Cb*Ve/(V_0))\n","\n","N_sim =10000 \t#Nombre de tirage\n","Cb_list=rd.normal(Cb, u_Cb, N_sim) #vecteur de N_sim valeurs aléatoires de Cb\n","Ve_list=rd.uniform(Ve-m_V, Ve+m_V, N_sim) #vecteur de N_sim valeurs aléatoires de Ve\n","V_0_list=rd.uniform(V_0-m_V, V_0+m_V, N_sim) #vecteur de N_sim valeurs aléatoires de Ve\n","\n","Ca_list=(Cb_list*Ve_list/(V_0_list))\n","\n","Ca_moy=np.mean(Ca_list) #moyenne de Ca\n","u_Ca_calc= np.std(Ca_list, ddof=1) #écart-type de Ca\n","\n","print (\"La concentration de l'acide benzoïque est de  : \" , format(Ca, \"#.2e\"),  \"en mol/L\")\n","print (\"Ca_moyen =\",format(Ca_moy,\"#.3e\"),\" avec écart-type = \",format(u_Ca_calc,\"#.1e\"))\n","#Affiche Ca moyen et son incertitude type"],"metadata":{"id":"RJ2nm8CP_zzN"},"execution_count":null,"outputs":[]}]}