Hydrogen atom quantum monte carlo.
This is the first example in the
QMC series.
I wanted to try quantum monte carlo to understand it better, so I thought I would work
through from simple atoms to more complicated chemicals.
I don't expect that there will be much interest in this, so I'm not going to write it up extensively.
Background
Quantum mechanics allows us to calculate energy levels of atoms and molecules accurately -
which is one of the strongest pieces of experimental support for the theory.
For hydrogen, we have an analytic expression for the ground state energy which gives -0.5 Hartrees as the correct answer, but for the purposes of trying QMC, let's do the following:
- We've got a wavefunction that takes several parameters (in this example 1).
- We try to minimise (psi|H|psi)/(psi|psi) with respect to the parameters. Note that the denominator is needed because psi is not normalised.
In more detail, here's what happens in the code:
- We start off with guessed parameters.
- We pick a random position vector, "x".
- We evaluate (x|H|psi) and (x|psi). H contains 2nd derivatives. These are calculated numerically.
- We also evaluate the derivatives of the two above expressions with respect to the parameters.
- We keep repeating the last three steps.
- Eventually we have a good estimate for (x|H|psi) and (x|psi) and their derivatives with respect to the parameters.
- We can calculate the expectation of (psi|H|psi)/(psi|psi), which is our energy estimate, and also the gradient of that with respect to the parameters
- We can update the parameters, doing gradient descent to try to minimise the energy.
Here's the trial wavefunction:
Here's the history of energy estimates:
Final energy (correct energy = -0.5, correct parameter = 1):
Back to
QMC.
Other Articles:
A no-nonsense description of quantum mechanics with no maths or philosophy. The concepts are explained with
animations, which are mainly computer simulations of electrons.
|
|
The algorithms that SpaceX (probably) use to control their first stage boosters. Several animations.
|
|
|
An attempt to simulate the normal running, and then accident of the Chernobyl nuclear reactor.
|