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.