7 votos

Algoritmo para generar una distribución uniforme de puntos en el volumen de una hiperesfera / en la superficie de una hiperesfera.

Estoy buscando dos algoritmos simples / eficientes / genéricos para generar una distribución uniforme de puntos aleatorios:

  • en el volumen de una hiperesfera n-dimensional
  • en la superficie de una hiperesfera n-dimensional

conociendo la dimensión$n$, el centro de la hiperesfera$\vec{x}$ y su radio$r$.

Como hacer eso ?

2voto

jlupolt Puntos 369

De manera abrupta , para seleccionar puntos en la superficie de una hiperesfera es generar$n$ variables aleatorias gaussianas$x_1, x_2, ...x_n$, y luego usar los vectores:

$$ \ frac {1} {\ sqrt {x_1 ^ 2 + x_2 ^ 2 + ... + x_n ^ 2}} \ left (\begin{array}{c} x_1\\ x_2\\ ..\\ x_n\\ \end {array} \ right) $$ que se distribuirá uniformemente en La superficie de la hiperesfera.

1voto

AADTechnical Puntos 344

Para el volumen yo diría que el simlest algoritmo sería un estándar de aceptar-rechazar algoritmo.

(1) draw a uniform random point within an n-dimensional hypercube
(2) repeat (1) if the distance exceeds $r$, otherwise done

si no estoy equivocado, aunque, aceptar tasas de descenso del $n$ aumenta, tal vez hay algo más eficiente

editar usted también puede encontrar algunas ideas aquí: Recoger puntos al azar en el volumen de la esfera con el uniforme de probabilidad

edit2 gracias a @torpe para señalar que mi sugerencia para dibujar distribuidos de manera uniforme los ángulos no es un método válido para obtener puntos en la superficie

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X