Méthode de Box-Muller

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Représentation graphique de la transformation : les cercles de départ, répartis uniformément autour de l'origine, deviennent un nouvel ensemble de cercles centrés, dont la répartition est proche de l'origine puis s'étiole rapidement. Les plus grands cercles de départ correspondent aux plus petits cercles d'arrivée, et vice-versa.

La méthode de Box-Muller (George Edward Pelham Box et Mervin Edgar Muller, 1958) consiste à générer des paires de nombres aléatoires à distribution normale centrée réduite, à partir d'une source de nombres aléatoires de loi uniforme.

La transformation prend communément deux formes.

  • La forme simple transforme des coordonnées cartésiennes uniformément distribuées dans le cercle unité en des coordonnées normalement distribuées.
  • La forme polaire transforme des coordonnées polaires uniformément distribuées en des coordonnées cartésiennes normalement distribuées.

On peut également utiliser la méthode de la transformée inverse pour générer des nombres normalement distribués ; la méthode de Box-Muller a été mise au point pour être algorithmiquement plus efficace[1]. On peut également envisager la Méthode Ziggourat qui est aussi très efficace.


Écritures[modifier | modifier le code]

Forme cartésienne[modifier | modifier le code]

Soient x et y choisis indépendamment et uniformément dans [−1,1], et s = x2 + y2. Si s ≥ 1 ou s = 0, rejetons-le et choisissons à nouveau un couple (x, y), jusqu'à ce que s appartienne à ]0,1[. Pour ces points "filtrés", calculons ensuite:

z_0 = x \cdot \sqrt{\frac{-2 \ln s}{s}}

et

z_1 = y \cdot \sqrt{\frac{-2 \ln s}{s}}.

Forme polaire[modifier | modifier le code]

Soient U_1 et U_2 deux variables aléatoires indépendantes uniformément distribuées dans ]0,1].

Soient

Z_0 = R \cos(\Theta) =\sqrt{-2 \ln U_1} \cos(2 \pi U_2)\,

et

Z_1 = R \sin(\Theta) = \sqrt{-2 \ln U_1} \sin(2 \pi U_2).\,

Alors Z0 et Z1 sont des variables aléatoires indépendantes suivant une loi normale de variance 1.

Explications[modifier | modifier le code]

La justification de cette transformation vient de la transformation de la mesure de probabilités de la loi normale en coordonnées polaires[2] :

\frac 1{\sqrt{2 \pi}^2} e^{- \frac{x^2 + y^2}2} \,\mathrm{d}x\,\mathrm{d}y = \frac 1{2 \pi} e^{- \frac {r^2}2} r \,\mathrm{d}r \,\mathrm{d}\theta = \left( \frac 12  e^{- \frac s2} \mathrm{d}s\right) \left( \frac 1{2 \pi} \mathrm{d}\theta \right)

en posant s = r2.

On voit ainsi que les variables S et Θ sont indépendantes (la densité du couple est le produit des densités) et suivent deux lois distinctes :

La variable S est alors générée par la méthode de la transformée inverse. Il suffit ensuite d'écrire les égalités x = r \cos \theta et y = r \sin \theta.

Comparaison entre les deux formes[modifier | modifier le code]

La forme cartésienne est une méthode d'échantillonnage à rejet, qui n'utilise qu'une partie des nombres générés par la source aléatoire, mais elle est en pratique plus rapide que la forme polaire car elle est plus simple à calculer:

  • la forme cartésienne n'utilise pas de fonctions trigonométriques, coûteuses en temps de calcul
  • la génération de nombres aléatoires est plutôt rapide, il n'est donc pas gênant d'en gaspiller une partie. En moyenne la part de points rejetés est (1-π/4) ≈ 21.46%. On génère donc 4/π ≈ 1.2732 nombres aléatoires uniformes pour obtenir chaque nombre aléatoire normal.

Notes et références[modifier | modifier le code]

  1. Kloeden and Platen, Numerical Solutions of Stochastic Differential Equations, p. 11-12
  2. Sheldon Ross, A First Course in Probability, (2002), p.279-81