Soit $x$ une variable aléatoire sur un intervalle $[a,b]$ de $\mathbb{R}$ (éventuellement $]-\infty,+\infty[$). Une telle variable aléatoire est qualifiée de continue, par opposition aux variables aléatoires discrètes. La loi de probabilité de la variable est définie par une densité de probabilité, aussi nommée fonction de distribution. Il s'agit d'une fonction $f:\mathbb{R}\rightarrow\mathbb{R}$ définie sur $[a,b]$ telle que, pour tout $x_1$ et $x_2$ dans $[a,b]$ (avec $x_2>x_1$), la probabilité d'obtenir une valeur de $x$ dans l'intervalle $[x_1,x_2]$ s'écrit : $$\mathcal{P}(x_1\le x\le x_2)=\int_{x_1}^{x_2}f(x)dx$$ La condition de normalisation de la densité de probabilité exprime le fait que la probabilité d'obtenir $x$ dans l'intervalle $[a,b]$ est égale à $1$ : $$\int_a^bf(x)dx=1$$ L'espérance de $x$ (ou valeur moyenne) est définie par : $$\overline{x}=\int_a^bxf(x)dx$$ L'espérance de $x$ est aussi notée $\mathbb{E}(x)$.
La variance est définie par : $$\sigma_x^2 = \int_a^b(x-\overline{x})^2f(x)dx$$ L'écart-type est la racine carré de la variance, soit $\sigma_x$.
La loi uniforme sur l'intervalle $[a,b]$ est définie par la densité suivante :
$$f(x)=\frac{1}{b-a}$$
et on a donc :
$$\mathcal{P}(x_1\le x\le x_2)=\frac{x_2-x_1}{b-a}$$
L'espérance est :
$$\overline{x}=\frac{a+b}{2}$$
et la variance :
$$\sigma_x^2=\frac{(b-a)^2}{12}$$
La probabilité d'obtenir $x$ dans l'intervalle $[\overline{x}-\sigma_x ,\overline{x}+\sigma_x ]$ est :
$$\mathcal{P}(\overline{x}-\sigma_x \le x\le \overline{x}+\sigma_x )=\frac{2\Delta x}{b-a}=\frac{1}{\sqrt{3}}\approx 0{,}577$$
Le module numpy.random
permet de générer des nombres pseudo-aléatoires obéissant à différentes lois de probabilité. La fonction
numpy.random.uniform
génère un tableau de nombres obéissant à la loi de densité uniforme sur un intervalle donné :
import numpy as np
from numpy.random import uniform
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [10, 5]
a = 0
b = 10
N = 50
X = uniform(a,b,N)
print(X)
[9.29598481 3.333768 5.07398244 5.74519684 9.55048693 5.32296381 6.41729308 5.00616311 4.94444568 6.81807225 1.82577049 2.52054185 6.2396238 6.81240636 9.42471265 9.92183577 6.6316458 3.62393137 8.31425683 0.23500078 4.36343251 1.73784612 0.45418896 4.40973656 1.05902356 6.56104223 1.78256687 2.03980106 6.85651327 3.51231115 3.14104094 5.1133433 8.1217048 3.68082134 0.88700481 4.01969493 0.59676127 7.75230479 4.98901621 7.72230525 8.55653774 4.50036155 7.32695433 9.65227816 1.94429889 8.58346843 9.33268437 1.11940189 1.18101067 4.94070352]
La fonction matplotlib.pyplot.hist
permet d'obtenir un histogramme des tirages. L'argument bins
définit le nombre de classes et range
définit l'intervalle. Le nombre de classes doit être beaucoup plus petit que le nombre de tirages.
N = 10000
X = uniform(a,b,N)
plt.figure()
plt.hist(X,bins=N//1000,range=(a,b),color='lightgrey',edgecolor='k')
plt.ylabel('Nombre')
plt.ylabel('x')
plt.show()
Par défaut, c'est le nombre de tirages dans chaque classe qui est représenté (sous forme de rectangle). Un histogramme en densité consiste à diviser le nombre de tirages dans chaque classe par la largeur de la classe, ce qui permet d'estimer la densité de probabilité à partir de l'histogramme, ou de vérifier qu'il correspond bien à une densité donnée :
plt.figure()
plt.hist(X,bins=N//1000,range=(a,b),color='lightgrey',edgecolor='k',density=True)
plt.ylabel('Nombre')
plt.ylabel('x')
plt.show()
La loi normale, aussi nommée distribution de Gauss, pour une variable aléatoire définie sur $]-\infty,+\infty[$, est définie par : $$f(x)=\frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$$ L'espérance est $\overline{x}=\mu$ et la variance est $\sigma^2$, donc $\sigma$ est l'écart-type.
Voici une représentation graphique de la densité de probabilité de la loi normale pour $\mu=0$ et différentes valeurs de $\sigma$ :
def gauss(mu,sigma,x):
return 1/(sigma*np.sqrt(2*np.pi))*np.exp(-(x-mu)**2/(2*sigma**2))
x = np.linspace(-10,10,1000)
mu = 0
sigma = [0.5,1,2]
plt.figure()
for s in sigma:
plt.plot(x,gauss(mu,s,x),label=r'$\sigma=%f$'%s)
plt.grid()
plt.xlabel('x')
plt.ylabel('f(x)')
plt.legend(loc='upper right')
plt.show()
L'écart-type $\sigma$ définit l'étalement de la distribution des valeurs de $x$. La probabilité d'obtenir une valeur dans l'intervalle $[\mu-\sigma,\mu+\sigma]$ est : $$\mathcal{P}(\mu-\sigma\le x\le\mu+\sigma)\approx 0{,}6827$$ Cette valeur est notablement plus grande que la probabilité pour la distribution uniforme ($0{,}577$). La probabilité d'obtenir une valeur dans l'intervalle $[\mu-3\sigma,\mu+3\sigma]$ est : $$\mathcal{P}(\mu-3\sigma\le x\le\mu+3\sigma)\approx 0{,}9973$$ On peut donc considérer que la largeur de la distribution est pratiquement égale à $6\sigma$. La densité de probabilité décroît très vite lorsque $x$ s'éloigne de cet intervalle. Voici la reprise des courbes précédentes en échelle logarithmique pour l'ordonnée :
plt.figure()
for s in sigma:
plt.plot(x,gauss(mu,s,x),label=r'$\sigma=%f$'%s)
plt.grid()
plt.xlabel('x')
plt.ylabel('f(x)')
plt.legend(loc='upper right')
plt.yscale('log')
plt.show()
Pour $x=\mu+10\sigma$ on a $\frac{f(x)}{f(0)}=\exp(-50)\approx 2\cdot 10^{-22}$, ce qui est extrêmement faible.
La fonction numpy.random.normal
génère des nombres aléatoires obéissant à la loi normale :
from numpy.random import normal
mu = 10
sigma = 1
N = 10000
X = normal(mu,sigma,N)
Pour représenter un histogramme de ces tirages, il faut choisir un intervalle assez grand pour que le nombre de tirages en dehors de cet intervalle soit négligeable. Dans le cas de la loi normale, l'intervalle $[\mu-10\sigma,\mu+10\sigma]$ est très largement suffisant :
plt.figure()
a = mu-10*sigma
b = mu+10*sigma
plt.hist(X,bins=N//100,range=(a,b),color='lightgrey',edgecolor='k',density=True)
plt.ylabel('Nombre')
plt.xlabel('x')
x = np.linspace(a,b,1000)
plt.plot(x,gauss(mu,sigma,x),'r-')
plt.show()
On dispose d'un ensemble de $N$ tirages $x_i$ d'une variable aléatoire $x$, dont la loi de probabilité peut être inconnue. L'objectif est d'obtenir des informations sur cette loi de probabilité à partir de ces tirages. La moyenne expérimentale est, par définition, la moyenne arithmétique des tirages : $$m=\frac{1}{N}\sum_{i=1}^Nx_i$$ $m$ est une variable aléatoire puisque plusieurs réalisations de ces $N$ tirages donnent des valeurs aléatoires de $m$. L'espérance de $m$ est égale à l'espérance de $x$, donc $m$ constitue une estimation de $\overline{x}$.
La fonction numpy.mean
calcule la moyenne arithmétique des valeurs d'un tableau. On peut donc l'utiliser pour estimer l'espérance. Voici une simulation avec la loi uniforme (bien sûr, la loi est connue pour la simulation) :
a=0
b=10
N=10000
X = uniform(a,b,N)
m = np.mean(X)
print(m)
5.031275523927547
La variance expérimentale est la moyenne arithmétique de $(x_i-m)^2$. Sa définition exacte est :
$$s^2=\frac{1}{N-1}\sum_{i=1}^N(x_i-m)^2$$
Il faut remarque la division par $\frac{1}{N-1}$ et non pas par $\frac{1}{N}$, qui permet d'avoir une estimation correcte de la variance : l'espérance de $s^2$ est égale à la variance de $x$, quel que soit $N>1$.
L'écart-type expérimental est la racine carrée de la variance expérimentale; on le note donc $s$.
La fonction numpy.std
calcule l'écart-type expérimental des valeurs d'un tableau, au moyen de l'expression :
$$e=\sqrt{\frac{1}{N-d}\sum_{i=1}^N(x_i-m)^2}$$
L'argument ddof
précise la valeur de $d$, qui doit être $1$ pour l'évaluation de l'écart-type, mais dont la valeur pas défaut est $0$.
s=np.std(X,ddof=1)
print(s)
2.862453512601707
à comparer à la valeur de l'écart-type de la loi uniforme : $$\sigma_x=\frac{b-a}{\sqrt{12}}$$
print((b-a)/np.sqrt(12))
2.886751345948129
La variance de $m$ est égale à la variance de $x$ divisée par $N$ : $$\sigma_m^2=\frac{(\sigma_x)^2}{N}$$ L'écart-type de $m$ et donc égal à l'écart-type de $x$ divisé par la racine carrée de $N$ : $$\sigma_m=\frac{\sigma_x}{\sqrt{N}}$$ Ce résultat montre que l'estimation de $\overline{x}$ par $m$ est d'autant meilleure que $N$ est grand. Lorsque $N\rightarrow\infty$, l'écart-type de $m$ tend vers zéro. $\overline{x}$ est donc égal à la moyenne arithmétique d'un nombre infini de tirages. La convergence de $m$ vers $\overline{x}$ lorsque $N$ augmente est relativement lente : une réduction de $\sigma_m$ d'un facteur $10$ nécessite de multiplier le nombre de tirages par $100$.
On définit une variance expérimentale pour la moyenne : $$s_m^2=\frac{s^2}{N}$$
Cette variance constitue une évaluation de la variance de $m$ : $$\sigma_m^2\approx s_m^2$$
print(s/np.sqrt(N))
0.02862453512601707
Le théorème de la limite centrale énonce que, dans la limite $N\rightarrow\infty$, la variable aléatoire $m$ (moyenne expérimentale) suit une loi normale d'espérance $\mu=\overline{x}$ et d'écart-type $\sigma=\frac{\sigma_x}{\sqrt{N}}$.
Une simulation de Monte-Carlo d'une série de $N$ tirages (pour une loi uniforme) permet de vérifier expérimentalement ce théorème :
N = 10 # nombre de tirages pour calculer une moyenne empirique
Nm = 10000 # nombre de moyennes empiriques calculées
a,b=0,10
M = np.zeros(Nm)
for k in range(Nm):
M[k] = np.mean(uniform(a,b,N))
plt.figure()
plt.hist(M,bins=Nm//100,range=(a,b),color='lightgrey',edgecolor='k',density=True)
mu = (a+b)/2
sigma = (b-a)/np.sqrt(12)/np.sqrt(N)
x = np.linspace(a,b,1000)
plt.plot(x,gauss(mu,sigma,x),'r-')
plt.xlabel('x')
plt.show()
Cette simulation montre que la moyenne suit une loi normale même lorsque $N$ n'est pas très grand.
Soit une grandeur physique $X$. Une mesure de $X$ fournit une valeur $x$. $N$ mesures indépendantes fournissent $N$ valeurs $x_i$. La valeur mesurée présente une variabilité plus ou moins grande. On distingue deux causes à cette variabilité :
Si la température relevée par le capteur est elle-même fluctuante pour des raisons indépendantes du dispositif de mesure (par exemple à cause de légères variations de température au voisinage du récipient), la variabilité de la valeur de température peut être considérée comme due au phénomène physique lui-même. Dans ce cas, la variabilité est due au fait que certains paramètres qui influencent le résultat de la mesure ne sont pas suffisamment contrôlés.
Dans le cas de mesures quantiques, la variabilité des résultats d'une mesure est une propriété fondamentale de la mesure à une échelle où les propriétés quantiques de la matière ne sont pas négligeables (échelle atomique ou sub-atomique). Il s'agit donc d'une variabilité due au phénomène physique, indépendante de la précision des appareils de mesure.
On suppose que les valeurs mesurées $x_i$ suivent une loi de probabilité. L'objectif du mesurage est d'obtenir une valeur aussi proche que possible de l'espérance $\overline{x}$, qui est la moyenne arithmétique d'un nombre infini de valeurs mesurées. En réalité, on procède soit à une mesure unique, soit à une moyenne de quelques mesures, plus rarement à une moyenne d'un grand nombre de mesures. Notons $x_m$ le résultat de la mesure.
Par définition, l'incertitude-type de la mesure est une estimation de l'écart-type $\sigma_x$ de la loi de probabilité suivie par $x$. On notera $u(x)$ l'incertitude-type.
Une incertitude-type est toujours une estimation d'un écart-type. La valeur exacte de l'écart-type est évidemment inaccessible, tout comme l'espérance de la variable aléatoire associée à la grandeur mesurée.
Il est possible de donner une signification probabiliste à l'écart-type à condition de faire une hypothèse sur la forme de la loi de probabilité. Dans de nombreux cas, il est raisonnable de supposer que les valeurs mesurées obéissent à une loi normale. Pour vérifier cette hypothèse, il faudrait tracer un histogramme d'un très grand nombre de valeurs mesurées, ce que l'on fait rarement. Dans le cas d'une loi normale, on peut dire que la probabilité qu'une mesure particulière donne une valeur dans l'intervalle $[\overline{x}-\sigma_x,\overline{x}+\sigma_x]$ est de $68\,\%$. Cette affirmation est purement théorique, car la mesure ne donne pas accès exactement à $\overline{x}$ ni à $\sigma_x$. On verra plus loin qu'il est possible d'attribuer une probabilité à un intervalle centré sur $x_m$, ce qui est beaucoup plus intéressant d'un point de vue pratique.
L'incertitude relative est définie par : $$\frac{u(x)}{x_m}$$ Par exemple, une incertitude relative de $5\,\%$ signifie que l'incertitude-type est égale à $0{,}05x_m$. Une mesure est plus précise qu'une autre si son incertitude relative est plus faible.
L'expression évaluation de l'incertitude-type signifie : calcul d'une estimation de l'écart-type de la loi de probabilité.
Lorsque plusieurs mesures peuvent être réalisées, il est possible d'évaluer l'incertitude par des calculs de statistique (évaluation de type A). Soient $N$ mesures indépendantes fournissant les valeurs $x_i$. Il faut que ces mesures soient effectuées pendant un intervalle de temps où les conditions de l'expérience sont assez stables. L'évaluation statistique de l'incertitude-type repose sur les définitions énoncées dans la partie II. Rappelons la définition de l'écart-type expérimental (ou estimateur de l'écart-type) : $$s=\sqrt{\frac{1}{N-1}\sum_{i=1}^N(x_i-m)^2}$$ $s$ constitue une évaluation de l'écart-type donc constitue une évaluation de l'incertitude-type : $$u(x)=s$$ Bien sûr, cette évaluation est d'autant meilleure que le nombre de mesures est grand. Bien souvent, on doit cependant se contenter d'un nombre de mesures faible (moins d'une dizaine). Quel crédit peut-on accorder à cette estimation ? Dans le cas où la loi de probabilité suivie par $x$ est normale, l'incertitude relative de cette évaluation de l'incertitude est : $$\delta_{u(x)}=\frac{1}{\sqrt{2(N-1)}}$$ Traçons cette incertitude relative en fonction de $N$ :
plt.figure()
N = np.arange(2,100)
plt.plot(N,1/np.sqrt(2*N))
plt.grid()
plt.xlabel('N')
plt.ylabel(r"$\delta_{\Delta x}$")
plt.ylim(0,1)
plt.show()
Pour $N=10$ mesures, l'incertitude relative de l'évaluation de l'incertitude est de $23\,\%$. Pour $N=100$ mesures, elle est de $7\,%$. En conséquence, si le nombre de mesures est inférieur à 100, l'incertitude obtenue peut être donnée avec un seul chiffre significatif.
Une simulation de Monte-Carlo permet de donner un exemple. Supposons qu'on mesure une grandeur dont la loi de probabilité est la loi normale, d'espérance $\mu=10$ et d'écart-type $\sigma=1$. La loi de probabilité est connue car il s'agit d'une simulation. Dans la réalité, elle est inconnue (tout au plus peut-on supposer que c'est une loi normale). Effectuons la simulation de $N=10$ mesures :
N = 10
X = normal(10,1,N)
print(X)
uX = np.std(X,ddof=1)
print(uX)
[ 8.43406346 9.64436833 10.13412512 10.33052169 9.51041958 8.3207503 9.36868411 11.3044816 9.96972716 9.77574461] 0.8748533010982508
Supposons que l'on retienne la première valeur. On écrira :
from IPython.display import display, Math
display(Math(r"$x=%0.1f$"%X[0]),Math(r"u(x)=%0.1f$"%(uX)))
Une autre série de $10$ mesures donne en général un résultat différent :
X = normal(10,1,N)
uX = np.std(X,ddof=1)
display(Math(r"$x=%0.1f$"%X[0]),Math(r"u(x)=%0.1f$"%(uX)))
Puisqu'on dispose de $N$ valeurs $x_i$, il est intéressant de calculer la moyenne arithmétique des $x_i$, qui constitue une estimation de l'espérance de la loi de probabilité plus précise qu'une valeur unique : $$x_m= m =\frac{1}{N}\sum_{i=1}^Nx_i$$
xm=np.mean(X)
print(xm)
9.63896310926507
L'incertitude-type de cette estimation de l'espérance est estimée à partir de l'incertitude-type estimée de $x$ : $$u(x_m) = \frac{u(x)}{\sqrt{N}}$$
uxm = uX/np.sqrt(N)
print(uxm)
0.20807644898501687
Il faut faire attention au fait que l'incertitude reportée ici concerne la valeur moyenne. Elle quantifie donc la variabilité de la valeur moyenne (pour des séries de $N$ mesures répétées) mais pas celle de $x$. Le résultat de la mesure est $x_m$ et l'incertitude évaluée est $u(x_m)$. Le cas particulier d'une mesure unique correspond simplement à une moyenne avec $N=1$.
Il est possible de définir un intervalle centré sur $x_m$ pour que la probabilité que $\overline{x}$ soit dans cet intervalle ait une valeur donnée. La calcul de cet intervalle fait appel au coefficient de Student, dont l'exposition sort du cadre de ce document d'introduction. Donnons tout de même quelques résultats pour une probabilité $\mathcal{P}=0{,}70$. La largeur de l'intervalle dépend non seulement de l'incertitude mais aussi du nombre $N$ de mesures utilisées pour calculer la moyenne $x_m$. Pour une seule mesure, l'intervalle est : $$[x_m-1{,}963u(x_m),x_m+1{,}963u(x_m)]$$ Pour 10 mesures, l'intervalle est : $$[x_m-1{,}093u(x_m),x_m+1{,}093u(x_m)]$$ Pour un très grand nombre de mesures (plusieurs centaines) : $$[x_m-1{,}036u(x_m),x_m+1{,}036u(x_m)]$$ Ces résultats montre le double bénéfice qu'il y a à faire la moyenne d'une dizaine de mesures plutôt qu'une mesure unique. Premièrement, la valeur de $u(x_m)$ est $\sqrt{10}\approx 3{,}2$ fois plus petite. Deuxièmement, l'intervalle centré sur $x_m$ dans lequel $\overline{x}$ à une probabilité $\mathcal{P}=0{,}70$ de se trouver est plus petit d'un facteur $1{,}963/1{,}093\approx 1{,}8$. Le fait de faire plus que 10 mesures ne change pas beaucoup la largeur de l'intervalle par rapport à l'incertitude $u(x_m)$ mais réduit bien sûr celle-ci proportionnellement à $\frac{1}{\sqrt{N}}$.
Dans de nombreuses situations, il n'est pas possible d'estimer l'incertitude par une étude statistique de plusieurs mesures. Pour que l'évaluation statistique soit vraiment intéressante, il faut réaliser au moins une dizaine de mesures en un temps assez court pour que le phénomène physique n'ait pas le temps d'évoluer, ce qui est souvent infaisable. Même lorsque l'étude statistique est en principe réalisable, on ne peut pas toujours la faire pour des raisons de temps disponible.
Par ailleurs, il arrive que des mesures répétées ne permettent pas d'observer la variabilité. Par exemple, si on utilise un voltmètre pour mesurer une tension dans un circuit électrique et si la variabilité physique de celle-ci est supposée négligeable par rapport à la précision du voltmètre, celui-ci indiquera toujours la même valeur, au dernier chiffre affiché près. Cependant, l'utilisation d'un autre voltmètre (du même modèle) pourrait indiquer une valeur différente avec une différence supérieure à l'unité du dernier chiffre. Dans cette situation, la variabilité vient de petites variations aléatoires de l'électronique interne des voltmètres, variations d'un voltmètre à l'autre (par exemple les valeurs de résistances des circuits internes). Pour observer la variabilité, il faudrait répéter la mesure avec un grand nombre de voltmètres du même modèle, ce qui est bien sûr infaisable.
L'évaluation de l'incertitude de type B consiste à évaluer l'incertitude des appareils de mesure et de l'opérateur sans répéter la mesure. Pour ce faire, il y a deux possibilités :
Comme exemple du premier cas, considérons une expérience d'optique comportant un objet et une lentille convergente faisant une image réelle de cet objet. Les éléments sont placés sur un banc d'optique. Il s'agit de déterminer la position de l'image projetée sur un écran. Le cavalier supportant l'écran comporte une pointe qui permet de repérer sa position sur la règle graduée du banc. La mesure consiste à déterminer cette position. On constate que l'incertitude vient principalement du jugement de l'observateur (qui procède à l'œil nu) et que l'incertitude de la position de la pointe sur la règle graduée est négligeable. L'observateur constate que l'image lui semble nette pour $x$ compris entre $x_a$ et $x_b$ (avec $x_b>x_a$). Il retient donc la valeur $x_1=\frac{x_a+x_b}{2}$ et écrira dans un premier le temps le résultat sous la forme $x_1\pm \Delta$ avec $\Delta=(x_b-x_a)/2$. On considère que la densité de probabilité de $x$ est uniforme sur l'intervalle $[x_a,x_b]$. L'incertitude-type est donc : $$u(x)=\frac{x_b-x_a}{\sqrt{12}}=\frac{\Delta}{\sqrt{3}}$$
Un autre exemple similaire est celui de la lecture d'une tension sur l'écran d'un oscilloscope. La courbe possède une épaisseur verticale que l'on notera $2\Delta$. Cette épaisseur peut être due au bruit présent dans le signal visualisé mais, même si ce bruit est invisible, il y a l'épaisseur du trait utilisé pour le tracé. L'évaluation de cette épaisseur peut être délicate mais il faut se souvenir qu'une incertitude s'évalue avec une précision de l'ordre de $10\,\%$ au mieux. Dans cette situation, on peut aussi considérer que la tension cherchée suit une loi uniforme est évaluer l'incertitude-type par la relation : $$u(V)=\frac{\Delta}{\sqrt{3}}$$ Dans l'application de cette relation, une approximation de $1/\sqrt{3}$ à un chiffre significatif est suffisante : $u(x)\approx 0{,}6\Delta$ puisque $\Delta$ n'est connu qu'à $10\,\%$ près.
Pour les appareils électroniques (par ex. les voltmètre-ampèremètre-ohmmètres), la notice indique la précision de l'appareil. La précision est typiquement indiquée sour la forme d'un pourcentage de la valeur lue plus un certain nombre d'unités du dernier chiffre affiché. Prennons l'exemple de la mesure d'une résistance par un ohmmètre. La valeur affichée est $6{,}72\,\rm k\Omega$ et cette valeur est stable. La notice de l'appareil nous informe que, dans la plage de valeur allant de $3{,}0\,\rm k\Omega$ à $60{,}0\,\rm k\Omega$, la précision est $\pm 0{,}9\,\%$ de la valeur lue plus 1 unité du dernier chiffre. $0{,}009\times 6{,}72=0{,}06\,\rm k\Omega$ et l'unité du dernier chiffre est $0{,}01\,\rm k\Omega$. Il s'en suit que la précision est $\Delta=0{,}07\,\rm k\Omega$. Cette précision n'est pas une incertitude-type. Pour évaluer cette dernière, on considère généralement que la plage de valeurs donnée par la précision est une plage de valeurs où on est quasi certain que la valeur réelle se trouve. Le problème est qu'on ne connaît pas la loi de probabilité à l'intérieur de cet intervalle. Il est d'usage de considérer qu'il s'agit d'une loi uniforme, ce qui conduit à évaluer l'incertitude type par $u(x)\approx 0{,}6\Delta=0{,}04\,\rm k\Omega$. On écrira donc le résultat sous la forme : $R=6{,}72$ avec $u(x)=0{,}04\,\rm k\Omega$. Il faut remarquer que l'hypothèse d'une loi normale conduirait à une incertitude type $u(x)\approx\Delta/3$ soit environ deux fois plus petite. L'hypothèse d'une loi uniforme est donc une hypothèse prudente alors que l'hypothèse d'une loi normale pourrait conduire à une sous-estimation de l'incertitude-type. Dans tous les cas, il faut se rappeler que l'incertitude n'est donnée qu'à $10\,\%$ près.
Il arrive fréquemment que la grandeur physique que l'on cherche dépende de plusieurs grandeurs mesurées indépendantes. Par exemple, pour mesurer le gain d'un filtre électronique, on mesure les amplitudes $V_e$ et $V_s$ des tensions respectivement à l'entrée et à la sortie du filtre puis on calcule le gain $G=V_s/V_s$.
Considérons une grandeur $y$ qui dépend de $n$ grandeurs indépendantes $x_1,x_2,\ldots x_n$ par la relation : $$y=g(x_1,x_2,\ldots x_n)$$ où $g$ est une fonction à $n$ variables. Considérons un ensemble de $N$ mesures pour chaque $x_i$, qui fournissent les valeurs $x_{m1},x_{m2},\ldots x_{m3}$. L'incertitude-type de $x_{i}$ est notée $u(x_{i})$.
Si les incertitudes relatives sont assez petites, on a l'approximation : $$\overline{y}\approx g(\overline{x_1},\overline{x_2},\ldots,\overline{x_n})$$ Il s'en suit que la valeur de $y_m$, qui est une estimation de $\overline{y}$, doit être calculée par la relation suivante : $$y_m=g(x_{1m},x_{2m},\ldots x_{nm})$$ Si les variances sont assez petites et si les $n$ variables sont indépendantes, on a l'approximation suivante pour la variance de $y$ : $$\sigma_y^2\approx \sum_{i=1}^n\left(\frac{\partial g}{\partial x_i}\right)^2\sigma_i^2$$ étant entendu que les dérivées partielles sont évaluées en $x_1=\overline{x_1}$, $x_2=\overline{x_2}$, etc.. On calculera donc l'incertitude-type de $y$ par la relation : $$u(y)=\sqrt{\sum_{i=1}^n\left(\frac{\partial g}{\partial x_i}\right)^2(u(x_i))^2}$$ où les dérivées partielles sont évaluées en $x_1=x_{m1}$, $x_2=x_{m2}$, etc. La relation ci-dessus est la formule de composisiton des incertitudes (ou de propagation des incertitudes).
Une simulation numérique de Monte Carlo permet d'effectuer rapidement un calcul d'incertitudes composées dans le cas où la fonction $g$ est trop complexe ou même dans les cas simples, pour éviter l'application numérique des formules. Par ailleurs, la simulation numérique donne un résultat plus précis lorsque l'incertitude relative est grande. La méthode consiste à générer des valeurs aléatoires de chacune des grandeurs $x_i$. On peut utiliser pour cela la loi de probabilité normale, car cette loi convient pour la plupart des mesures. Il est possible de faire la simulation avec la loi uniforme mais le résultat dépend très peu de la loi de probabilité choisie.
Pour chaque $x_i$, on ne connaît pas les valeurs exactes de l'espérance et de l'écart-type mais on utilise l'estimation $x_{mi}$ de l'espérance et l'estimation $u(x)$ de l'écart-type. Ces estimations sont utilisées comme espérance et écart-type pour la distribution normale qui permet de générer les échantillons. Considérons par exemple le cas $y=x_1+x_2$.
xm1 = 10.0
ux1 = 0.1
xm2 = 2.5
ux2 = 0.05
N = 1000000 # simulation de 1000000 mesures
X1 = normal(xm1,ux1,N)
X2 = normal(xm2,ux2,N)
Pour les $N$ mesures simulées, on calcul $y$ puis la valeur moyenne et l'écart-type :
Y = X1+X2
ym = np.mean(Y)
print(ym)
uym = np.std(Y,ddof=1)
print(uym)
12.499959188742539 0.1118253864111394
Pour le calcul de l'écart-type, on aurait pu omettre ddof=1
car $N$ est très grand. Comparons ces résultats à ceux obtenus par l'application des formules :
ym = xm1+xm2 # dans ce cas, c'est la valeur exacte
print(ym)
Delta_ym = np.sqrt(Delta_xm1**2+Delta_xm2**2) # valeur approchée
print(Delta_ym)
12.5 0.1118033988749895
Bien sûr, la méthode numérique ne fournit les valeurs exactes que dans la limite $N\rightarrow\infty$.
Voici un exemple plus complexe, où l'application de la formule de composition serait laborieuse. À partir des mesures des amplitudes de tension $V_e$ et $V_s$ en entrée et en sortie d'un filtre, on doit calculer le gain en décibel, défini par : $$G_{dB}=20\log\left(\frac{V_s}{V_e}\right)$$ On suppose que l'incertitude est de $10\,\rm mV$.
ve = 1.0
uve = 0.01
vs = 0.2
uvs = 0.01
N=1000000
Ve=normal(ve,uve,N)
Vs=normal(vs,uvs,N)
GdB = 20*np.log10(Vs/Ve)
GdBm = np.mean(GdB)
print(GdBm)
uGdBm = np.std(GdB)
print(uGdBm)
-13.989220769615327 0.44412170203478296
Considérons deux valeurs mesurées d'une même grandeur. $x_{m1}$ est obtenue par moyenne de $N_1$ mesures et l'incertitude-type $u(x_1)$ est égale à l'écart-type expérimental de la moyenne. De même $x_{m2}$ est obtenue par moyenne de $N_2$ mesures et l'incertitude-type $u(x_2)$ est égale à l'écart-type expérimental de la moyenne. Il peut sagir de deux mesures effectuées par deux laboratoires différents avec un matériel similaire. Dans d'autres cas, il s'agit de comparer une mesure faite avec un certain matériel à une mesure dite de référence, obtenue avec des appareils beaucoup plus précis par un laboratoire de référence. Par exemple, on peut chercher à comparer une longueur d'onde d'un spectre d'émission atomique obtenue en TP d'optique avec la longueur d'onde tabulée, qui a été obtenue par les meilleurs techniques de mesure de longueur d'onde.
La comparaison repose sur l'écart normalisé, défini par : $$E_n=\frac{|x_{m2}-x_{m1}|}{\sqrt{(u(x_1))^2+(u(x_2))^2}}$$
Une interprétation probabiliste de l'écart normalisé est possible mais sort du cadre du programme. On retriendra le critère simple suivant :
Soit par exemple une longueur d'onde de référence de la raie jaune inférieure du doublet du sodium : $\lambda_1=588{,}9950\,\rm nm$. Une expérience de TP réalisée avec un réseau de diffraction conduit à la valeur $\lambda_{m2}=586$ avec $u(\lambda)=2\,\rm nm$. Cette valeur pourrait par exemple être obtenue par traitement statistique d'une dizaine de mesures réalisées par 10 groupes différents. Pour la valeur de référence, il n'est pas nécessaire de tenir compte de l'incertitude puisqu'elle est négligeable devant celle de la valeur mesurée en TP. Calculons l'écart normalisé :
L1=588.9950
L2=586
uL2 = 2
En = abs(L2-L1)/uL2
print(En)
1.4975000000000023
L'écart normalisé est inférieur à 2 : la valeur obtenue en TP est compatible avec la valeur de référence.