Solving the Schrödinger Equation with Numerov's Algorithm
The Schrödinger equation describes the energy and time-evolution of a particle or system of particles, and is one of the fundamental building blocks of modern physics. In it’s general form, the (time-independent) Schrödinger equation for a one-dimensional harmonic oscillator reads thus:1
There are relatively few situations in which the Schrödinger equation can be solved analytically, and numerical methods and approximations are one way around that analytical limitation. To demonstrate how this is possible and how a numerical solution works, what better way than to solve a system which can be solved analytically and comparing the results.
In solving the Schrödinger equation, we will start with one of the simplest interesting quantum mechanical systems, the quantum mechanical harmonic oscillator.2 This is described in
We will make use of the Numerov algorithm which is particularly suited to solving second order differential equations of the form
As you can see, it provides
Now the Schrödinger equation is in the correct form, we can simply plug it into the Numerov algorithm and see what comes out.
Finding the Eigenvalues Numerically
To determine the eigenvalues, the program scans a range of energies, denoted by the Greek letter
Given the substitution above, we should expect the eigenvalues to be
You can find the code for this in JavaScript or a really bare-bones version in Python.
-
where
is the mass of the particle, is the position, is the Plank constant, is the potential the particle is in, is the particle’s energy, and is the wavefunction. ↩︎ -
A harmonic oscillator is simply an object which is moving in a constant field of some kind. For example a gravitational or electric field. A good example is a pendulum, or a ball bouncing on a piece of elastic. Harmonic oscillators are vitally important in physics and physical chemistry, because they can be used to model the complex vibrations and oscillations of molecules, atoms, and sub-atomic particles to a reasonable degree of accuracy, and are really rather simple to solve. ↩︎
-
This is because wavefunctions have to be normalizable, and so a wavefunction which goes to infinity as x increases is not a physically relevant one. ↩︎
-
Don’t confuse this
with the index from the definition of the Numerov algorithm! ↩︎