next up previous
Next: The GCD Up: Polynomial Algebra and Previous: Polynomial Algebra and

Resultants and Discriminants.

As an aside, before we continue this calculation, we should look at the definition of `resultant' and `discriminant', at least by example. For more details, see [, pages 215--218,].

Consider and . The Sylvester matrix of these two polynomials is formed by multiplying p by 1, x, , and (up to but not including the degree of q) and multiplying q by 1, x, and . We write these polynomials in a list and extract the powers of x to make a matrix-vector multiplication:

If there is an for which and simultaneously, then where is a nonzero vector; hence we must have . The determinant of this Sylvester matrix is called the resultant of p and q. Obviously if then p and q have no common factors.

There are more efficient ways to calculate the resultant than by forming this matrix and taking the determinant, but we do not go into this here.

A special resultant is the resultant of p and its derivative . This is zero precisely when p has multiple roots. If the leading coefficient of p is , then we call the discriminant of p. Thus the discriminant of p is zero precisely when p has multiple roots. See [3] for an alternate definition of the discriminant, and see [,21] for more details on resultant and subresultant algorithms.

> resultant(r,diff(r,x),x);
                                 6                      5                     4
 - (54 - 5 a) (- 35189209313280 a  + 33652683893404224 a  + 1886180124890160 a

                            3                       2
      - 209011504196972565 a  - 471232312731311670 a  + 4546655486829256680 a

      - 4631307643210963968)
As predicted, the resultant is times the discriminant (the leading coefficient of r is 99). This predicts that r will have multiple roots for those values of a which make the above polynomial zero.
> subs(a=54/5,d);
                                       0

> subs(a=54/5,r);
                               5          3        2
                           99 x  - 953/5 x  - 540 x
Obviously x=0 is a multiple root if , then.
> s := op(3,d);
                   6                  5                 4                   3
  s := 3590369280 a  - 3433596969024 a  - 192447722160 a  + 21325528435565 a

                         2
       + 48080023745670 a  - 463897100992680 a + 472534194797568

> alias(alpha=RootOf(",a));
                                    I, alpha

> subs(a=alpha,r);
                               5       3       2             3
            54 - 5 alpha + 99 x  - 61 x  - 50 x  alpha - 12 x  alpha

> factor(");
1/

434335011757987604874272329184376961978030947623564519416229828656613135864308\
752956350213721760394754865468750000

 (16447668644949730454482015628495063022000 x

< *******************  several lines omitted *******************>

                                                  4
 + 164755474086118437520018618672953288000 x alpha

                                               5
 - 172059736910372892228371562063360000 x alpha ) (

- 106025442444446337510923924887466141694

 + 78175831306266605050612247334033152250 x

 + 35413619863062503093930210102968692635 alpha

                                           5
 + 1373848354156543678262348056719360 alpha

                                              4
 - 1311525643882214281519944235336051008 alpha

                                              3
 - 2298604048311754686423673732876311984 alpha

                                              2
 + 1159110224678338909624328707418387601 alpha )^2
And we see that if a is any root of the polynomial s, then r has a multiple root (given explicitly by setting the last factor to zero).

A simpler way to see that:

> ralpha := subs(a=alpha,r);
                                    5       3       2             3
       ralpha := 54 - 5 alpha + 99 x  - 61 x  - 50 x  alpha - 12 x  alpha
Unfortunately, a simple call to gcd won't work --- we have to use evala, which is the special evaluation routine for algebraic numbers.
> evala(Gcd(ralpha,diff(ralpha,x)));  
                17670907074074389585153987481244356949
              - -------------------------------------- + x
                13029305217711100841768707889005525375

                      7082723972612500618786042020593738527
                   + -------------------------------------- alpha
                     15635166261253321010122449466806630450

                        45794945138551455942078268557312        5
                   + ------------------------------------- alpha
                     2605861043542220168353741577801105075

                      218587607313702380253324039222675168       4
                   - -------------------------------------- alpha
                     13029305217711100841768707889005525375

                      383100674718625781070612288812718664       3
                   - -------------------------------------- alpha
                     13029305217711100841768707889005525375

                      386370074892779636541442902472795867       2
                   + -------------------------------------- alpha
                     26058610435422201683537415778011050750
The greatest common divisor of r and when is the polynomial whose roots are the multiple roots of the original polynomial.



next up previous
Next: The GCD Up: Polynomial Algebra and Previous: Polynomial Algebra and



Robert Corless
Wed Feb 28 18:25:56 EST 1996