#!/usr/bin/python3 # -*- coding:Utf-8 -* """ composees.py - Version 1.2 22/05/2022 Propagation des incertitudes sur une grandeur obtenue par calcul à l'aide la méthode de Monte-Carlo Licence MIT, Damien Riou """ import numpy as np import matplotlib.pyplot as plt plt.close('all') # Nombre d'échantillon N = 100000 # Grandeurs et écart-types (À MODIFIER) X0 = 0.2 # USI X1 = 0.02 # USI X2 = 0.007 # USI sX0 = 0.002 # USI sX1 = 0.0002 # USI sX2 = 0.00007 # USI # Grandeurs avec erreur gaussienne X0e = X0 + sX0*np.random.randn(N) X1e = X1 + sX1*np.random.randn(N) X2e = X2 + sX2*np.random.randn(N) def f(X0, X1, X2): """Fonction permettant le calcul de la nouvelle grandeur (À MODIFIER)""" return X0*X1/X2 # Calcul de la grandeur, de sa moyenne et de son écart-type (À MODIFIER) Xe = [f(X0e[i], X1e[i], X2e[i]) for i in range(len(X0e))] moy = np.mean(Xe) std = np.std(Xe) print('Par la méthode de Monte-Carlo avec {} points...'.format(N)) print(' moyenne : ' + np.format_float_scientific(moy, precision=9)) print(' écart-type : ' + np.format_float_scientific(std, precision=9)) # Tracé plt.figure(1) plt.hist(Xe, bins=60) plt.title('Distribution de X') plt.xlabel('Valeur de X') plt.ylabel('Occurence de la valeur de X') plt.show()