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
>
>