From: robert@cs.caltech.edu (Piglet) Newsgroups: sci.math Subject: Re: How can you tell a quartic has real roots? Date: 10 Nov 1994 13:55:31 GMT stankerr@uiuc.edu (Stan Kerr) writes: >[...] >Heuristics might be the only practical approach; I was hoping someone >would know alternate formulas for the roots, or 'discriminants' based on >the coefficients. [etc] Of course there are such formulas! I'm so lazy I was hoping someone else would give them. Consider a polynomial with real coefficients. It has repeated roots if and only if its discriminant is zero. If that is the case divide it by its GCD with its derivative to obtain a square-free polynomial having the same roots. Then work with the new polynomial (of lower degree) instead. Thus we can assume the polynomial has distinct roots, so that Sturm's theorem applies. Constant, linear and quadratic polys are easy so I'll skip them. Consider the cubic f(x) = a*x^3+3*b*x^2+3*c*x+d with a != 0 of course. Define: G = a^2*d-3*a*b*c+2*b^3 H = a*c-b^2 The discriminant is D = -27*(G^2+4*H^3). The leading terms of the Sturm polynomial sequence for f(x) are (up to positive factors): x^3, x^2, -H*x, D The number of roots between -oo and +oo i.e., the number of real roots is C(-oo)-C(+oo) where C(t) counts the sign changes in the Sturm polynomial sequence evaluated at t. In particular all three roots are real iff H < 0 and D > 0. Now consider the quartic f(x) = a*x^4+4*b*x^3+6*c*x^2+4*d+e where again a != 0. Define H as above(!!!) and: I = a*e-4*b*d+3*c^2 J = a*c*e+2*b*c*d-a*d^2-e*b^2-c^3 The discriminant is D = 256*(I^3-27*J^2). This time the leading terms are (up to positive factors): x^4, x^3, -Hx^2, -(2*H*I-3*a*J)*x, D All four roots are real iff H < 0, 2*H*I < 3*a*J and D > 0. Voila`! Bye, Rob .-. robert@vlsi.cs.caltech.edu .-. / \ .-. .-. / \ / \ / \ .-. _ .-. / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / `-' `-' \ / \ / \ \ / `-' `-' \ / `-' Question all you are. `-'