Mike and DoRon's Schrödinger wave simulations
Described in Appendix E of Mike's working manuscript.
Links to below: Original simulator, ports
to reversible languages, Java version & numerical
stability.
History: These simulations are based on a technique for
reversible simulation of Schroedinger's equation that was discovered by
Ed Fredkin and Ed Barton in 1975, and subsequently analyzed by Richard
Feynman, who proved that probability mass was conserved by the technique.
Mike Frank independently developed a similar (but irreversible) Schroedinger
equation simulator in C from scratch in 1995, but it had stability problems.
Mike then learned about the Fredkin-Barton reversible technique from Norm
Margolus in personal discussions in 1996. When incorporated into
Mike's program, the technique was found to be absolutely numercially stable
empirically (for any discretization below a critical level of granularity).
In 1997, Mike ported the program to R, a pure reversible language, as a
demonstration. In 2000, DoRon Motter reimplemented the simulator
in Java and extended it to 2-D for his senior design project. Numerical
stability was again empirically preserved. Concurrently, in his highest
honors thesis, DoRon gave an analytical proof of perfect numerical stability
of the technique (in a flat-potential restricted case). In Spring
2002, Tom Holz reimplemented the 1-D simulator in Java again, with the
addition of a nicer user interface.
Work still to be done: Make new 2-D and 3-D versions with
a nicer GUI. Generalize proof of numerical stability to cover more
cases. Empirically & analytically characterize the minimum number
of bits of precision required in wavefunction amplitudes to obtain overall
reasonable behavior.
Mike's original simulator, in C for the X window system.
Here are several versions of the code for the original C simulator.
It currently requires Unix's X window system. You are encouraged
to port it to other languages or platforms, if you have the inclination.
-
makefile
- Pretty useless, you will need to rewrite it for your particular Unix
platform.
-
icon.bitmap
- Include file needed for X windows compilation.
-
sch.c - My
original irreversible, floating-point version. Tends to blow up a
lot.
-
schu.c -
Attempts to more closely approximate unitary evolution, but still blows
up a lot.
-
schd.c -
First version to use the Fredkin-Barton difference equation, but still
not 100% reversible because it uses floating-point arithmetic for the addition.
First well-behaved version.
-
schi.c -
Uses integer addition to update state. Totally reversible!
-
schi2.c
- Another reversible version, slightly simpler.
-
schii.c
- All integer arithmetic, even in the computation of the delta. This
is the version I showed in class and that was ported to the R language.
-
schii2.c
- Uses Feynman's time-symmetric probability.
-
schii2b.c
- Display complex-plane projection of wavefunction.
If you can get it to compile and run, here are parameters in the source
code that you might want to play with:
-
space_width - Width of simulated space, in meters.
-
num_pts - Number of discrete spatial points.
-
sim_dt - Simulated time per step, in seconds.
-
init_vel - Initial velocity of wave packet, in meters/second.
-
initial_mu - Initial mean position of wave packet.
-
initial_sigma - Standard deviation (width) of initial wave packet.
-
which_potential - Specifies which potential energy function to
use.
-
STEPS_PER_SHOT - How many iterations to perform between display
frames.
Mike's implementations in Pure Reversible Programming
Languages
Here is the port to the R language of a version of schii.c having a parabolic
potential well:
-
sch.r - First
R language source code.
-
sch3.r -
Simplfied version.
-
sch.pal
- Earlier version compiled to PISA assembly code.
If you want to actually run the PAL (Pisa Assembly Language) version, you
will need PendVM, the Pendulum Virtual Machine:
-
pendvm/ - Directory
containing PendVM's *.c and *.h source files and Makefile.
DoRon Motter's work - 2-D Simulations and Proof of
Numerical Ntability
Here are DoRon's reports "Reversible Simulation and Visualization of Quantum
Evolution" on his new Java implementations and his new theoretical results.
DoRon proved that (at least in a special case) the Fredkin-Barton technique
is perfectly numerically stable.
-
Senior Project Report (11 pp.) - .doc,
.ps,
.pdf
-
Highest Honors Thesis (32 pp.) - .ps.gz,
.pdf
-
In this ZIP file are a bunch of different Java implementations. The
one called "2D demo 1" is probably the most user-friendly and does a nice
2-D particle wavefunction simulation scattering off of an array of small
obstacles. JavaCode.zip
Presentations
-
Talk under preparation for QCPM workshop (Quantum Computation for Physical
Modeling) -
.ppt, .ps, .pdf
Another Java simulator
Here is another simulator based off of DoRon Motter's 1D java simulator. It was developed by Thomas Holz (bhc@ufl.edu) during the Spring of 2002 for Dr. Franks Physical Limits class. You can configure:
- width of the simulate space.
- number of points in the simulated space.
- time step size.
- basic shape of the background potential.
- Number of steps per display update.
- direction of simulation.
You can download all of the files (schwave3.tar.gz) or browse the source.