Velocidad de Maxwell-Boltzmann PDF a CDF [cerrado]

Pregunté en Math.SE y me recomendaron probar aquí.

Necesito dibujar a partir de una distribución de velocidad de Maxwell-Boltzmann para inicializar una simulación de dinámica molecular. Tengo el PDF , pero tengo dificultades para encontrar el CDF correcto para poder hacer sorteos aleatorios a partir de él.

El PDF que estoy usando es:

F ( v ) = metro 2 π k T × mi X pag ( metro v 2 2 k T )

Me dicen que para encontrar el CDF del PDF realizamos:

C D F ( X ) = X PAG D F ( X ) d X

Después de integrar F ( v ) Yo obtengo:

C D F ( v ) = metro 2 π k T × ( π × mi r F ( metro v 2 π k T ) 2 × ( metro 2 k T ) )

C D F ( v ) = X [ metro 2 π k T × ( π × mi r F ( metro v 2 π k T ) 2 × ( metro 2 k T ) ) ]

  1. Después de llegar a este punto, no puedo continuar porque no sé cómo evaluar algo entre X y .

  2. También me preocupa que no haya hecho la integración correctamente.

  3. Quiero implementar el CDF en C++ al final para poder dibujar a partir de él. ¿Alguien sabe si habrá algún problema al hacer esto debido al erf, o estaré bien con esta implementación de GSL ?

Gracias por tu tiempo.

@bryansis2010 en Math.SE dice que puedo evaluar en el rango X a 0 en lugar de ya que no bajamos de 0 Kelvin.

¿Haría esto entonces la CDF:

C D F ( v ) = metro 2 π k T × ( π × mi r F ( metro v 2 π k T ) 2 × ( metro 2 k T ) )

como mi r F ( 0 ) = 0

¿Es esto correcto?

Hola, RRs_Ghost: sospecho que quien dijo que trajera esta pregunta aquí estaba equivocado. No creo que sea un tema para nosotros. Aunque la función que está integrando proviene de la física, todavía está preguntando cómo hacer una integración, que en sí misma es un problema matemático puro. No cerraré esto de inmediato para que otras personas tengan la oportunidad de objetar si lo desean, pero es posible que lo enviemos de regreso a Matemáticas . (Además, para referencia futura: no debe publicar una pregunta en varios sitios de SE. Solicite que se migre si está fuera de tema en el primer lugar donde la colocó).

Respuestas (1)

La solución es darse cuenta de que esa función es simplemente una Gaussiana. De hecho, cada componente del vector de velocidad tiene una distribución normal con media = 0 y st-dev k T / metro .

Todo lo que queda por hacer en ese punto es obtener la CDF gaussiana (bien conocida) y tomar muestras de ella, asegurándonos de conectar nuestra masa y temperatura.

C D F ( X ) = 1 2 × [ 1 + mi r F ( X m 2 σ 2 ) ]

GSL implementa gsl_cdf_ugaussian_P (doble x) aquí