Ask Your Question

# factorize symbolic expression

(ax+bx).factor()=x(a+b) but (2a+2b).factor()=(2a+2b) how to obtain 2(a+b) ?

Thanks in advance...

edit retag close merge delete

## Comments

1

There exists the collect_common_factors method that should do the trick, I think. But it seems a bit buggy. This works as expected:

sage: a, b = var("a, b")
sage: (2*pi*a + 2*pi*b).collect_common_factors()
2*pi*(a + b)
sage: (2*a^2 + 2*a*b).collect_common_factors()
2*(a + b)*a


However, this fails:

sage: (2*a + 2*b).collect_common_factors()
2*a + 2*b
sage: (SR(2)*a + SR(2)*b).collect_common_factors()
2*a + 2*b


Looks like a bug to me, since (2*a*x + 2*b*x).factor() returns 2*(a + b)*x.

## 1 Answer

Sort by » oldest newest most voted 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)

more

## Comments

Thanks for the replay. A little bit heavy for a simple factorization of an expression... Any particular reason for this restriction of the format method? Big thanks anyway

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.

## Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

## Stats

Asked: 2019-12-15 15:36:29 +0200

Seen: 188 times

Last updated: Dec 17 '19