My research group is trying to use Mathematica to simplify and verify some
complicated expressions that combine various parameters living in
different spaces. Basically, we need to be able to label certain symbols
as commuting and certain others as non-commuting (ie. Grassman numbers).
We then need to perform standard matrx multiplication with this mixture of
commuting and non-commuting variables -- and have Mathematica simplify the
resulting expressions as much as possible. Can anyone help??
Thank you,
Ian
______________________________
| Ian J Swanson |
| Theoretical Physics |
| 253 Lauritsen |
| swa...@theory.caltech.edu |
| office: 626.395.2615 |
| cell: 626.230.1882 |
|____________________________|
The alternative is to develop everything yourself. I have developed my
own non-commutative package for doing computations in mod p cohomology
rings of spaces. In this case when p is odd odd dimensional cohomology
classes anti-commute. This works quite well, but I have not tried to do
anything with matrices.
Andrzej Kozlowski
Toyama International University
JAPAN
http://platon.c.u-tokyo.ac.jp/andrzej/
You will probably want to use Inner, which generalizes Dot, to handle
the matrix products. You will need to write your own myTimes or some
such to handle a mix of scalars and variables. If they satisfy something
along the lines of anticommuting relations, all the better in that one
can easily canonicalize. Some related ideas, with code, have appeared on
MathGroup and are at the below location in the archives.
http://library.wolfram.com/mathgroup/archive/1999/Dec/msg00105.html
with some corrections in:
http://library.wolfram.com/mathgroup/archive/1999/Dec/msg00167.html
(I've been told even the corrected version had a flaw or two).
Here are two other URLs that may be relevant.
http://library.wolfram.com/mathgroup/archive/2000/Nov/msg00299.html
http://library.wolfram.com/mathgroup/archive/1999/Mar/msg00510.html
Several others have also contributed posts regarding various aspects of
implementation of noncommutative algebra, so you may want to search
MathGroup archives. Moreover there are packages on MathSource that may
have functionality of use here, for example NCAlgebra.
Daniel Lichtblau
Wolfram Research
You should be able to do it. Here is a little toy system which labels
numbers and symbols as to whether they are to be used for multiplication or
as powers. 3[t] means 3 is to be used for multiplication and 3[p] means that
3 is to be used as a power. Then we can write our products using
CircleTimes. CircleTimes can be used as an infix operator and has no
attributes. CircleTimes can be entered as esc c * esc, or by \[CircleTimes].
You can make a palette if you are going to use these symbols a lot. We can
then write definitions for CircleTimes which implement the specific
operations depending on the type of quantity, t or p. In this set of
definitions, an expression is evaluated from left to right.
Clear[CircleTimes];
CircleTimes[a_[t], b_[t], c___] := CircleTimes[(a b)[t], c];
CircleTimes[a_[t], b_[p], c___] := CircleTimes[(a^b)[t], c]
CircleTimes[a_[b : (p | t)]] := a[b]
3[t]\[CircleTimes]4[t]
12[t]
3[t]\[CircleTimes]4[p]
81[t]
If there is no definition, you just get the expression back.
4[p]\[CircleTimes]3[t]
4[p]\[CircleTimes]3[t]
3[t]\[CircleTimes]x[t]\[CircleTimes]y[p]
3^y*x^y
3[t]\[CircleTimes](x[t]\[CircleTimes]y[p])
(3*x^y)[t]
This would be one approach. All the definitions on how to handle different
combinations of element types have to be specified. You will probably get
other useful answers.
David Park
dj...@earthlink.net
http://home.earthlink.net/~djmp/
http://www.feyncalc.org/DotSimplify/
http://www.feyncalc.org/DeclareNonCommutative/
You may need to write your own noncummative matrix multiplication
function though. In FeynCalc "." is used as noncommutative
multiplication operator, not as matrix operator.
Rolf Mertig
P.s.: If you need speed, use FORM. It is much faster than
FeynCalc/Mathematica for noncommutative polynomial manipulation.
But it is a bit more cumbersome to use and program.
See
http://www.nikhef.nl/~form/
--
Mertig Consulting
Berlin
http://www.mertig.com