Re: Replace expressions
- To: mathgroup at smc.vnet.net
- Subject: [mg7644] Re: [mg7632] Replace expressions
- From: jpk at max.mpae.gwdg.de
- Date: Tue, 24 Jun 1997 03:36:07 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
> From hans.steffani at e-technik.tu-chemnitz.de Fri Jun 20 23:49:26 1997 > Date: Fri, 20 Jun 1997 16:16:05 -0400 (EDT) > From: hans.steffani at e-technik.tu-chemnitz.de (Hans Steffani) To: mathgroup at smc.vnet.net > To: mathgroup at smc.vnet.net > Subject: [mg7644] [mg7632] Replace expressions > > I want to replace all expressions > Dot[a, xx] > Dot[xx, a] > for certain as by > Times[a,xx]. > > How can this be done? > > Hans Friedrich Steffani > -- > Hans Friedrich Steffani > Institut fuer Elektrische Maschinen und Antriebe, TU Chemnitz-Zwickau > mailto:hans.steffani at e-technik.tu-chemnitz.de > http://www.tu-chemnitz.de/~hfst/ > Hi Hans, there are several ways: Make an expression: In[2]:= expr=2*Dot[a,xx]+4*Dot[xx,a]-Dot[r,rp]; First version : In[3]:= expr /. Dot[u_,v_] :> Times[u,v] Out[3]= -r rp+6 a xx Second version: In[4]:= expr /. Dot -> Times Out[4]= -r rp+6 a xx Third version: In[5]:= expr //. { Dot[a,xx]:> Times[a,xx], Dot[u_,v_] /; !OrderedQ[{u,v}] :> Dot[v,u]} Out[5]= 6 a xx-r.rp You didn't say if You want replace *only* Dot[a,xx] and Dot[xx,a] or You want replace all Dot[a_,xx_]. I think You had an other problem You want that Dot[a,xx] is simplifyed with Dot[xx,a] and You will manage this by replacing Dot with Times because Times has the attribute Orderless and Dot not. You can do the last task simply by In[6]:= SetAttributes[Dot,Orderless] In[7]:= Simplify[expr] Out[7]= 6 a.xx-r.rp The dot product of two vectors is symmetric (it creates the norm in a Hilbert space) and it is save to give the Dot[] this attribute because Dot[a,b]===Dot[b,a]. Hope that helps Jens