Exercice : Incertitudes par la Méthode Monte Carlo

Dans cette partie, on va appliquer la méthode de monte Carlo pour estimer les paramètres (coefficient directeur et ordonnées à l'origine) dans le cadre d'une régression linéaire.

On utilise les incertitudes pour le nuage de points afin de générer x nuages de points. On détermine les paramètres dans chacun des cas puis on fait la moyenne pour déterminer la valeur.

Question

Exécuter le code suivant :

1
# -*- coding: utf-8 -*-
2
3
### Importation des bibliohèques
4
5
import matplotlib.pyplot as plt
6
import numpy as np
7
8
###Mesures expérimentales
9
A = [0, 0.182, 0.369, 0.744, 1.115, 1.449, 1.846 ]  # sans unité
10
C = 10**(-5)*np.array([0, 0.2, 0.4, 0.8, 1.2, 1.6, 2])       # en 10^-5 mol/L           
11
12
u_A = 0.03  #arbitraire ici
13
14
### Régression linéaire
15
16
p = np.polyfit (C, A, 1)
17
18
### Tracé de A=f(t) et de la droite d'étalonnage avec barres d'incertitude et régression linéaire
19
20
plt.errorbar(C, A, yerr = u_A,  fmt = '.', label = 'Mesures', color = 'blue') # '.' pour tracer les points sinon lissage de la courbe sans les points
21
plt.plot(C, p[0] *C + p[1], '-', label= 'Droite de régression', color = 'red')
22
plt.xlabel('$C (10^{-5} mol/L)$')
23
plt.ylabel('A')
24
plt.title("Dosage spectrophotométrique : droite d'étalonnage")   
25
plt.grid ()
26
plt.legend ()        
27
28
plt.text (1.2*10**(-5), 0.8, "Droite d'équation A = a*C + b ")
29
plt.text (1.5*10**(-5), 0.7, 'a='+'{:.4}'.format(p[0]) + 'L/mol')
30
plt.text (1.5*10**(-5), 0.6, 'b='+'{:.4}'.format(p[1]))
31
32
# plt.text (1.25*10**(-5), 0.4, "Incertitudes : ")
33
# plt.text (1.5*10**(-5), 0.3, 'u(a) = '+'{:.2}'.format(u_a) + 'L/mol')
34
# plt.text (1.5*10**(-5), 0.2, 'u(b) = '+'{:.2}'.format(u_b))
35
36
plt.show()

Question

Pour la régression linéaire, créer une variable contenant la valeur 30000 (pour 30000 valeurs aléatoires).

Créer une liste vide pour les pentes et une autre liste vide pour les ordonnées à l'origine.

Question

Créer une boucle pour les x valeurs aléatoires.

Dans cette boucle, il faut :

  1. Créer une variable « absorbance de Monte Carlo » contenant les valeurs de l'absorbance aléatoirement distribuées en fonction de l'incertitude.

  2. Créer une variable pour stocker le résultat de la fonction polyfit appliquée à la concentration, l'absorbance de Monte Carlo et pour un polynome de degré 1.

  3. Stocker la valeur du coefficient directeur dans la liste des pentes.

  4. Stocker la valeur de l'ordonnée à l'origine dans la liste des ordonnées à l'origine.

Question

Créer une variable pour le coefficient directeur moyen et y stocker la moyenne des valeurs des coefficients directeurs.

Procéder de même pour l'ordonnée à l'origine.

Question

Afficher le résultat de mesure sur le graphique.