[Math] Maxwell-Boltzmann velocity PDF to CDF

normal distributionprobabilityprobability distributions

I need to draw from a Maxwell-Boltzmann velocity distribution to initialise a molecular dynamics simulation. I have the PDF but I'm having difficulty finding the correct CDF so that I can make random draws from it.

The PDF I am using using is:

$$f(v)=\sqrt \frac{m}{2\pi kT} \times exp \left( \frac{-mv^2}{2kT}\right) $$

I am told that to find the CDF from the PDF we perform:

$$CDF(x)= \int_{-\infty}^x PDF(x) dx $$

After integrating $ f(v) $ I get:

$$ CDF(v)= \sqrt \frac{m}{2\pi kT} \times \left( \frac{\sqrt\pi\times erf \left( \frac{mv}{2\pi kT} \right) }{2\times \left( \frac{m}{2kT} \right)} \right) $$

$$CDF(v)= _{-\infty} ^{x} \left[ {\sqrt \frac{m}{2\pi kT} \times \left( \frac{\sqrt\pi\times erf \left( \frac{mv}{2\pi kT} \right) }{2\times \left( \frac{m}{2kT} \right)} \right)} \right] $$

1)After I reach this point I am unable to proceed as I do not know how to evaluate something between $x$ and ${-\infty}$.

2)I am also concerned that I have not done the integration correctly.

3)I want to implement the CDF in C++ in the end so I can draw from it. Does anyone know if there will be a problem with doing this because of the erf, or will I be alright with this GSL implimentation ?

I am not a mathematician so please be gentle with your explanations 🙂

Thanks for your time

EDIT:

@bryansis2010 says that I can evaluate in the range $x$ to $0$ instead of $-\infty$.

Would this then make the CDF:

$$ CDF(v)= \sqrt \frac{m}{2\pi kT} \times \left( \frac{\sqrt\pi\times erf \left( \frac{mv}{2\pi kT} \right) }{2\times \left( \frac{m}{2kT} \right)} \right) $$

as $erf(0)=0$

Best Answer

The PDF you gave is for a Gaussian distribution. Your programming language might have a subroutine for generating Gaussian-distributed random variates; if not, inverting the CDF is not the easiest approach. The Box-Muller transform is a good place to start. You give it two uniform random numbers, and it gives you two Gaussian random numbers.