{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyNNISN/NMfTTEx8PVfmtAIC"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","metadata":{"id":"E5NN8SiJytNr"},"source":["\n","**I – Tracé du spectre d’absorption du rouge de méthyle**\n","\n","1°) Représenter avec python le spectre d’absorption du rouge de méthyle dans le domaine de longueur d’onde [400 nm ; 600 nm].\n","\n","2°) Déterminer la longueur d’onde du maximum d’absorption (notée $λ_{max}$).\n"]},{"cell_type":"code","metadata":{"id":"IBDCeYTOWL4d"},"source":["import matplotlib.pyplot as plt #Pour tracer des graphiques\n","import numpy as np #Pour faire divers calculs\n","from scipy.interpolate import make_interp_spline #Importe la fonction pour faire le lissage\n","\n","## Spectre d'absorption\n","\n","x=np.array(['à remplir avec les valeurs expérimentales']) # valeurs de la longueur d'onde en nm\n","y=np.array(['à remplir avec les valeurs expérimentales']) # valeurs de l'absorbance\n","\n","# Spectre brute\n","\n","plt.figure(1)\n","plt.xlabel('longueur d\\'onde en nm') #Légende de l’axe des abscisses\n","plt.ylabel('A') #Légende de l’axe des ordonnées\n","plt.plot(x,y,'b+-',label='A') #Représente y en fonction de x avec des croix bleues reliées de manière continue avec une étiquette pour la courbe\n","plt.title('Spectre d\\'absorption du rouge de méthyle') #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","# Spectre lissé\n","\n","plt.figure(2)\n","plt.xlabel('longueur d\\'onde en nm') #Légende de l’axe des abscisses\n","plt.ylabel('A') #Légende de l’axe des ordonnées\n","x_new = np.linspace(min(x), max(x), 130) #Définit le nombre de point (130) à tracer pour x\n","f = make_interp_spline(x, y, k=2)#Définit la fonction de lissage d’ordre k = 2\n","y_smooth = f(x_new) #Attribution des ordonnées aux abscisses\n","plt.plot(x_new, y_smooth, 'b-',label='A') #Représente y en fonction de x en bleu de manière continue avec une étiquette pour la courbe\n","plt.title('Spectre d\\'absorption lissé du rouge de méthyle') #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","# Maximum de la longueur d'onde\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","x_max=x_new[n_max]\t#Attribue la valeur d’un élément du vecteur\n","print('x_max = ',format(x_max,\"#.1f\"),' nm et y_max = ',format(y_max,\"#.2f\"))\t#Affiche le résultat"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Bcb-HEB54Xaj"},"source":["**III – Vérification de la loi de Beer – Lambert**\n","\n","2°) Représenter avec python le graphe A = f(T) entre 0 et 10,0 $mg.L^{-1}$ pour $λ_{max}$.\n","\n","Détermination de la pente par régression linéaire.\n"]},{"cell_type":"code","metadata":{"id":"OBe0lqkEXVR6"},"source":["import matplotlib.pyplot as plt#Pour tracer des graphiques\n","import numpy as np #Pour faire divers calculs\n","\n","## Courbe d'étalonnage\n","\n","x=np.array(['à remplir avec les valeurs expérimentales']) # valeurs de la concentration massique  de 0 à 10 mg/L\n","y=np.array(['à remplir avec les valeurs expérimentales']) # valeurs de l'absorbance\n","\n","#Régression linéaire avec np.polyfit\n","p=np.polyfit(x, y, 1) #Régression linéaire de y en fonction de x (équation y = p[0]*x+p[1])\n","coef=np. corrcoef(x,y,1)  # calcul du coefficient de corrélation\n","r=coef[0,1] # attribue le coefficient de corrélation à r\n","r2=r**2 # calcul coefficient de détermination\n","\n","# Spectre et droite de régression\n","\n","plt.figure(3)\n","plt.xlabel('concentration massique en mg/L')\t#Légende de l’axe des abscisses\n","plt.ylabel('A')\t#Légende de l’axe des ordonnées\n","plt.plot(x,y,'b+',label='points') #Tracé des points expérimentaux en bleu\n","plt.plot(x,np.polyval(p,x),'r',label='modèle') #Tracé de la droite de régression en rouge\n","plt.title('Courbe d\\'étalonnage') #Titre du graphe\n","plt.legend()\t#Affiche l’étiquette de la courbe\n","plt.grid()\t#Affiche le quadrillage\n","plt.show()\t#Affiche le graphique\n","\n","print('coefficients : r = ',format(r,\"#.4f\"),' r^2 = ' ,format(r2,\"#.4f\"))\t#Affiche les coefficients\n","\n","print('pente =',format(p[0],\"#.3f\"),'L/mg ') #Affiche la pente de la droite\n","print('y0 =', format(p[1],\"#.2g\")) #Affiche l’ordonnée à l’origine\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":[],"metadata":{"id":"jBs5ElwwXqBn"}},{"cell_type":"markdown","metadata":{"id":"dhYPlPYrXtHj"},"source":["**III – Vérification de la loi de Beer – Lambert**\n","\n","2°) Représenter avec python le graphe A = f(T) entre 1,0 et 10,0 $mg.L^{-1}$ pour $λ_{max}$.\n","\n","Détermination de la pente par calcule de la moyenne des valeurs A/T et de l'incertitude-type = écart-type des valeurs A/T.\n"]},{"cell_type":"code","source":["import matplotlib.pyplot as plt#Pour tracer des graphiques\n","import numpy as np #Pour faire divers calculs\n","\n","## Courbe d'étalonnage\n","\n","x=np.array(['à remplir avec les valeurs expérimentales']) # valeurs de la concentration massique  de 1 à 10 mg/L\n","y=np.array(['à remplir avec les valeurs expérimentales']) # valeurs de l'absorbance\n","\n","## Valeurs expérimentales et pente fonction linéaire (variante pour détermine l'incertitude-type)\n","\n","alpha=y/x # valeur de la pente de la droite y=alpha*x en L/mg\n","alpha_moyen=np.mean(alpha) # Calcule la moyenne de la pente\n","u_alpha=np.std(alpha,ddof=1) # Calcule l'écart-type de alpha\n","u_alpha_moyen=np.std(alpha,ddof=1)/5**(1/2) # Calcule de l'incertitude-type de alpha moyen\n","print('alpha moyen =',format(alpha_moyen,\"#.5f\"),'L/mg avec u(alpha) = ',format(u_alpha,\"#.1e\"),'L/mg et u(alpha moyen) = ',format(u_alpha_moyen,\"#.1e\"),'L/mg ')\n","#Affiche la moyenne et les incertitudes types de la pente de la droite\n"],"metadata":{"id":"ug1S778YXW53"},"execution_count":null,"outputs":[]}]}