Ask Your Question
1

factorize symbolic expression

asked 5 years ago

Jingenbl gravatar image

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

Thanks in advance...

Preview: (hide)

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
Juanjo gravatar imageJuanjo ( 5 years ago )

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

John Palmieri gravatar imageJohn Palmieri ( 5 years ago )

1 Answer

Sort by » oldest newest most voted
0

answered 5 years ago

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)
Preview: (hide)
link

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

Jingenbl gravatar imageJingenbl ( 5 years ago )

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.

John Palmieri gravatar imageJohn Palmieri ( 5 years ago )

ok I undersatnd....

Jingenbl gravatar imageJingenbl ( 5 years ago )

Your Answer

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

Add Answer

Question Tools

1 follower

Stats

Asked: 5 years ago

Seen: 1,455 times

Last updated: Dec 17 '19