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 `eval`uation routine for `a`lgebraic 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: The GCD Up: Polynomial Algebra and Previous: Polynomial Algebra and

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