Estoy leyendo el siguiente artículo: http://www.kof.zcu.cz/st/dis/schwarzmeier/galaxy_models.html y actualmente estoy en la sección 5.6 (posiciones de cuerpos en una galaxia).
Estoy tratando de rehacer las simulaciones yo mismo en Python, pero tengo preguntas sobre el muestreo de la distribución.
Dada una función de distribución (distribución de Hernquist):
el artículo establece que para simular la distribución, uno tiene que calcular la masa dentro de un círculo de radio como sigue:
que es la función de distribución de masa acumulada.
El artículo establece que esta fórmula representa el PDF. Sin embargo, mirando la forma, me parece que es un CDF. Al acercarse al infinito, la función se acerca a 1.0, lo que para mí es una clara indicación de un CDF.
Para muestrear esta distribución el artículo cita el método de Von Neumann donde uno tiene que generar un y un valor, y escalarlos en consecuencia, y comprobar si caen o no por debajo del grafico. Si lo hacen, se aceptan; de lo contrario, se rechazan.
¿Estoy completamente equivocado al pensar que esto está mal? Si hago esto, termino con la mayoría de las estrellas terminando en los radios más altos.
Tengo la sensación de que estoy probando un CDF aquí en lugar de un PDF. Para obtener resultados precisos (por ejemplo, tener la mayoría de las estrellas en el centro) significa que tengo que realizar el método de Von Neumann con el función.
No puedo contactar al autor del artículo, por eso pregunto aquí.
El artículo se ve realmente mal. De hecho, hay dos errores.
Primero, tiene razón en que el método de aceptación-rechazo debe aplicarse a , y no a . Para entender cómo funciona esta idea, supongamos que queremos generar una función de distribución normalizada unidimensional . Ahora, supongamos que podemos reescribir esta función de distribución en términos de una variable , tal que toma la forma de una distribución uniforme. Eso es,
La primera forma es el método de aceptación-rechazo: trace la curva y generar uniformemente un par de números en el intervalo , dónde y son los límites superiores de y . Si la coordenada se encuentra debajo de la curva , acéptalo; de lo contrario, rechácelo. Si se acepta la coordenada, es el punto generado.
Hay grandes inconvenientes en este método: y puede ser infinito, por lo que uno necesitaría un corte. Y si tiene un pico agudo, uno termina rechazando muchos puntos.
Un método mucho más eficiente es generar uniformemente , y calcular el correspondiente invirtiendo :
Si el cálculo de está demasiado involucrado numéricamente, se puede usar una combinación de ambos métodos: introducir otra función (más simple) que yace en todas partes arriba . Aplicar el método de inversión a , generando un punto . Luego genera uniformemente un valor en el intervalo . Si , aceptar ; de lo contrario, rechácelo.
Ahora, considere la distribución de Hernquist. Como tiene una cúspide en el origen y la masa acumulada es una funcion sencilla
Hay una consecuencia importante: es probable que haya más partículas en radios grandes que alrededor del centro, aunque es mucho mayor en radios pequeños. La razón es que las partículas entre dos radios y ocupan una concha con volumen
la FCD, , está relacionado con el PDF, , a través de la relación:
En el caso de funciones invertibles (por ejemplo, con constante de normalización ), puedes resolver esto como
En el caso de que sus funciones no sean invertibles (a menudo el caso que involucra distribuciones radiales), sugeriría usar un método iterativo de Newton-Raphson para encontrar raíces para este caso. Esto se puede hacer fácilmente ya que sabes (su FCD) (tu PDF):
Aparte, no puedo enfatizar lo suficiente lo terrible que es la sugerencia del método de aceptación-rechazo. NO USE ESTE MÉTODO . Literalmente desperdicia tiempo de computación, algo que debería considerarse valioso, independientemente de la prevalencia de las computadoras. No escuches a nadie que diga que tienes que usar este método, están total y absolutamente equivocados.
El método de Newton que sugiero anteriormente no rechaza un solo número aleatorio, se ajustará al PDF con precisión y es altamente eficiente.
avanwieringen
kyle kanos