factorize symbolic expression
(ax+bx).factor()=x(a+b) but (2a+2b).factor()=(2a+2b) how to obtain 2(a+b) ?
Thanks in advance...
You can work with elements of a polynomial ring instead of with symbolic expressions:
sage: R.<a,b,c> = ZZ[] # polynomials with integer coefficients, variables a, b, c
sage: (a*2+b*2).factor()
2 * (a + b)
sage: (a*c+b*c).factor()
c * (a + b)
The notion of factorization is algebraic and depends on the ring in which you are working. For example x^2+1 factors over the complex numbers but not the reals, and x^2-2 factors over the reals but not the rationals. So when you're dealing with factorization, it's a good idea to precisely specify the ring.
Asked: 2019-12-15 15:36:29 +0100
Seen: 1,786 times
Last updated: Dec 17 '19
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.
There exists the
collect_common_factorsmethod that should do the trick, I think. But it seems a bit buggy. This works as expected:However, this fails:
Looks like a bug to me, since
(2*a*x + 2*b*x).factor()returns2*(a + b)*x.