Re: Vector algebra

*To*: mathgroup at smc.vnet.net*Subject*: [mg65517] Re: Vector algebra*From*: dh <dh at metrohm.ch>*Date*: Thu, 6 Apr 2006 06:51:59 -0400 (EDT)*References*: <e0r0nm$pn$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Hi, You could make a rule for your specific case: x.a+x.b /. x_ . x1_ + x_ . x2_ -> (x1 + x2).x note that there must be a space between _ and . A general rule must account for all possible cases, like: ru = {x1_ . x_ + x2_ . x_ -> (x1 + x2).x, x_ . x1_ + x2_ . x_ -> (x1 + x2).x, x_ . x1_ + x_ . x2_ -> (x1 + x2).x, x1_ .x_ + x_ . x2_ -> (x1 + x2).x } You could also, instead of using Dot, define an operator with the desired property and the attribut "Orderless". This takes care of the posible permutations. At the end you would replace this operator by "Dot". E.g.: myDot/: myDot[x1_,x_]+myDot[x2_,x_]:=myDot[x1+x2,x] SetAttributes[myDot,Orderless] Daniel Van Gogh wrote: > Hi, > I'm trying to factorise this vectorial expression x.a+x.b to give x.(a+b) using mathematica. I expected the "collect or factor" command to work but it doesn't.Could you please suggest a possible way of carrying out this factorisation. > > many thanks >