Re: How to separate imaginary unit inside an arbitrary function?
- To: mathgroup at smc.vnet.net
- Subject: [mg32452] Re: How to separate imaginary unit inside an arbitrary function?
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Tue, 22 Jan 2002 03:19:12 -0500 (EST)
- References: <a2gi3d$ks$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Kostya, We have Name[5*I*a]//FullForm so lets try Name[Times[Complex[0,5],a]] {Name[5*I*a], Name[0*I*a], Name[I*a]} /. {Name[(Complex[0, n_])*a_] -> Name[n]*Name[I]*Name[a], Name[0] -> yourchoice, Name[a_] -> Name[1]*Name[I]*Name[a]} {Name[I]*Name[5]*Name[a], yourchoice, Name[I]*Name[1]*Name[a]} The order is not what you specified , but that is due to Times being orderless, you might want to use List instead ot Times -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "Kostya" <zlo at science.nus.edu> wrote in message news:a2gi3d$ks$1 at smc.vnet.net... > Dear all > > Have a simple problem: > have a function, say > Name[5*I*a] but want to break it into multiples: > Name[5*I*a]->Name[5]*Name[I]*Name[a] > > The issue is that the standard :> rule does not work properly: > Name[5*I*a]//.{Name_[exa_*exb_]:>(Name[exa]*Name[exb]), > Name_[exa_*exb_*exc_]:>(Name[exa]*Name[exb]*Name[exc])} > > yields just: > Name[5*I]*Name[a] instead of desired "Name[5]*Name[I]*Name[a]" > > > any suggestions? > > with regards > Kostya > >