Re: List Manipulation
- To: mathgroup at smc.vnet.net
- Subject: [mg72430] Re: List Manipulation
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 27 Dec 2006 06:19:21 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <emo866$g29$1@smc.vnet.net>
Stratocaster wrote:
> I'm not sure if the following is possible or whether it exists somewhere
> between the realms of fantasy and science fiction. I have been unable to do
> it.
>
> Given a list, set, vector (whatever you want to call it) consisting of
> functions of the same variable, i.e.
>
> list = {a1+b1*k, a2+b2*k, a3+b3*k...}
>
> Assuming they are all linear (of the form a+b*k) is there away to isolate
> the a_i and b_i values? Essentially I would like to get a list "A"
> consisting of all the intercept values, and a list "B" consisting of all the
> slope values.
>
> Is this possible? What kind of operations do I need to use to accomplish
> this (if indeed it is possible)?
>
> Thanks for any insights.
>
Among many other possibilities, you could try one of the following:
In[1]:=
list = {a1 + b1*k, a2 + b2*k, a3 + b3*k}
Out[1]=
{a1 + b1*k, a2 + b2*k, a3 + b3*k}
In[2]:=
(Select[#1, FreeQ[#1, k] & ] & ) /@ list
Out[2]=
{a1, a2, a3}
In[3]:=
(Select[#1, !FreeQ[#1, k] & ] & ) /@ list/k
Out[3]=
{b1, b2, b3}
In[4]:=
list /. (p_) + (q_)*k -> p
Out[4]=
{a1, a2, a3}
In[5]:=
list /. (p_) + (q_)*k -> q
Out[5]=
{b1, b2, b3}
Happy holidays,
Jean-Marc