# factorise a polynomial

Is it possible to factorize the polynomial x^6 - 12*x^5 + 53*x^4 - 106*x^3 + 94*x^2 - 30*x + 2 such that each factor appears as quadratic factors.

edit retag close merge delete

Sort by ยป oldest newest most voted

It is always possible: first factorize your polynomial in a algebraically closed field and then group the monomials two by two. Here is how to deal with Sage Factorization objects (it is a question about Sage right ?):

sage: R.<x> = QQbar[]
sage: P = x^6 - 12*x^5 + 53*x^4 - 106*x^3 + 94*x^2 - 30*x + 2
sage: P.parent()
Univariate Polynomial Ring in x over Algebraic Field
sage: f = P.factor()
sage: f
(x - 4.467598964866742?) * (x - 3.188264366408823?) * (x - 2.386709362961476?) * (x - 1.395662139195394?) * (x - 0.4725664086233007?) * (x - 0.0891987579442645?)
sage: type(f)
<class 'sage.structure.factorization.Factorization'>
sage: Factorization?                                               # this will provide some documentations
sage: f[0]
(x - 4.467598964866742?, 1)
sage: f[0][0]
x - 4.467598964866742?
sage: f[1][0]
x - 3.188264366408823?
sage: d = P.degree()
sage: d
6


Since each factor has multiplicity 1, we can do:

sage: Factorization([(f[d/2][0]*f[d/2+1][0], 1) for i in range(d/2)], simplify=False)
(x^2 - 1.8682285478?*x + 0.6595430448?) * (x^2 - 1.8682285478?*x + 0.6595430448?) * (x^2 - 1.8682285478?*x + 0.6595430448?)


If you had some multiplicity greater than 1, you could do something like:

sage: def demultiply(L):
....:     M = []
....:     for i,j in L:
....:         M += [i]*j
....:     return M
sage: demultiply([(1,2),('a',3),(4,1)])
[1, 1, 'a', 'a', 'a', 4]


But the previous factorization is somewhat artificial, since the factors are arbitrarilly paired and do not reflect a particular algebraic structure.

Perhaps, you want to find an intermediate field betweeb $\mathbb{Q}$ and $\mathbb{C}$ such that the factorization with respect to that field has only degree-2 factors ?

I am not sure, is this homework ?

more

( 2017-11-25 03:49:28 -0500 )edit