Bonjour à tous,
Je suis en train de coder une petit code pour générer une variables aléatoire en utilisant l'algorithme d'acceptation rejet. Je l'obtiens avec la fonction randnt_ar2 (codée par mes soins).
Le problème ne pose pas sur cette fonction (pas encore...) mais sur la comparaison avec la véritable densité de probabilité (connue). En effet, pour tracer à la fois densité de probabilité théorique et l'histogramme de la variable générée, je dois normaliser l'histogramme obtenu.
Pour moi, la méthode consiste à diviser chaque classe (bins) par N*Taille_Classe, avec N le nombre de points de la variable aléatoire générée.
Or quand je trace les deux, il y a un très fort décalage.
Donc, confirmez vous que ma normalisation est bonne? Et dans ce cas le problème vient de ma fonction randnt_ar2 elle même. Mais j'aimerai m'assurer que le problème ne vient pas de là.
Mon code main est le suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Partie I: Simulation de la loi normale tronquée positive %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Paramètres de la loi Gaussienne tronquée N=10000;%Nombre de points m=-1;%Moyenne sigma2=0.1;%variance %Element pour l'histogramme Nbins=50; Z=zeros(N,1); %Generation de Z par methode d'acceptation 2 (loi candidate: loi exp) Z=randnt_ar2(m,sigma2,N); %Elements pour tracer loi normale tronquée Taille_Bins_z=(max(Z)-min(Z))/Nbins; Coeff_norm_z=Taille_Bins_z*N; [Nz,Xz]=hist(Z,Nbins); Nz=Nz./Coeff_norm_z;%Normalisation de l'histogramme f_th_z=f(Xz',m,sigma2); plot(Xz,Nz,'.k',Xz,f_th_z,'*r');
En espérant être clair.
Partager