Re: reverse the order of replacements in a list of rules
- To: mathgroup at smc.vnet.net
- Subject: [mg105961] Re: reverse the order of replacements in a list of rules
- From: "Norbert P." <bertapozar at gmail.com>
- Date: Mon, 28 Dec 2009 04:56:18 -0500 (EST)
- References: <hh73dl$lin$1@smc.vnet.net>
On Dec 26, 11:47 pm, sean <sean_inc... at yahoo.com> wrote:
> Hello group,
>
> This is kinda related with my earlier question about lumping
> parameters. now that I have lumped my parameters, I would like to
> define a new rule that reverses the lumping. I could od it manually,
> but it just seem there should be a better way of doing it..
>
> Suppose you have the following rule for replacing parameters. (in
> lumping, I used up all the letters in alphabet and about half of
> double struck letters. So the actual rule is very long.)
>
> toyrule = {k1 k2 -> a, k3 k4 k5 -> b, k4 k6 k7 -> c, k8 k9/k10 + k11 -
>
> > d }
>
> and so on and on.
>
> What I want to accomplish is now come up with reverse rule that with
> replace the lumped parameter with primitive parameters.
>
> revtoyrule = {a -> k1 k2, b -> k3 k4 k5 , c-> k4 k6 k7, d-> k8 k9/
> k10 + k11}
>
> And so on.
>
> Thanks much in advance.
>
> Sean
Hi Sean,
the best way is to use Reverse with a 2nd argument 2 to reverse
elements at level 2, as in
In[1]:= Reverse[{k1 k2->a,k3 k4 k5->b,k4 k6 k7->c,k8 k9/k10+k11->d},2]
Out[1]= {a->k1 k2,b->k3 k4 k5,c->k4 k6 k7,d->k11+(k8 k9)/k10}
You can also use Part, as in
In[2]:= {k1 k2->a,k3 k4 k5->b,k4 k6 k7->c,k8 k9/k10+k11->d}[[All,
{2,1}]]
Out[2]= {a->k1 k2,b->k3 k4 k5,c->k4 k6 k7,d->k11+(k8 k9)/k10}
Best,
Norbert