Densité uniforme sur la boule unité en dimension quelconque
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Densité uniforme sur la boule unité en dimension quelconque



  1. #1
    invite579d9775

    Densité uniforme sur la boule unité en dimension quelconque


    ------

    Bonjour,

    J'aimerai savoir s'il est numériquement possible de tirer aléatoirement des points avec une distribution uniforme sur la boule unité de (d, choisi quelconque). Si oui, pourriez vous m'orienter vers un algorithme le faisant ?

    Merci d'avance

    Benarrs

    -----

  2. #2
    inviteae4072e1

    Re : Densité uniforme sur la boule unité en dimension quelconque

    Suffit de tirer un échatillon issu d'une variable aléatoire uniforme sur l'intervalle [-0.5;0.5] x [-0.5;0.5] x ... x [-0.5;0.5] (d fois) et de vérifier que la norme sur Rd est inférieure à 1.

  3. #3
    invite579d9775

    Re : Densité uniforme sur la boule unité en dimension quelconque

    Sauf erreur de ma part, l'hypercube est inclus dans l'hypersphère unité, donc...

    La méthode de rejet avec l'hypercube ne fonctionne pas en grande dimension: le volume de l'hypercube tend vers l'infini avec la dimension alors que celui de la sphère tend vers 0...d'où mon problème (puisque pour moi d=15 ou 20)

  4. #4
    inviteae4072e1

    Re : Densité uniforme sur la boule unité en dimension quelconque

    Citation Envoyé par Benarrs Voir le message
    Sauf erreur de ma part, l'hypercube est inclus dans l'hypersphère unité, donc...
    Erreur de ma part, en effet, plutôt .

    Citation Envoyé par Benarrs Voir le message
    La méthode de rejet avec l'hypercube ne fonctionne pas en grande dimension: le volume de l'hypercube tend vers l'infini avec la dimension alors que celui de la sphère tend vers 0...d'où mon problème (puisque pour moi d=15 ou 20)

    Tend à l'infini pour d tendant vers l'infini, oui.
    Mais dans le cas d=15 ou d=20 ce n'est pas infini...
    Juste que la probabilité de tirer un aléa issu de l'hypercube et appartenant à l'hyper-sphère est très faible, et tend vers 0 pour d=infini.

  5. A voir en vidéo sur Futura
  6. #5
    invite579d9775

    Re : Densité uniforme sur la boule unité en dimension quelconque

    Ok, donc mis à part cette méthode (qui devient très mauvaise dés que d est grand), n'y a-t-il rien d'autre ?

    ps: pour d=15, les résultats sont déjà catastrophiques.

  7. #6
    inviteae4072e1

    Re : Densité uniforme sur la boule unité en dimension quelconque

    Sinon raisonner en coordonnées polaires, c'est-à-dire tirer dans une loi uniforme chaque coordonnées.
    Ici dans ton espace à d dimensions, tu tires le rayon r et les angles a1 ... a2 ... ad. Puis tu passes en coordonnées rectangulaires pour avoir les angles x1 ... x2 ... xd.
    Sinon une méthode connue et reconnue, assez efficace : http://en.wikipedia.org/wiki/Von_Mis...r_distribution

  8. #7
    invite4ef352d8

    Re : Densité uniforme sur la boule unité en dimension quelconque

    En tirant au hasard d variables gausienne de même paramètre et qu'on normalise ensuite le vecteur obtenue on obtiens un point aléatoire sur la sphère. (selon une loi uniforme)

    il ne reste plus qu'à tirer un rayon selon la bonne loi (qui est facile à calculer : la probabilité que r soit entre a et b est le volume de la courone de rayon a,b divisé par le volume de la sphère...

  9. #8
    invite579d9775

    Re : Densité uniforme sur la boule unité en dimension quelconque

    Merci Ksilver,

    Bien vu pour l'invariance par rotation de la densité gaussienne.

    Sinon concernant la dernière réponse de Hal, j'ai l'impression que les points tirés de cette façon, vont se concentrer au centre de la boule (pour les petits rayons).

  10. #9
    invite80c21c7b

    Re : Densité uniforme sur la boule unité en dimension quelconque

    réponse tardive mais si ça peut servir

    on peut facilement générer des variables aléatoires selon une distribution gaussienne en dimension d quelconque (http://fr.wikipedia.org/wiki/Loi_normale#Simulation)

    La somme carrée de variables aléatoires gaussiennes suivent une loi du chi2 à d degrés de liberté.
    Ainsi, avec la fonction de répartition F de la loi du chi2, on a :
    = probabilité qu'une de nos variables soit dans la boule de rayon r.

    un exemple d'implémentation sous octave/matlab:

    Code:
    d=3;%dimension
    n=1000;%nombre de points
    r=1;%rayon de la boule
    
    mu=0;%moyenne de la gaussienne
    et=1;%ecart-type de la gaussienne
    
    distrib_0=mu+et*randn(nout,d);%distribution des points initiaux
    distrib_1=zeros(nout,d);%distrib des points finaux (dans la boule)
    
    for i=1:size(distrib_0,1)
    x=distrib_0(i,:);
    nx=norm(x,2);
    z=chi2cdf(nx^2,d);%fonction de repartition de la loi du chi2 avec d ddl; utilisation de gammainc avec matlab
    r1=z^(1/d);%prise en compte de la dimension
    distrib_1(i,:)=x/nx*r1*r;%normalisation
    end
    
    b=1.5*r;%juste pour 'affichage
    plot(distrib_1(:,1),distrib_1(:,2),"+4");%affichage selon les 2 premiers axes=>essayer avec les 3 premiers avec plot3d, meshgrid ...
    axis([-b b -b b],"square");
    figure;
    plot(distrib_0(:,1),distrib_0(:,2),"+");
    axis([-b b -b b],"square");

Discussions similaires

  1. Unité de la densité spectrale des énergies sur MATLAB
    Par pamath dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 27/04/2010, 15h20
  2. Groupe Linéaire d'un espace vectoriel de dimension finie sur un corps quelconque
    Par invite7c6483e1 dans le forum Mathématiques du supérieur
    Réponses: 26
    Dernier message: 08/02/2010, 16h58
  3. Sur Matlab tracer de densité de probabilité de la loi normale générale à n-dimension
    Par invite9f4a2e17 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 02/02/2010, 12h56
  4. Unite Et Dimension
    Par invitef8e3a4d5 dans le forum Technologies
    Réponses: 1
    Dernier message: 21/12/2007, 12h48
  5. placer n points sur une boule unité de dimension voulue
    Par invite9a06995e dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 31/05/2006, 17h42