Ensemble des codes python rencontrés (dans les TP, activités, exercices, etc.) rangés par chapitre.
Code du sujet :
Code utilisé pour tracer la figure de l’énoncé comprenant l’ensemble des graphes :
Code du TP titrage conductimétrique d’un déboucheur.
Le but du code est de montrer que la formule de propagation des erreurs (détermination de type B d’une incertitude-type) donne bien la même réponse qu’une simulation Monte-Carlo.
Dans la simulation Monte-Carlo, on tire au hasard chaque valeur expérimentale en respectant l’incertitude-type indiquée pour cette grandeur puis on calcule la grandeur composée (ici la concentration du déboucheur CB).
On recommence l’opération 500,000 fois et on calcule ensuite l’écart-type expérimental des valeurs de CB obtenues (et on trace aussi un histogramme de ces valeurs).
L’écart-type, estimation de l’incertitude-type sur CB, est ensuite comparée au résultat donné par la formule de propagation des erreurs.
CB = Vf[0]/Vp[0]*CA[0]*VE[0]/VB[0]
UCB = CB*np.sqrt((Vf[1]/Vf[0])**2+(Vp[1]/Vp[0])**2+(CA[1]/CA[0])**2+(VB[1]/VB[0])**2+(VE[1]/VE[0])**2)
Ajustement de l’évolution de la concentration par une exponentielle décroissante dont on détermine les paramètres idéaux :
Tracé de l’évolution temporelle de la concentration et de sa modélisation :
Au lieu d’ajuster les points expérimentaux par une fonction exponentielle, on aurait pu prendre le logarithme des concentrations et réaliser un ajustement linéaire :
On peut aussi tracer l’évolution temporelle de la vitesse de disparition, mais pour cela, il faut calculer numériquement la dérivée temporelle de la concentration.
Soit une grandeur $x$ variant en fonction du temps.
Supposons que l’on ait une liste X de N valeurs de $x$ correspondant à N valeurs temporelles enregistrées dans une liste T.
Une liste de N-1 valeurs approximant numériquement la dérivée de $x$ par rapport au temps s’obtient grâce à la boucle suivante :
derX = []
for i in range(N-1):
derX.append((X[i+1]-X[i])/(T[i+1]-T[i]))
Ce n’est rien d’autre que l’approximation $\frac{\mathrm d x}{\mathrm d t}\approx \frac{\Delta x}{\Delta t}=\frac{x(t+\Delta t)-x(t)}{\Delta t}$.
Exemple :
Dans le vrai sujet (sujet 0 2021), l’incertitude-type est de 0,42. Plutôt bizarre car incohérent avec la formule de propagation des incertitudes :
$x_\mathrm{O_2}=\frac{I_\mathrm{exp}-b}{a}$
$\begin{aligned}
\Rightarrow \frac{u(x_\mathrm{O_2})}{x_\mathrm{O_2}}&=\sqrt{\left(\frac{u(I_\mathrm{exp}-b)}{I_\mathrm{exp}-b}\right)^2+\left(\frac{u(a)}{a}\right)^2}\\
&=\sqrt{\left(\frac{\sqrt{u(I_\mathrm{exp})^2+u(b)^2}}{I_\mathrm{exp}-b}\right)^2+\left(\frac{u(a)}{a}\right)^2}
\end{aligned}$
Ça donne :
$
\begin{aligned}
u(x_\mathrm{O_2})&=\frac{31,7 - 13,2}{1,09}\times\sqrt{\left(\frac{\sqrt{0,2^2 + 0,9^2}}{31,7 - 13,2}\right)^2 + \left(\frac{0,03}{1,09}\right)^2}\\
&=0,97 \text{ mA}
\end{aligned}
$
Ou en utilisant Python :
Compléter le code de la fonction final permettant de retourner à la fois le taux d’avancement et le pH à l’équilibre.
Rq : on obtient la racine carrée grâce à np.sqrt() et le logarithme décimal grâce à np.log10().
Pourquoi le pH dépasse-t-il 7 pour les petites concentrations de l’acide de pKa élevé ?
C’est dû à notre modèle incomplet.
On a négligé l’autoprotolyse de l’eau. La prendre en compte transforme l’équation en un polynôme de degré 3.
La condition d’électroneutralité permet d’écrire :
$[\mathrm H^+] = [\mathrm A^-] + [\mathrm{OH}^-]$ et avec $[\mathrm{OH}^-] = \frac{K_w}{[\mathrm{H_3O^+}]}$, et on obtient alors :
$x^{3}+K_a\,x^{2}-\bigl(K_w+K_a\,C\bigr)\,x-K_a\,K_w = 0$ où $x=[\mathrm H_3O^+]$.
La seule racine positive permet d’obtenir le pH et il est bien acide ($<7$) cette fois-ci.
Compléter le code de la fonction pAH. La fonction doit retourner la valeur de la proportion de la forme acide donnée à la question 3.
Pour importer les tableaux regressi dans le programme ci-dessous, utiliser le bouton d’import sur la droite de la barre supérieure.
On va tester la deuxième loi de Kepler en suivant sur plusieurs jours la position de Mercure, planète à l’orbite la plus elliptique du système solaire.
Pour récupérer un tableau de données des positions de Mercure dans le référentiel héliocentrique pour 17 positions séparées de 5 jours :
Il faut alors enregistrer le fichier de données sous le nom “ephemerides.csv”.
Vous pouvez télécharger le programme mercure.py en cliquant ici (ou sur l’icône ordi de la page du cours). Il faudra ensuite que vous placiez le fichier ephemeride.csv dans le même dossier que le programme mercure.py.
En exécutant le programme mercure.py, on peut alors constater que la deuxième loi de Kepler est plutôt très bien vérifiée pour l’orbite de Mercure.
Le code se trouve dans l’activité « découverte des lois de Kepler »
Appliquons cela à l’activité sur la réduction active de bruit des écouteurs.
Le circuit de l’écouteur émet un anti-bruit en opposition de phase avec le bruit. Mais l’électronique met une durée $\tau$ à traiter le signal : l’anti-bruit part en retard.
Un retard $\tau$ sur un signal de période $T$ ajoute un déphasage $2 \pi \times \tau/T$.
La phase à l’origine de l’anti-bruit vaut donc :
$$\phi = -\left(\pi + 2 \pi \frac{\tau}{T}\right)$$
Autrement dit, l’anti-bruit est exactement le bruit inversé et retardé de tau.