After two days of polishing the stuff I am pleased
to announce availability of the module Momenta:
www.numeric-quest.com/haskell/Momenta.html
Those who already downloaded the unofficial version
are adviced to get the new one. It is cleaner and
much faster. I also upgraded QuantumVector as well,
where I added few important bits for new Momenta
to work correctly.
I am quite pleased with myself :-). This stuff works
like a charm so far.
The explanation follows.
Jan
===================================================
While computation of the total angular momentum for
a system of classical particles is a rather
trivial task, this is not so for quantum systems.
To describe quantum system of several interacting
subsystems one must properly define a vector space
spanned by eigenvectors of observables defined for
the entire system as a whole. Its basis, or rather
a set of several mutually orthogonal bases, can be
obtained by linear transformation of a tensor product
of the bases defined for the uncoupled subsystems.
The problem is how to find the coefficients of such
transformation.
There exists a recursive method due to Clebsch and
Gordan, which does just that for two quantum
subsystems describing angular momenta. It can be
generalized onto three or more subsystems. For example,
four subsystems (a, b, c, d) can be first partitioned
into (((a, b), c), d) and then the Clebsch-Gordan
method can be applied three times in the inside-out
fashion. Although conceptually simple, this method
is too daunting for by-hand computations. However
it can be easily handled by computer programs, such
as this Haskell module.
There are two reasons for writing this module. First
of all, the problem of composing angular momenta is
pervasive in Quantum Mechanics; without much of an
exaggeration we say that a significant portion of
any typical textbook on Quantum Mechanics is in one
way or another related to a composition of angular
momenta. From this perspective, this module can be
considered a basic library module for quantum
mechanical applications.
But this module can be also considered a test case
for the QuantumVector module, which is currently
under development. Its abstract computing machinery
needs to be tested on some concrete non-trivial
problems, such as this one.
This module produces ready to go eigenvectors of
combined states and verify their correctness. Due
to all the background work we have done so far on
the abstract Dirac formalism and to the elegancy of
Haskell itself, the algorithm is simple and, most
probably, much clearer than in other implementations.