MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Vector algebra


Here is a DIY way to do what you want :

In[1]:=unDistribute[ex_Plus /;
MatchQ[ex[[All,1]], _Integer*_] &&
MatchQ[ex[[All,2]], _ + __]] :=
  ex[[All,1]][[2]] ~ex[[1,0]]~ ex[[All,2]];
  unDistribute[ex_Plus /;
MatchQ[ex[[All,2]], _Integer*_] &&
MatchQ[ex[[All,1]], _ + __]] :=
  ex[[All,1]] ~ex[[1,0]]~ ex[[All,2]][[2]] ;

In[3]:=x.a+x.b+x.c//unDistribute

Out[3]=x.(a+b+c)

In[4]:=%//Distribute

Out[4]=x.a+x.b+x.c

In[5]:=a.x+b.x+c.x//unDistribute

Out[5]=(a+b+c).x

In[6]:=%//Distribute

Out[6]=a.x+b.x+c.x


hth (and hoping someone will post something simpler!)


V.Astanoff


  • Prev by Date: Finding k-clique
  • Next by Date: Return, behaviour of
  • Previous by thread: Vector algebra
  • Next by thread: Re: Vector algebra