On Sun, 28 Feb 2010, Raoul wrote:
< Hi all,
<
<
< I tried to simplify ladder operators as they appear
< in quantuum mechanics. For a simple example assume
< R and L be the operators for which we know:
<
< L|n> = sqrt(n)*|n-1>
<
< and
<
< R|n> = sqrt(n+1)*|n+1>
<
< and [R,L] = 1
<
<
< I do not know much about the simplifier of maxima
< and this is my first real world try which custom rules.
< But I read saw threads about geometric algebra simplifications
< on this list. So I tried to do more or less the same thing here.
<
<
< First I would like to simplify the following expression: (R+L).(R+L)
<
< expand((R+L).(R+L));
<
< yields a big result which is correct but can be simplified
< which the help of the commutator relation mentioned above.
<
< I tried to use "tellsimpafter" like this:
<
< tellsimpafter(R.L, 1-L.R);
<
< This works nice for (R+L).(R+L), lets call the
< fully simplified result E. No problems so far.
<
<
< Now I would like to simplify (R+L).(R+L).(R+L).(R+L),
< so I try:
<
< expand((R+L).(R+L).(R+L).(R+L));
<
< but there remain terms which could be simplified away.
< What does prohibit the full simplification?
< I can get a fully simplified result f.e. with expand(E.E).
<
<
<
< Finally I would like to be able to calculate for example:
<
< R.R.L.L |n> = ...?
<
< Is there an (easy) way to use the definitions of R and L
< as simplifing rules? Something like
<
< tellsimpafter(L.ket(n), sqrt(n)*ket(n-1));
<
< And how should I tell maxima about the kets?
See this thread:
http://www.math.utexas.edu/pipermail/maxima/2010/020383.html
which discusses your first problem.
For your second question,
(%i2)
declare(h,integer);
matchdeclare(n,lambda([t],featurep(t,integer)));
tellsimp(L.ket(n), sqrt(n)*ket(n-1));
L.ket(h);
L.ket(2);
(%o2) done
(%i3)
(%o3) done
(%i4)
(%o4) [?\.rule2,?simpnct]
(%i5)
(%o5) sqrt(h)*ket(h-1)
(%i6)
(%o6) sqrt(2)*ket(1)
Leo
--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.