# Factoring a quintic

I am trying to prove that a quintic polynomial, $p(x) = A5 x^5 + A4 x^4 + A3 x^3 + A2 x^2 + A1 x + A0$, which admits at most three real roots. Unfortunately Descartes' rule of signs does not help, since I have 5 sign changes.

The polynomial's coefficients (the $An$ in the above expression) depend on a number of parameters, and after assigning numerical values to the parameters, Mathematica factors the polynomial into the product of either

• three monic linear polynomials and a quadratic polynomial with negative discriminant

• one monic linear polynomial and two quadratic polynomials with negative discriminant

which confirms what I think.

Since Mathematica can factor the quintic when the coefficients are numerical, I wonder if that implies it can also factor the quintic when expressed symbolically. If this is the case, how can I ask Mathematica to do it?

• Maybe you'd like to have a look here: library.wolfram.com/examples/quintic Jun 19, 2013 at 22:28
• You mention Descartes' rule of signs, but not its big brother the Sturm sequence, also known as the Sturm chain or Sturm's theorem. I used this to find the region in parameter space admitting real solutions for a particular quadratic. I imagine a quintic with coefficients depending on parameters might be impractical... Jun 19, 2013 at 22:29
• Hi @KennyColnago, thanks for the advice. I understand that the Sturm's theorem is what is behind the Mathematica command CountRoots. I can run this for numerical versions of my polynomial, and the result is either one or three roots. However, I would like to be able to analyse the general (symbolic) version of my polynomial. I have tried to write down a code for this but with little success. Do you know whether such a program exists? Jun 20, 2013 at 5:37
• @Oleksandr R. thanks for the link. Jun 20, 2013 at 5:39
• @Giovanni Sorry, I know of no such code, until you write it. For the quadratic I worked on, it was messy but barely feasible to translate the sign changes required for real roots in the symbolic Sturm sequence to conditions on the symbolic coefficients. Jun 24, 2013 at 2:32

The quintic

Once upon a time I tried to understand Galois work in order to understand what specific equations of a given degree admit an algebraic solution...

(Its ending was, that I started to think that the ingrain wallpaper of my study room was actually braille :) ... my desperate attempt of humour aside)

I can't solve your specific problem, but what I do know is, that it is often useful to have a grip on the location of the roots. For instance, we can check for what values the roots are complexx or real.

Since we need to explore polynomials of degree greater than four it is time for NSolve.

First of all, the polynomial:

mypoly[x_, lambda_] := 5 x^5 + 4 x^4 + 3 x^3 + 2 x^2 + x + lambda;


Than the solver:

PolySolve[poly_] := x /. NSolve[poly == 0, x]


So, let's do this for x and lambda = 3:

Clear[x]
PolySolve[mypoly[x, 3]] ==>  {-1.,-0.392513-0.877308 I,-0.392513+0.877308 I,0.492513 -0.63794 I,0.492513 +0.63794 I}


Intimidating...Let's produce a plot:

ComplexPlot[x_List, range_List, size_] :=
Module[{r},
r = {Re[#], Im[#]} & /@ x;
ListPlot[r, PlotStyle -> PointSize[size],
AspectRatio -> 1, PlotRange -> {range, range},
PlotRegion -> {{0.05, 0.95}, {0.05, 0.95}}]]


With this we can have a look at the root locus. Here I want to reuse a trick by William T. Shaw. Normally root locus plots are given by joining up the dots to give a smoot curve. This discards the velocity information. His trick to avoid this problem is that he is flattening the two-dimensional list into a one-dimensional of many complex numbers.

ComplexPlot[Flatten[Table[
PolySolve[mypoly[x, lambda]], {lambda, 0, 4, 0.2}]], {-2, 2}, 0.015]


Well. This is the point where I referential refer you, as @OleksandR already did, to Mr. Trott and Mr. Adamchik excellent work...(it is actually quite interesting that if one mathematics taught me, is humility...hardcore)

Please let me know if this helped somehow.

Cheers

Stefan

• Hi @Stefan, thanks! I have to read your message more carefully, and understand how to use it for my problem. At first blush, my understanding is that your suggestion is to first work out where the roots of the quintic can fall. Now, since my initial post, I have made some progress, and I now have a sufficient condition for the existence of multiple roots, as well an idea of their position on $\mathbb{R}_{++}$ (that is, I can formally define the intervals where the quintic has a root. However, I still cannot tell whether there can be at most 3 roots). Is this equivalent to what you suggested? Jun 24, 2013 at 16:06
• @Giovanni exactly. your progress is really interesting. please let me know about your further progress, if you want to. i was thinking about to extend the post for newton-raphson iteration, as another weapon to find the roots...but i've to confess that i'm not an expert on that field and the methods i'm using, despite that they are working, are not fool proof (meaning, not proofed by myself) and more an engineer's approach towards a mathematical analysis...hope this is not disappointing... Jun 24, 2013 at 16:15
• Hi Stefan: I read your suggestion more carefully now and it's a very interesting technique to study this type of problems. Thanks again for this. There is one thing that I am not sure I understand: once I have an idea of the root locus, is there a way to use it to factorize the original quintic? Jun 24, 2013 at 20:08
• Hi Giovanni. Nice to hear (read) from you. The root locus approach is actually more common in system theories, but it is extremely useful to sweep any parameter for which the exact value is uncertain to determine its behavior. Once we can determine the behavior at the root points, we can use that determination to peek with more elaborate techniques to yield the root points. Jun 24, 2013 at 20:32
• OK. Let me be more specific: suppose I know the expression for one root for a specific parameter value $k = k_0$, say $\hat{x}(k_0)$. Is there a way I can use that knowledge to infer the expression for that root at different values of the parameter, that is obtain $\hat{x}(k_1)$ for all $k_1\neq k_0$? Jun 24, 2013 at 20:49