The Schrödinger equation can be discretized in a manner similar to the Klein-Gordon equation. In
order to minimize the possibility of numbers becoming too large or too
small for the computer, it is convenient to rewrite eq:SchDE
using atomic units, i.e.
. Variables are now on the order
of unity and
the Schrödinger equation becomes
![]()
The propagation algorithm is obtained by substituting eq:Der1E and eq:Der2E into this equation.
![]()
Since the first derivative is approximated by a forward time step and
the second derivative uses a difference centered on the current grid
point, this approximation is often referred to as the Forward Time
Centered Step, FTCS, algorithm. The values of
are, of course,
complex numbers and will require two DVectors to store both real and
imaginary values in the computer's memory. Although the FTCS algorithm
is considered unstable, Pieter Visscher has shown that it can be
stabilized if we alternate the calculation of the real and imaginary
parts of the wavefunction and if the time step is sufficiently
small.[17] Visscher's algorithm is reminiscent of the
``leap frog" method for ordinary differential equations and has been
implemented in WAVE
. It can be written

where the real part of the wavefunction,
, is evaluated at even time steps and the imaginary part of the wavefunction,
, is evaluated
at odd time steps. In addition, the time step,
, must satisfy the
condition
![]()
In order not to increase the number of variables in the program
unnecessarily, we use the same DVectors that were
created for the KG equation; the real part of u is stored in
yVec
and the imaginary part of u is stored in yPrevVec
.