Hi,

On 16 July 2011 06:05, Chris Smith <[email protected]> wrote:

>
>
> On Sat, Jul 16, 2011 at 8:58 AM, Matthew Rocklin <[email protected]>wrote:
>
>> How can I separate an expression like
>> a*(x+y) + x
>> into terms involving only x and only y
>> (a+1)*x , a*y
>>
>> This seems like the kind of function SymPy probably has.  I'm having
>> trouble finding it.
>>
>
>     >>> eq
>     a*(x + y) + x
>     >>> collect(eq.expand(), x, y)
>     a*y + x*(a + 1)
>

collect() requires x, y to be passed as [x, y] or (x, y), and otherwise you
set evaluate keyword to y. To get the coefficients, use evaluate=False. This
problem can be also solved with polys:

In [1]: var('a')
Out[1]: a

In [2]: f = a*(x + y) + x

In [3]: factor(f, x, y)
Out[3]: a⋅y + x⋅(a + 1)

In [4]: Poly(f, x, y).nth(1, 0)
Out[4]: a + 1

In [5]: Poly(f, x, y).nth(0, 1)
Out[5]: a

>  --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/sympy?hl=en.
>

Mateusz

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to