Thanks in advance,
Rig
r...@sam.cchem.berkeley.edu
And now for more details:
The Specific Problem:
I need to create a package that can do the following within
Mathematica:
a) Construct commutators of polynomials in X and P, where X and P
are position and momentum vectors in Quantum Mechanics, and output
the resulting polynomial.
b) Given a polynomial in X and P, reduce it to one which has only
terms of the form X^i P^j where i and j are integers.
c) Evaluate the matrix elements of the commutators obtained in (a) and
reduced by (b), in the Harmonic Oscillator basis.
d) Once (a) and (b) are done, I think that it would be a simple extension
to define the algebra for creation and destruction operators. This
would make (c) easier to implement.
Examples:
a) Assume that X and P are one dimensional:
Poly(X,P) = X^2P^2 + X P X
b) converting Poly to canonical form, we get:
Poly(X,P) = X^2P^2 + X^2P - I X
where hbar=1, and I is square root of -1
c) The n,n+3 matrix element of Poly(X,P)
<n| Poly(X,P) |n+3> = {(n+1)(n+2)(n+3)/2}^(-1/2) /2
The following package should help.
See after the mathsource@wri for more comments.
Mark Stankus
From ms-d...@wri.com Fri Apr 16 14:31:15 1993
Date: Fri, 16 Apr 93 16:31:07 CDT
From: MathSource <ms-d...@wri.com>
To: msta...@oba.UCSD.EDU (Mark Stankus)
Subject: Session Log
Content-Length: 1995
X-Lines: 51
Status: RO
This is an automatic response from the MathSource server at
maths...@wri.com. Please report all problems and suggestions
to ms-a...@wri.com.
A complete listing of all files in MathSource can be obtained by
issuing the following commands
MaxFull 1000
Find *
Response to request of Fri, 16 Apr 93 14:29:53 PDT
>> find 0204-400
1 items matched your request.
0204-400: Noncommutative Algebra Package and SYStems (September 1992)
Authors: J. William Helton and Robert L. Miller
Although processing of commutative expressions is built into
Mathematica, relatively no support is given to noncommutative
expression manipulation. These packages have been developed to
fill this void. Commands for non-commuting algebra which are
analogous to Mathematica commands are implemented, as well as
others. The development of these packages has been directed by
needs which arose from research in Control Theory Systems Theory
and in Operator Theory. Also attached to the NCAlgebra package
are files SYS* for doing calculations with engineering systems
which are common in Hinfinity control and in differential games.
0011: NCDOC.txt NCAlgebra documentation (September 1992; 92
kilobytes)
0022: NCDOCApp.txt Appendices for NCDOC.txt (September 1992; 28
kilobytes)
0033: SYSDOC.txt Documentation for SYStems package (September
1992; 57 kilobytes)
0044: NCAlg.tar Unix tar file of NCAlgebra package (September
1992; 639 kilobytes)
0055: NCAlg.zip DOS/Windows zip file of NCAlgebra package
(September 1992; 184 kilobytes)
0066: NCAlg.sit.hqx Macintosh binhexed stuffit archive file of
NCAlgebra package (September 1992; 350 kilobytes)
All requests were completed successfully.
Thank you for using MathSource.
> a) Construct commutators of polynomials in X and P, where X and P
> are position and momentum vectors in Quantum Mechanics, and output
> the resulting polynomial.
Comutator[x_,p_] := ExpandNonCommutativeMultiply[x**p - p**x];
>
> b) Given a polynomial in X and P, reduce it to one which has only
> terms of the form X^i P^j where i and j are integers.
I am not sure what you are asking. The following moves the x's and
p's together.
ans = Transform[poly,x**p->p**x];
ans = NCMono[ans];
Thanks for the help.
What I meant, is for example: (That is, create a new polynomial which is
equal to the original one after applying commutation.)
given: x^2 ** p^2 ** x
you get: -2 I x**x**p + x**x**x**p**p
This I can do fairly easily. However, I'd also like it to then translate
it to: -2 I x^2 ** p + x^3 ** p^2
The problem is that if you try to define rules that both force any instance
of p**x to become -I + x**p, and also expand all instances of x^n, say to
x^(n-1)**x, and similarly for p, then you run into infinite loops if you also
want. One could get around this by greating a commutator rule p^m x^n. But
I only know how to do this using recursive rules, and this would get me back
to the original problem.
it to contract back.
I hope this clears up my problem.