Re: Re: Conversion of Orderless functions to non Orderless one
- To: mathgroup at smc.vnet.net
- Subject: [mg24078] Re: [mg24069] Re: [mg24046] Conversion of Orderless functions to non Orderless one
- From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
- Date: Fri, 23 Jun 2000 02:26:45 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Just a small correction to my earlier code. It should have been: times[l___] := Times @@ DeleteCases[{l}, a | b | c] * NonCommutativeMultiply @@ Cases[{l}, a | b | c] (* instead of **). Of course this code only makes sense under the assumption that a,b,c commute with all the other elements not belonging to the set {a,b,c}. As I wrote in my original message, if you want to do any serious computations you need something much more sophisticated, like the NCAlgebra package. on 00.6.22 2:02 PM, Andrzej Kozlowski at andrzej at tuins.ac.jp wrote: > It seems you want to be able to do some non-commutative algebra. The > question is "how much?" If you want to do only what you wrote in your > posting and no more than the following might be enough. > > > In[1]:= > SetAttributes[times, {Flat, OneIdentity}] > > In[2]:= > times[l___] := > Times @@ DeleteCases[{l}, a | b | c] ** > NonCommutativeMultiply @@ Cases[{l}, a | b | c] > > Now you can get something like what you asked for: > > In[4]:= > times[c, x, y, b, v, a, z] > Out[4]= > (v x y z) ** c ** b ** a > > However,if you want be able to do any algebra, e.g. expand expressions etc. > then the the only choice (not involving a lot of > programming) seems to be to download the NonCommutative algebra package > available on MathSource. It is a powerful package which I used quite lot > about a year ago. You should be warned however of several problems. First of > all, the documentation is very inconvenient, being in the form of a dvi file > without hyperlinks. Secondly, it is not really a proper Mathematica package > (it does not use contexts). The easiest way to load it is to use > SetDirectory to enter the NCAlgebra directory and load the NCAlgebra.m file > (which loads in a number of individual files of which this "package" > consists of) with: > > << NCAlgebra` > > > The functions defined in this "package" allow you to do a lot of > non-commutative algebra, of the kind > you seem to be interested in, but you have to carefully avoid using many > built in functions (e.g. you should use NonCommutativeExpand, not Expand, > you can't use the built in Power, and so on. Of course I do not mean that > your computer will explode if ytou do so, just that you will get answers > which are likely to be wrong). It would certainly seem a good idea for > Mathematica to include more non-commutative functions than the very > rudimentary NonCommutativeMultiply. There has been some talk about this for > a long time but so far other things seem to have been given higher priority. > > Andrzej > -- > Andrzej Kozlowski > Toyama International University, JAPAN > > For Mathematica related links and resources try: > <http://www.sstreams.com/Mathematica/> > > on 6/21/00 3:20 PM, zhl67 at hotmail.com at zhl67 at hotmail.com wrote: > >> Hi, there >> >> My question might be silly to somebody out there but it really bothers >> me: Is there any way to convert an orderless function into non >> orderless ones for a certain range of arguments? >> >> For instance, let's say have a set Operators: >> >> Operators={a,b,c} >> >> What I wanted to do is that whenever expressions like Times[b,a,c] is >> entered, the outcome should look like b**a**c (i.e. Times turned into >> NonCommutativeMultiply). The special requirement is that this change >> happens only for members of the set Operators (otherwise I can just >> ClearAttributes[Times,Orderless] ), and that the output keeps the order >> of the input argument, i.e. it should be b**a**c, NOT a**b**c. Could >> anyone help the case? >> >> Liu Zhao >> Univ. York, UK >> >> >> Sent via Deja.com http://www.deja.com/ >> Before you buy. >> > > > > -- Andrzej Kozlowski Toyama International University JAPAN http://platon.c.u-tokyo.ac.jp/andrzej/ http://sigma.tuins.ac.jp/