C'est quoi le problème dans mon programme?
Bonjour,
j'ai un programme qui me donne des variables aleatoires suivant une loi normale par la methode de box muller le problème c'est qu'en resultat il me donne un vecteur de 1 1 1 1 or quand j'essai de verifier j'ai des valeur # 1
j'ai un programme qui me donne des variables aleatoires suivant une loi normale par la methode de box muller le problème c'est qu'en resultat il me donne un vecteur de 1 1 1 1 or quand j'essai de verifier j'ai des valeur # 1
2 réponses
-
Hummmm !
Difficile a dire sans connaitre le programme ? -
clear all
clc
%DECLARATIONS
S=0;
premier=[];
mu=[];
PARAMETRE=[];
RR=[];
RRR=[];
R2=[];
MODELE=[];
D=[];
D1=[];
moy=[];
R1=[];
PM=[];
PM1=[];
mu=[];
a=[];
boxm=[];
%BEGIN
M=100;
N=100;
%RDS%**********************************************
while sum(moy)<=N
y=0;
while y==0
B=round(M*rand(1));
y=isprime(B);
end
B
%generation des Ri
for i=1:B
rs=(i-0.5);
R=rs/B;
R1(i)=R;
end
R1;
%Mélanger le vecteur
for i=1:B
p1=round(B*rand(1));
while(p1<i)|(p1>B)
p1=round(B*rand(1));
end
va=R1(p1);
R1(p1)=R1(i);
R1(i)=va;
end
R1
G=R1;%contient le dernier vecteur généré
R2=R2(1:sum(moy));
R2=[R2,R1];
moy=[moy length(R1)]
end
premiert=moy(1:length(moy)-1); %premiert contient les tous les nomb'res premiers moins le dernier
R1=G(1:N-sum(premiert));% contient les N- somme(nombre premiers-1) valeurs km
RR=R2(1:length(R2)-length(G));
RRR=[RR,R1]
R3=RRR;
%Remelanger
for i=1:N
p2=round(N*rand(1));
while(p2<i)|(p2>N)
p2=round(N*rand(1));
end
va1=R3(p2);
R3(p2)=R3(i);
R3(i)=va1;
end
R3
%_________--________--_________--_________--_________
%generation du vecteur des ALEAS Suivant une dist_rademacher
for i=1:N
alea=2*round(RRR)-1;
mu=alea';
end
%génération de v.a avec la M.Box_muller (N(0,1))
m=0; %moyenne
v=1; %variane
i=1;
t=sqrt(v);
while (i <= N)
u(i)=RRR(i);
u(i+1)=R3(i);
y(i)=sqrt(-2*log(u(i)))*cos(2*pi*u(i+1));
y(i+1)=sqrt(-2*log(u(i)))*sin(2*pi*u(i+1));
x(i)=t*y(i)+m;
x(i+1)=t*y(i+1)+m;
i=i+2;
end