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

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Hummmm !
    Difficile a dire sans connaitre le programme ?
    1. j'ai posté le programme
  2. 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
    1. Modérateur
      Salut,

      Lorsque tu postes du code sur le forum, veille à bien utiliser les balises de code ;-)

      Bien à toi,
    2. Tu doit modifié: PARAMETRE=[];
    3. oui c'est avec matlab c sa le code!!
    4. ah mais ce n'est pas le problème, le problème ce pose au niveau des y(i), j'ai des 1