Maxwell Velocity Distribution¶
This notebook can be used to study the Maxwell velocity and speed distributions (MVD). This allows a way to simulate the random velocities of a gas of $N$ molecules and then compare this to the theoretical observations.
Recall the MVD tells us the number of molecules of mass $m$ at temperature $T$ with a velocity $\mathbf{v}\to \mathbf{v}+d\mathbf{v}$ is given by
$$ f(v) d^3 \mathbf{r} d^3 \mathbf{v} = n \left[\frac{m}{2\pi k_B T}\right]^{3/2} \exp\left[\frac{-mv^2}{2k_BT}\right] d^3\mathbf{r} d^3\mathbf{v}. $$In this worksheet, you can decide how many molecules $N$ you have in the system. As the molecules move randomly, the simulation starts with some initial configuration, where they can have
random initial velocities (setting “starter” to “hot” in the code),
zero initial velocity (setting “starter” to “cold” in the code), or
initial speeds that are the maximum allowed (setting “starter” to “maxval” in the code).
Then the code will randomly update the velocities $M$ times (which you can change) so that after enough iterations, the distributions of the speeds of the molecules should correspond to the MVD. Scroll down to the Run Simulations section and change the numbers after the equal signs in
runsimulations(N=100,M=100)
if you wish. Upon finishing, two histograms will appear, one with the initial speeds of the system and one with the final speeds, both compared with the MVD. Additionally the computed average speed will appear which you can compare to the theoretical value.
You can click “Run all” in the Cell menu above (if you are using CoLab, this is in the Runtime menu). After you have run the notebook once, you can then add lines below and hit “shift-enter” to run other experiments.
Things to try out:
Run the “experiments” increasing $N$ and/or $M$ to see how this changes the approach to what you’d expect from the MVD.
Study the code in the Functions to use section to see how the simulation runs. Specifically, explore what the “mlink” variable is, and how that can improve your simulation.
Functions¶
In this section, we have imported libraries that we need in order to simulate these outcomes. If you’re only interested in playing around with the results, just “run” the entire notebook and move to the next section. If you’re interested in coding and wish to modify this, have at it!