Ceci est une ancienne révision du document !
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Table des matières
Propagation d'incertitude
Dans ce TD on veut mettre en évidence des phénomènes de propagation d'incertitude.
Commençons par importer toutes les bibliothèques et fonctions utiles :
from random import random, gauss import numpy as np
Une seule variable
On se place dans le cas où $y = f(x)$ et où $x$ est connu avec une incertitude. On veut évaluer l'incertitude sur $y$.
À titre d'exemple, on prend $y = 3\,x^2$. On sait que $x = 5 \pm 0,1$.
On supposera que $X$ est aléatoire et suit une lui uniforme sur $[5-0,1\,;\,5+0,1]$. $Y$ est donc aléatoire également et on souhaite visualiser la distribution de $Y$.
Simulation de $X$
N = 10000
def tirage(reference, incertitude):
'''
reference: valeur de référence. Exemple 5 pour X
incertitude: marge d'erreur. Exemple 0,1 pour X
'''
return reference + (2*random()-1)*incertutude
Xs = [tirage(5, 0.1) for i in range(N)]
Ce code permet de simuler N tirage de la grandeur $X$. Vous pouvez l'exécuter et calculer en console les paramètres statistiques de Xs :
>>> np.mean(Xs) >>> np.std(Xs) >>> 0.2/np.sqrt(12)
Calcul des $Y$
def f(x):
return 3*x**2
Ys = [f(Xs[i]) for i in range(N)]
On obtient ainsi les N valeurs de $Y$ correspondant aux $X$ précédents. Là encore on peut relever les paramètres statistiques.
>>> np.mean(Ys) >>> np.std(Ys) >>> np.std(Ys) / np.std(Xs)
À quoi reliez-vous le résultat du dernier calcul ?
Représentation graphique
On souhaite afficher la distribution de $Y$. Il faut donc faire un comptage. Rien de plus simple :
import matplotlib.pyplot as plt plt.figure() plt.hist(Ys, bins=20, density = True, edgecolor='black') plt.show()
Vous constatez que $Y$ a une densité à peu près uniforme, tout comme $X$.
Deux variables
Modifiez le programme pour le cas suivant : $y = f(x_1, x_2) = 3\,x_1^2 + 2 \,x_2$ avec $x_1 = 5 \pm 0,1$ et $x_2 = 7 \pm 0,2$.
En particulier, calculez $\frac{\partial f}{\partial x_1}$ et $\frac{\partial f}{\partial x_2}$ puis vérifiez que :
$$\sigma_y = \sqrt{\left(\frac{\partial f}{\partial x_1}\,\sigma_{x_1}\right)^2 + \left(\frac{\partial f}{\partial x_2}\,\sigma_{x_2}\right)^2}$$
Visualisez la distribution de $Y$.
Vous pouvez voir que la densité de $Y$ apparaît comme un rectangle un peu cassé sur les bords. On est encore loin d'une gaussienne ce que l'on peut expliquer : $\frac{\partial f}{\partial x_1}\sigma_{x_1}$ est beaucoup plus grand que $\frac{\partial f}{\partial x_2}\sigma_{x_2}$ et donc la dispersion de $Y$ est surtout le fait de $X_1$. C'est presque comme si on n'avait qu'une variable.
Modifions la fonction pour : $f(x_1, x_2) = 3\,x_1**2 + 15\,x_2$. Maintenant, les deux variables ont le même poids dans la dispersion de $Y$. Refaites l'expérience et visualisez $Y$.
Variables gaussiennes
On avait $\sigma_{x_1} \approx 0,06$ et $\sigma_{x_2} \approx 0,12$. Essayons maintenant de prendre $X_1$ et $X_2$ gaussiens :
Xs1 = [gauss(5,0.06) for i in range(N)] Xs2 = [gauss(7,0.12) for i in range(N)]
Visualisez la distribution de $Y$.
