Bibliothèques statistiques, variables aléatoires, erreur d'intégration, distribution exponentielle, fonction de répartition, loi normale
Le document représente la mise en pratique d'une distribution exponentielle. Il comprend l'utilisation des bibliothèques statistiques, la somme de variables aléatoires et l'étude de l'erreur d'intégration.
[...] In dx = 0.02 x = np.arange(0,5,dx) l1 = 2 def return l1 * np.exp(-l1*x) plt.plot(x,f1(x),x,st.expon.pdf(x,scale=0.5)) plt.title("fonction de distribution différentielle de la distribution expon plt.xlabel("x") plt.ylabel("f1(x)") plt.show() Définir et tracer une fonction f2 donnant la pdf de la somme de deux loi exponentielles. On pourra utiliser le résultat démontré en TD. localhost:8888/lab/tree/Traitement des signaux/TP1/TP1_Jean_Gun.ipynb 2/8 13/04/2021 In In TP1_Jean_Gun def f2(x,l1): return l1**2*x*np.exp(-l1*x) z2 = f2(x,2) plt.plot(x,z2) plt.title("fonction de distribution différentielle de la somme de deux loi plt.xlabel("x") plt.ylabel("f2(x)") plt.show() Calculer le produit de convolution de f1 par elle-même. On pourra utiliser la méthode "convolve" de numpy. Ne pas oublier le pas d'intégration (voir le poly, Annexe B.1). [...]
[...] localhost:8888/lab/tree/Traitement des signaux/TP1/TP1_Jean_Gun.ipynb 4/8 13/04/2021 In [ TP1_Jean_Gun dx = tab_error = pas = np.sqrt(10) p = 0.1 * pas N = 8 for i in range(N): p = p/pas dx.append(p) x = np.arange(0,5,p) y1 = f1(x) y2 = f1(x) cv = np.convolve(y1,y2,mode='full') * p z2 = f2(x,l1) print(i, np.linalg.norm(cv[0:len(x)] - tab_error.append(np.linalg.norm(cv[0:len(x)] - In [ fig = plt.figure() ax = fig.add_subplot(111) ax.set_xlabel('Série de pas') ax.title("Graphique en échelle logarithmique") ax.set_ylabel("Marge d'erreur") ax.plot(np.log10(dx),np.log10(tab_error)) plt.show() Déterminer la pente de la droite obtenue. In [ ffunc = lambda a * x + b _ = curve_fit(ffunc, np.log10(dx), np.log(tab_error), p0 = [0.5,0.25]) print("a=", Commenter le résultat à partir de ce que vous savez de l'algorithme d'intégration (poly, Annexe B.1) On pourra recommencer cet exercice en utilisant une distribution normale (de Gauss). [...]
[...] Comment peut-on calculer l'erreur faite? In dx = 0.0005 x = np.arange(0,5,dx) y1 = f1(x) y2 = f1(x) cv = np.convolve(y1,y2,mode='full') * dx z2 = f2(x,l1) print(np.linalg.norm(cv[0:len(x)]-z2)) plt.plot(x,cv[0:len(x)],label='convolution de plt.plot(x,z2,label='somme de plt.xlabel('x') plt.title('fonction de distribution différentielle de la somme de deux loi plt.legend() plt.show() 0.0447437220461168 On peut clairement voir que les courbes coincident parfaitement ce qui corroborent mes affirmations de la question précédente. Pour l'erreur, on peut prendre le maximum des deux courbes et faire la différence entre les deux points, étant donnée que l'erreur est située à ce niveau. [...]
[...] In In y1 = f1(x) y2 = f1(x) cv = np.convolve(y1,y2,mode='full') * dx Tracer le résultat de cette convolution, superposée à la fonction f2. Que se passe-t-il? Expliquer la différence observée. In plt.plot(x,cv[0:len(x)],label='convolution de plt.plot(x,z2,label='somme de plt.xlabel('x') plt.title('fonction de distribution différentielle de la somme de deux loi plt.legend() plt.show() localhost:8888/lab/tree/Traitement des signaux/TP1/TP1_Jean_Gun.ipynb 3/8 13/04/2021 TP1_Jean_Gun On peut voir une marge d'erreur entre les courbes. Cette marge est problablement due au pas dx car si nous faisons le meme exercice avec un pas dx, les courbes se concordent parfaitement. Etude de l'erreur d'intégration Recommencer les mêmes calculs en réduisant le pas d'intégration. [...]
[...] In In fig, ax = plt.subplots(1, x = np.linspace(st.expon.ppf(0.01),st.expon.ppf(0.99), 100) ax.plot(x, st.expon.pdf(x),'r-', label='lambda = ax.plot(x, st.expon.pdf(x*2),'b-', label='lambda = plt.title("fonction de distribution différentielle de la distribution expon plt.xlabel("x") plt.ylabel("f(x)") plt.legend() plt.show() fig, ax = plt.subplots(1, x = np.linspace(st.expon.ppf(0.01),st.expon.ppf(0.99), 100) ax.plot(x, st.expon.cdf(x),'b-',label='lambda = ax.plot(x, st.expon.cdf(x*2),'r-',label='lambda = plt.title("fonction de répartition cumulée de la distribution exponentielle plt.xlabel("x") plt.ylabel("f(x)") plt.legend() plt.show() localhost:8888/lab/tree/Traitement des signaux/TP1/TP1_Jean_Gun.ipynb 1/8 13/04/2021 TP1_Jean_Gun Somme de variables aléatoires On s'intéresse à la somme de deux variables aléatoires indépendantes et distribuées toutes les deux suivant une loi exponentielle de paramètre λ. Définir et tracer une fonction f1 donnant la pdf de la loi exponentielle. Vérifier qu'elle est bien identique à celle tracée ci-dessus (utilisation du paramètre "scale"). [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture