Exercice : Incertitudes et nombres aléatoires

Dans cette partie, nous allons voir comment il est possible de générer des nombres pseudo-aléatoires avec python et plus précisément numpy.

En effet, non seulement il est possible de générer des nombres aléatoires, mais il est également possible de les générer de manière à ce qu'ils répondent à une loi souhaitée (normale, uniforme, triangulaire ...).

Pour cela, on utilise les méthodes « random » de la bibliothèque « numpy ».

Question

Exécuter le code suivant.

1
# -*- coding: utf-8 -*-
2
3
### Simulation Monte Carlo ###
4
5
### Importation des bibliothèques
6
import numpy as np
7
import numpy.random as rd
8
9
### Génération des nombres pseudo-aléatoires
10
11
x = rd.uniform(-1, 1, 10)
12
y = rd.normal(-1, 1, 10)
13
z = rd.triangular(-1, 0, 1, 10)
14
15
print (x)
16
17
print (y)
18
19
print (z)
20
21
### Tracé des histogrammes

Modifier le code en ajoutant une variable qui gère le nombre de valeurs aléatoires des listes créées.

Question

Pour la loi uniforme, tracer l'histogramme montrant la fonction de répartition des valeurs aléatoires.

Indice

Il faut utiliser la bibliothèque matpollit.pyplot.

Indice

Il faut utiliser la méthode « hist » de pyplot.

Solution

Il faut ajouter les lignes suivantes :

1
### Tracé des histogrammes
2
3
plt.figure()
4
plt.hist (x, range = (-1.5, 1.5), bins= 'rice')
5
6
plt.show ()

Question

Compléter le code pour générer 100000 nombres aléatoires suivant les 3 lois suivantes.

Question

Compléter le code pour afficher les légendes sur les graphiques.

Solution

1
plt.xlabel('Valeurs')
2
plt.ylabel('Nombre de valeurs')

Question

Comparer les incertitudes obtenus par la méthode de Monte Carlo (génération de nombres aléatoires) et les valeurs théoriques.

Indice

Pour afficher la valeur de l'incertitude théorique :

1
print (1/np.sqrt(3)) # incertitude théorique pour une loi uniforme

Indice

Pour afficher la valeur de l'incertitude relative aux valeurs aléatoires :

1
u_x = np.std(x)		# std pour standard deviation soit écart-type
2
print ((u_x)) # incertitude par méthode Monte Carlo

Question

Créer une fonction pour générer une loi dérivée d'arcsin comme dans l'exemple ci-dessous avec \(V=8 \pm 0,1\).