Re: Mathematica: subscript simplification under non-communicative multiplication.

*To*: mathgroup at smc.vnet.net*Subject*: [mg116458] Re: Mathematica: subscript simplification under non-communicative multiplication.*From*: Simon <simonjtyler at gmail.com>*Date*: Wed, 16 Feb 2011 04:34:35 -0500 (EST)*References*: <ijash7$nel$1@smc.vnet.net> <ijdobr$fc5$1@smc.vnet.net>

On Feb 15, 10:34 pm, Ray Koopman <koop... at sfu.ca> wrote: > On Feb 14, 1:27 am, Cantormath <cantorm... at gmail.com> wrote: > > > > > > > > > > > Using Subscript[variable, integer] in Mathematica 7.0+, I have > > expressions of the following form: > > > a_-4 ** b_1 ** a_-4 ** b_-4 ** a_1 ** c_-4 ** c_1 ** c_5 > > > I would like to simplify this expression. > > Rules: > > Variables with the same subscript to don't commute, > > variables with different subscripts do commute. > > > I need a way to simplify the expression and combine like terms > > (if possible); the output should be something like: > > > (a_-4)^2 ** b_-4 ** c_-4 ** b_1 ** a_1 ** c_1 ** c_5 > > > The most important thing I need is to order the terms in the > > expression by subscripts while preserving the rules about what > > commutes and what does not. The second thing (I would like) to do > > is to combine like terms once the order is correct. I need to at > > least order expressions like above in the following way: > > > a_-4 ** a_-4 ** b_-4 ** c_-4 ** b_1 ** a_1 ** c_1 ** c_5, > > > that is, commute variables with different subscripts while preserving > > the non-communicative nature of variables with the same subscripts. > > > All Ideas are welcome, thanks. > > I've split this into separate statements to make it easier to follow: > > Subscript @@@ {{a,-4},{b,1},{a,-4},{b,-4},{a,1},{c,-4},{c,1},{c,5}} ; > Split@Sort[ %, #1[[2]] <= #2[[2]]& ] ; > NonCommutativeMultiply @@ ( #[[1]]^Length@# & /@ % ) > > (a_-4)^2 ** b_-4 ** c_-4 ** b_1 ** a_1 ** c_1 ** c_5 I like the use of Split to extract the powers.