{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Verification d'une loi de vitesse d'ordre 1 par suivi spectrophotométrique\n\nOn considère l'équation de transformation chimiques suivante :<br><br>\n\n<center>$\\text{S}_2\\text{O}_{8 (\\text{aq})}^{2-} + 2\\text{I}^-_{(\\text{aq})} \\rightarrow \\text{I}_{2(\\text{aq})} + 2\\text{SO}_{4 (\\text{aq})}^{2-}$</center>\n\nLes données expérimentales sont obtenues par suivi spectrophotométrique :\n\n|t(s)|A|t(s)|A|\n|---|---|---|---|\n|0|0.0871296|624|2.48712|\n|24|0.478432|648|2.47407|\n|48|0.830604|672|2.47407|\n|72|1.1306|696|2.48712|\n|96|1.36538|720|2.48712|\n|120|1.57408|744|2.48712|\n|144|1.75669|768|2.48712|\n|168|1.87408|792|2.48712|\n|192|1.97842|816|2.48712|\n|216|2.05668|840|2.50016|\n|240|2.13494|864|2.50016|\n|264|2.20016|888|2.50016|\n|288|2.22625|912|2.50016|\n|312|2.26538|936|2.5132|\n|336|2.31755|960|2.50016|\n|360|2.34364|984|2.50016|\n|384|2.38277|1008|2.50016|\n|408|2.38277|1032|2.50016|\n|432|2.40886|1056|2.50016|\n|456|2.40886|1080|2.52625|\n|480|2.4219|1104|2.5132|\n|504|2.4219|1128|2.5132|\n|528|2.44799|1152|2.50016|\n|552|2.43494|1176|2.48712|\n|576|2.44799|1200|2.50016|\n|600|2.46103|||\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"### Représentation des données expérimentales"},{"metadata":{"trusted":false},"cell_type":"code","source":"import numpy as np\nimport matplotlib.pyplot as plt\nimport csv\n\nt = [24.0, 48.0, 72.0, 96.0, 120.0, 144.0, 168.0, 192.0, 216.0, 240.0, 264.0, 288.0, 312.0, 336.0, 360.0, 384.0, 408.0, 432.0, 456.0, 480.0, 504.0, 528.0, 552.0, 576.0, 600.0, 624.0, 648.0, 672.0, 696.0, 720.0, 744.0, 768.0, 792.0, 816.0, 840.0, 864.0, 888.0, 912.0, 936.0, 960.0, 984.0, 1008.0, 1032.0, 1056.0, 1080.0, 1104.0, 1128.0, 1152.0, 1176.0, 1200.0]\nA = [0.478432, 0.830604, 1.1306, 1.36538, 1.57408, 1.75669, 1.87408, 1.97842, 2.05668, 2.13494, 2.20016, 2.22625, 2.26538, 2.31755, 2.34364, 2.38277, 2.38277, 2.40886, 2.40886, 2.4219, 2.4219, 2.44799, 2.43494, 2.44799, 2.46103, 2.48712, 2.47407, 2.47407, 2.48712, 2.48712, 2.48712, 2.48712, 2.48712, 2.48712, 2.50016, 2.50016, 2.50016, 2.50016, 2.5132, 2.50016, 2.50016, 2.50016, 2.50016, 2.50016, 2.52625, 2.5132, 2.5132, 2.50016, 2.48712, 2.50016]\n\nnb_mesures = len(t)\n\nplt.clf()\nplt.plot(t,A)\nplt.grid()\nplt.xlabel('Temps (en $s$)')\nplt.ylabel('Absorbance')\nplt.show()","execution_count":1,"outputs":[{"output_type":"display_data","data":{"application/javascript":"element.append(window._basthonDomNodeBus.pop(0));"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### Calcul et tracé des vitesses dans le temps"},{"metadata":{"trusted":false},"cell_type":"code","source":"Vtot = 0.100            # Volume total (en L)\nn0 = 4e-4               # Quantité initiale en S2O8 2- (en mol)\nl = 1                   # Largeur de la cuve (em cm)\nepsilon = 2300          # Coefficient d'absorption molaire (L.mol-1.cm-1)\nC_I2 = []               # Concentration en diiode\nx = []                  # Avancement de la réaction\nC_S2O8 = []             # Concentration en ion peroxodisulfate\n\nfor i in range(nb_mesures):\n    C_I2.append(A[i]/(epsilon*l))\n    x.append(C_I2[i]*Vtot)\n    C_S2O8.append((n0-x[i])/Vtot)\n\nV_I2 = []\nV_S2O8 = []\nfor i in range(1,nb_mesures):\n    V_S2O8.append((C_S2O8[i]-C_S2O8[i-1])/(t[i]-t[i-1]))\n    V_I2.append(+(C_I2[i]-C_I2[i-1])/(t[i]-t[i-1]))\n    \n    \nplt.clf()\nplt.plot(t[:nb_mesures-1],V_S2O8)\nplt.plot(t[:nb_mesures-1],V_I2)\nplt.grid()\nplt.xlabel('Temps (en $s$)')\nplt.ylabel('Vitesse (en $mol.L^{-1}.s^{-1}$)')\nplt.show()","execution_count":2,"outputs":[{"output_type":"display_data","data":{"application/javascript":"element.append(window._basthonDomNodeBus.pop(0));"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### Tracé de la vitesse d'apparition de $I_2$ en fonction de sa concentration"},{"metadata":{"trusted":false},"cell_type":"code","source":"plt.clf()\nplt.plot(C_I2[:nb_mesures-1],V_I2, 'o')\nplt.grid()\nplt.xlabel('Concentration (en $mol.L^{-1}$)')\nplt.ylabel('Vitesse (en $mol.L^{-1}.s^{-1}$)')\nplt.show()\n","execution_count":8,"outputs":[{"output_type":"display_data","data":{"application/javascript":"element.append(window._basthonDomNodeBus.pop(0));"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"On réalise ensuite la modélisation à l'aide de polyfit."},{"metadata":{"trusted":false},"cell_type":"code","source":"pente,origine = np.polyfit(C_I2[:nb_mesures-1], V_I2, 1)\n\ndef modele(x):\n   return pente * x + origine\n\n\nV_I2_modele = []\nfor i in range(nb_mesures-1):\n    V_I2_modele.append(modele(C_I2[i]))\n\nplt.clf()\nplt.plot(C_I2[:nb_mesures-1], V_I2_modele, 'r--', label='$v(I_2) = %.6f \\\\times [I_2] + %.6f$' %(pente, origine))\nplt.plot(C_I2[:nb_mesures-1],V_I2, 'o',label=\"Données expérimentales\")\nplt.grid()\nplt.xlabel('Concentration (en $mol.L^{-1}$)')\nplt.ylabel('Vitesse (en $mol.L^{-1}.s^{-1}$)')\nplt.legend()\nplt.show()","execution_count":4,"outputs":[{"output_type":"display_data","data":{"application/javascript":"element.append(window._basthonDomNodeBus.pop(0));"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"Et on calcule enfin le coefficient de corrélation ($R^2$) :"},{"metadata":{"trusted":false},"cell_type":"code","source":"correlation_matrice = np.corrcoef(C_I2[:nb_mesures-1], V_I2)\ncorrelation_xy = correlation_matrice[0,1]\nr_carre = correlation_xy**2\nprint(\"r² =\",r_carre)","execution_count":7,"outputs":[{"output_type":"stream","text":"r² = 0.9815919120361383\n","name":"stdout"}]}],"metadata":{"kernelspec":{"display_name":"Python 3.9.12 ('base')","language":"python","name":"python3"},"vscode":{"interpreter":{"hash":"0551aa7f11adbe7c950ca87271b887c46cd3b613bddc6be17f713597d88f3d24"}}},"nbformat":4,"nbformat_minor":2}