We guessed (with some optimisation) a wavefunction for Benzene that was somewhat realistic. Diffusion Monte Carlo allows you
to improve upon your energy estimate using the following observation.

The way to get a population of points with density $f(\mathbf{x})$ comes from the observation that if we assume that the energy of the wavefunction $\psi_{real}$ is minimal, and we use the normal Schroedinger equation to define the energy, we can derive that: $$\frac{\partial f}{\partial t} = \frac{1}{2}\nabla_i f - \nabla . \frac{\nabla \psi_{guess}}{\psi_{guess}} f + (E(\mathbf{x}) - E_{target})f,$$ here $t$ is a variable that as it increases, $f$ tends to the correct value. When interpreted as a diffusion equation, $t$ is time. This equation is simply a diffusion equation with some forces: It's exactly the same equation you would use to track suspended bacteria particles in moving air. The particles need to be able to divide, and die off too, to get the equation to match, but that isn't hard to simulate. So all we do is make an educated initial guessed wavefunction, and then run such a simulation, and that gets us a million or more particles whose distribution in space is equal to $f(\mathbf{x})$. And if we average the local energy over the positions of all these particles, we'll get the true energy. Or not. Unfortunately, there is a requirement that the positions where the guessed wavefunction is zero, are correct, and that can lead to inaccuracy. Another problem is that you need to run this for a long time before you get a completely smooth distribution of $f$. The smoothness itself doesn't matter, but it isn't good to have big regions of space with few or no particles, and that leads to random noise in the energy estimate.

Let's define a new function, $f$ like this: $$f(\mathbf{x}) = \psi_{true} \psi_{guessed}.$$ This new function $f$, has two important things about it:

- The weighted average local energy, weighted by f, taking the local energy to be the energy of the guessed wavefunction, is actually the true energy. (Subject to the guessed wavefunction having correctly placed nodes).
- We can actually generate a series of points with a population density proportional to $f(\mathbf{x})$, even though we don't know what $\psi_{real}$ is.

The way to get a population of points with density $f(\mathbf{x})$ comes from the observation that if we assume that the energy of the wavefunction $\psi_{real}$ is minimal, and we use the normal Schroedinger equation to define the energy, we can derive that: $$\frac{\partial f}{\partial t} = \frac{1}{2}\nabla_i f - \nabla . \frac{\nabla \psi_{guess}}{\psi_{guess}} f + (E(\mathbf{x}) - E_{target})f,$$ here $t$ is a variable that as it increases, $f$ tends to the correct value. When interpreted as a diffusion equation, $t$ is time. This equation is simply a diffusion equation with some forces: It's exactly the same equation you would use to track suspended bacteria particles in moving air. The particles need to be able to divide, and die off too, to get the equation to match, but that isn't hard to simulate. So all we do is make an educated initial guessed wavefunction, and then run such a simulation, and that gets us a million or more particles whose distribution in space is equal to $f(\mathbf{x})$. And if we average the local energy over the positions of all these particles, we'll get the true energy. Or not. Unfortunately, there is a requirement that the positions where the guessed wavefunction is zero, are correct, and that can lead to inaccuracy. Another problem is that you need to run this for a long time before you get a completely smooth distribution of $f$. The smoothness itself doesn't matter, but it isn't good to have big regions of space with few or no particles, and that leads to random noise in the energy estimate.

## Three Crystal StructuresA ThreeJS model of three crystal structures, by Dr. Jennifer Martay. |

## Quantum MechanicsA no-nonsense description of quantum mechanics with no maths or philosophy. The concepts are explained with animations, which are mainly computer simulations of electrons. |

## How to simulate fractal ice crystal growth in PythonThis presents python code to draw snowflakes, simulating a diffusion process with Fourier transforms. |

© Hugo2015. Session @sessionNumber