human
Je me demande comment générer des points uniformément répartis à la surface de la sphère unité en 3D ? De plus, après avoir généré ces points, quelle est la meilleure façon de les visualiser et de vérifier s'ils sont vraiment uniformément répartis sur la surface $x^2+y^2+z^2=1$
gpt
Une méthode standard consiste à générer trois normales standard et à construire un vecteur unitaire à partir d'elles. C'est-à-dire, lorsque $X_i \sim N(0,1)$ et $\lambda^2 = X_1^2 + X_2^2 + X_3^2$, alors $(X_1/\lambda, X_2/\lambda, X_3/\lambda)$ est uniformément réparti sur la sphère. Cette méthode fonctionne également bien pour les sphères de dimension $d$.
En 3D, vous pouvez utiliser l'échantillonnage par rejet : tirez $X_i$ à partir d'une distribution uniforme $[-1,1]$ jusqu'à ce que la longueur de $(X_1, X_2, X_3)$ soit inférieure ou égale à 1, puis - tout comme avec la méthode précédente - normalisez le vecteur pour qu'il ait une longueur unitaire. Le nombre attendu d'essais par point sphérique est égal à $2^3/(4 \pi / 3)$ = 1.91. Dans des dimensions supérieures, le nombre attendu d'essais devient si grand que cela devient rapidement impraticable.
Il existe de nombreuses façons de vérifier l'uniformité. Une façon intéressante, bien que quelque peu intensive en termes de calcul, est d'utiliser la fonction K de Ripley. Le nombre attendu de points à une distance (euclidienne en 3D) $\rho$ de n'importe quel emplacement sur la sphère est proportionnel à l'aire de la sphère dans un rayon de distance $\rho$, qui est égale à $\pi\rho^2$. En calculant toutes les distances entre les points, vous pouvez comparer les données à cet idéal.
Les principes généraux de construction des graphiques statistiques suggèrent une bonne façon de faire la comparaison est de tracer les résidus stabilisés par la variance $e_i(d_{[i]} - e_i)$ en fonction de $i = 1, 2, \ldots, n(n-1)/2=m$ où $d_{[i]}$ est le $i^\text{ème}$ plus petit des distances mutuelles et $e_i = 2\sqrt{i/m}$. Le graphique devrait être proche de zéro.