Chapter 2
Sturm Sequences and Greatest Common Divisors 2.1
Introduction
Sturm sequences, derived from a polynomial and its derivative, provide a way of determining how many real roots lie in a specified interval, and ultimately, by means of a bisection process, of determining a range within which a single root lies. They have also been used by Wilf (1978) in locating complex roots. Ralston (1978) gives a good treatment, on which the following three sections are based.
2.2
Definitions and Basic Theorem
Definition 1. A sequence of polynomials f1 (x), f2 (x), ...fm (x) is called a STURM SEQUENCE on an interval (a,b) if (i) fm (x) 6= 0 in (a, b)
(2.1)
(ii) at any zero of fk (x), (k = 2, ..., m − 1) fk−1 (x)fk+1 (x) < 0
(2.2)
Note that this implies fk−1 6= 0 and fk+1 6= 0
(2.3)
Definition 2. Let fi (x), i = 1, ..., m, be a Sturm sequence on (a,b), and let x0 be a point at which f1 (x) 6= 0. We define V (x0 ) =number of changes of 37
38
2. Sturm Sequences and Greatest Common Divisors
sign in fi (x0 ), zeroes being ignored. If a = −∞, V (a) is defined as number of sign changes in limx→−∞ fi (x). Similarly for V (b) if b = +∞. Definition 3. Let R(x) be a rational function. We define the CAUCHY INDEX Iab R(x)=(number of jumps from −∞ to +∞) -(number of jumps from +∞ to −∞) as x goes from a to b, excluding endpoints. Now we can prove:STURM’S THEOREM. If fi (x), (i = 1, ..., m) is a Sturm sequence on (a,b), and if f1 (a) 6= 0, f1 (b) 6= 0, then:Iab
f2 (x) = V (a) − V (b) f1 (x)
(2.4)
Proof. V(x) does not change when x passes through a zero x0 of fk (x), (k = 2, ..., m), because of 2.2 [e.g. if the sign of fk is the same as that of fk−1 just left of x0 , it will be the same as that of fk+1 just right of x0 , so there is only one sign change in the sequence fk−1 , fk , fk+1 both left and right of x0 ]. Thus V(x) can only change at a zero of f1 (x). Now if x0 is a zero of f1 (x), it is not a zero of f2 (x), by 2.3 with k=2 (for if it were, f1 (x) 6= 0). Hence f2 (x) has the same sign on both sides of x0 . So if x0 is a zero of f1 (x) of even multiplicity, then V(x) does not change as x passes through x0 (for f1 (x) does not change sign), while there is no contribution to the Cauchy index (for ff12 remains equal to +∞, or −∞ ). But, if x0 is of odd multiplicity, f1 (x) changes sign at x0 . If f1 and f2 have the same sign to the left of x0 , V(x) increases by 1 while the Cauchy index has a contribution of -1 ( ff12 jumps from +∞ to −∞). Likewise if f1 and f2 have opposite sign, V(x) decreases by 1 while the Cauchy index incurs a contribution of +1. Thus Iab ff12 = −(V (b) − V (a)). Q.E.D.
2.3
Application to Locating Roots
To find the real roots of f(x) in (a,b) we let f1 (x) ≡ f (x), f2 (x) = f ′ (x) and compute fj (x), j=3,...m, by fj−1 (x) = qj−1 (x)fj (x) − fj+1 (x), j = 2, ..., m − 1
(2.5)
2.3. Application to Locating Roots
39
fm−1 (x) = qm−1 (x)fm (x)
(2.6)
i.e. fj+1 is - remainder when fj−1 divided by fj . The sequence fj is of decreasing degree and hence must terminate with fm (x), possibly a constant, which divides fm−1 and hence all fj (j=m-1,...,1), i.e. fm is the greatest common divisor of f1 and f2 . If fm 6= 0 in (a,b) condition i) of Defn. 1 is satisfied, while by 2.5 condition ii) is satisfied, i.e. fj is a Sturm sequence . f If fm =0 in (a,b) we work with { fmj } which has the same values of Iab , V(a), V(b) as {fj }. Now suppose f = (x − ζ1 )m1 (x − ζ2 )m2 ...(x − ζp )mp Q(x),
(2.7)
where Q(x) has no real roots. Then f ′ (x) =
p X
mi (x−ζi )mi −1
i=1
p Y
(x−ζj )mj Q(x)+
j=1,6=i
p Y
(x−ζj )mj Q′ (x)(2.8)
j=1
Hence p
f ′ X mi Q′ f2 = = + f1 f x − ζi Q i=1
(2.9)
THEOREM 2 Then Iab ff21 = number of distinct real zeros in (a,b) =V(a)-V(b) (provided f (a) 6= 0, f (b) 6= 0). If f(x) has a simple root at a or b the result holds with V(x)=number of sign changes in f2 (x), ..., fm (x). Using this theorem and a bisection process we may isolate one or more of the real roots of f(x), i.e. find an interval (ak , bk ) containing exactly one root (e.g. the largest). Start with b0 = 1.1×an upper bound on roots of f, a0 = −b0 Now for k=0,1,... do:Find nk = V (ak ) − V (bk ). If nk > 1 then:Set ck = (ak + bk )/2. Find V (ck ). If nk = V (ck ) − V (bk ) > 1 set ak = ck and continue; else if this nk = 0 set bk = ck and continue; else (nk = 1) the interval (ck , bk ) contains exactly one root. Now we may continue the bisection process until (bk − ak ) < some error criterion, or we may switch to some more rapidly converging method. Dunaway (1974) describes a program which uses Sturm sequences to get a
40
2. Sturm Sequences and Greatest Common Divisors
first approximation to real roots and Newton’s method to improve them.
2.4
Elimination of Multiple Roots
It was mentioned in Sec. 3 that special methods must be used if fm = 0 in (a,b), i.e. we should divide each fj by fm . Now it may be shown that dividing f1 (f ) by the g.c.d. fm of f and f ′ leaves us with a polynomial having no multiple roots (if indeed f has any multiple roots to start with). For we see by 2.7 and 2.8 of Sec. 3 (allowing some or all of the ζi to be complex and Q(x) = constant) that f and f ′ have common factors p Y
(x − ζi )mi −1
(2.10)
i=1
and these are the highest powers of (x − ζi ) which are common factors. Thus, apart from a constant, 2.10 gives the g.c.d. of f and f ′ . Note that if mi = 1, (x − ζi )mi −1 = 1
(2.11)
i.e. this factor does not occur in the g.c.d. Hence if we divide f by the g.c.d. of f and f ′ we are left with p Y
(x − ζi )
(2.12)
i=1
i.e. there are no multiple roots. It is recommended that one do this division before applying the Sturm sequence method. Not only is it then easier to apply Sturm, but other methods such as Newton’s, which may be used in conjunction with Sturm, converge faster in the abscence of multiple roots. By repeating the process of finding and dividing by the g.c.d. we may obtain a set of polynomials each of which contain only zeros of a specific (known) multiplicity. Thus, with a slight change of notation, let P1 = f (or f1 ), P2 = gcd(P1 , P1′ ), ..., ′ Pj = gcd(Pj−1 , Pj−1 ) f or j = 2, ..., m + 1
(2.13)
where Pm+1 is the first Pj to be constant. Then as we have seen P2 contains Qp mi −1 , so in general P will contain j i=1 (x − ζi ) p Y
(x − ζi )mi +1−j
i=1
(2.14)
2.4. Elimination of Multiple Roots
41
with the proviso that if mi + 1 − j ≤ 0
(2.15)
the i’th factor is replaced by 1. It follows from 2.14 that zeros of P1 (f) which have multiplicity mi ≥ j
(2.16)
will appear in Pj , but not zeros which have mi < j
(2.17)
Moreover m is the greatest multiplicity of any zero of P1 (for by 2.16 and 2.17 m+1 > all mi and hence m+1 ≥ Max mi +1). Now we let Pj Qj = (j = 1, 2, ..., m − 1) (2.18) Pj+1 Qm = Pm
(2.19)
Each Qj contains only simple zeros, and the zeros of Qj appear in P1 with multiplicity ≥ j. For using 2.14 and 2.15 we see that Qp
(x − ζi )mi +1−j mi −j i=1;mi ≥j+1 (x − ζi )
i=1;mi ≥j Qj = Qp
(2.20)
Clearly, for mi > j, the factors (x − ζi ) in the numerator and in the denominator cancel except for a power of 1 remaining in the numerator. But for mi = j the numerator contains just (x − ζi )1 while the denominator contains no factor (x − ζi ). In short Qj =
p Y
i=1;mi ≥j
(x − ζi )
(2.21)
We can take the process a further step, by letting ˜j = Q
Qj (j = 1, 2, ..., m − 1) Qj+1
(2.22)
˜ m = Qm Q
(2.23)
Then Qp
(x − ζi ) = i=1;mi ≥j+1 (x − ζi )
˜ j = Qp i=1;mi ≥j Q
p Y
i=1;mi =j
(x − ζi )
(2.24)
42
2. Sturm Sequences and Greatest Common Divisors
˜ j contains all factors (to power 1) which are of multiplicity or in words, Q exactly j. ˜ j separately we will This is a very useful result, for if we factorize each Q not be handicapped by multiple roots, but we will know the multiplicity of ˜ j in the original P1 . each factor of Q
EXAMPLE P1 = (x − ζ1 )5 (x − ζ2 )3 (x − ζ3 )3 (x − ζ4 ) P2 = (x − ζ1 )4 (x − ζ2 )2 (x − ζ3 )2 P3 = (x − ζ1 )3 (x − ζ2 )(x − ζ3 ) P4 = (x − ζ1 )2 P5 = (x − ζ1 ) P6 = 1 Thus we see that the highest multiplicity is 5. Now Q1 = (x − ζ1 )(x − ζ2 )(x − ζ3 )(x − ζ4 ) Q2 = (x − ζ1 )(x − ζ2 )(x − ζ3 ) Q3 = (x − ζ1 )(x − ζ2 )(x − ζ3 ) Q4 = (x − ζ1 ) Q5 = (x − ζ1 ) and finally ˜ 1 = (x − ζ4 ) Q ˜2 = 1 Q ˜ 3 = (x − ζ2 )(x − ζ3 ) Q ˜4 = 1 Q
2.5. Detection of Clusters of Zeros (Near-Multiple)
43
˜ 5 = (x − ζ1 ) Q and we conclude that P1 has one simple root, two of multiplicity 3, and one of multiplicity 5. There are no roots of multiplicity 2 or 4. Note that ˜ 3 will be given as a quadratic, not factorized. We will have to initially Q ˜ i could be of still higher degree. factorize it, and of course in general Q
2.5
Detection of Clusters of Zeros (Near-Multiple)
The methods of the last section break down in the presence of rounding error, as in floating-point computation, since a small change in the coefficients leads to the disintegration of a k-fold zero into a cluster of k distinct (but usually close) zeros. In other words, a g.c.d. of (p, p′ ) which is of degree > 0, as would be found for the multiple zero case if infinite precision is used (e.g. in pure integer or rational arithmetic), is replaced by a g.c.d. = 1 in floating-point arithmetic. One popular solution to this problem is of course to work in rational arithmetic, as in a symbolic algebra system. This will be discussed in the next section. Here we will describe a method discussed by Hribernig and Stetter (1997), which enables us to compute clusters of zeros, with their multiplicities and centers, using a combination of symbolic and floatingpoint computation. The key idea is the definition of a cluster in relation to an accuracy level:DEFINITION 2.5.1 “At the accuracy level α, a complex polynomial p˜ posesses a k-cluster of zeros with center ζ if there exists a polynomial p∗ , with deg p∗ ≤ deg p˜, such that p∗ has an exact k-fold zero at ζ, and ||˜ p − p∗ || ≤ α
(2.25)
or equivalently p˜ = (x − ζ)k q˜ + r˜(x), with ||˜ r || ≤ α
(2.26)
Note that we have defined ||p(x)|| ≡
n X
j=0
|cj |
(2.27)
44
2. Sturm Sequences and Greatest Common Divisors
where p(x) = c0 + c1 x + ...cn xn . Note also that the values of ζ, p∗ or q˜, r˜ are not uniquely determined; but for a given α there is a highest possible value of k–this is the value we assume in 2.26. Theoretically, this k is an increasing, integer-valued function of α; hence it is a discontinuous function. In practise. the points of discontinuity are replaced by critical ranges. Since, as we have seen, the computation of the g.c.d.’s used in Sec. 4 breaks down, we replace the gcd by a “near- or α-gcd” defined as follows:DEFINITION At the accuracy level α, two polynomials f˜1 and f˜2 possess a near-gcd ˜g if there exist polynomials f1∗ and f2∗ such that gcd(f1∗ , f2∗ ) = g˜ and ||f˜i − fi∗ || ≤ α, i = 1, 2
(2.28)
f˜i = g˜q˜i + r˜i where ||˜ ri || ≤ α, i = 1, 2
(2.29)
or
We seek a near-gcd g˜∗ of the maximum degree feasible at accuracy level α. Again, fi∗ , g˜∗ or q˜i , r˜i are not uniquely defined, and so deg g˜∗ is an increasing integer-valued function of α whose discontinuities are not sharp. On the other hand, once g˜ has been computed, M axi=1,2 ||˜ ri || is well-defined and we may assess the validity of our gcd. The classical Euclidean algorithm (EA) for gcd(f1 , f2 ) computes qi and fi+1 by division:fi−1 = fi qi + fi+1 (i = 2, 3, ..., l)
(2.30)
terminating when fl+1 = 0, so that gcd(f1 f2 ) = fl
(2.31)
But, as mentioned, small perturbations of the fi will lower the degree of the gcd dramatically, usually to 0. We expect that replacement of the criterion “fl+1 = 0” by “fl+1 sufficiently small” will stabilize the gcd and yield a “near-gcd”. But how do we quantify this criterion at a given accuracy level α?. It turns out that we can write (i)
(i)
fi = sj fj + sj−1 fj+1 (j > i ≥ 1)
(2.32)
with (i)
sj
(i)
(i)
(i)
(i)
= qj sj−1 + sj−2 , j > i and si−1 = 0, si
= 1
(2.33)
2.5. Detection of Clusters of Zeros (Near-Multiple)
45
PROOF Assume true up to j, i.e. (i)
(i)
fi = sj fj + sj−1 fj+1 (j > i ≥ 1) Also fj = qj+1 fj+1 + fj+2
(2.34)
(i)
(i)
hence fi = sj {qj+1 fj+1 + fj+2 } + sj−1 fj+1 (i)
(i)
(i)
= {qj+1 sj + sj−1 }fj+1 + sj fj+2
(i)
(i)
= sj+1 fj+1 + sj fj+2
(2.35)
i.e. it is true for j+1 in place of j. But fi = qi+1 fi+1 + fi+2 = (qi+1 1 + 0)fi+1 + 1fi+2 (i)
(i)
= si+1 fi+1 + si fi+2
(2.36)
according to the definitions in 2.33 i.e. theorem is true for j = i+1; hence by induction for all j. (1)
The sj
(2)
and sj
may be computed as we compute the fi . Then compar(i)
ing 2.32 and 2.29 with fj = g˜ and sj (i)
||sj−1 fj+1 || ≤ α (i = 1, 2)
= q˜i we see that the criterion (2.37)
means that fj is an α-gcd of f1 and f2 . We may use floating-point arithmetic here provided that the backward error (i)
||sj−1 ρj+1 ||
(2.38)
of the residuals ρj+1 = f˜j−1 − f˜j qj − f˜j+1
(2.39)
remain small compared to α. This leads to a dramatic reduction in execution time when the coefficients are ratios of large integers (as often happens
46
2. Sturm Sequences and Greatest Common Divisors
during an exact g.c.d. calculation). We may check the adequacy of the near-gcd a posteriori by dividing f˜1 (i) and f˜2 by f˜l to give residuals vl (i) (i) f˜i = f˜l wl + vl , (i = 1, 2)
(2.40)
(i) (i) if ||vl || << α (i = 1, 2), one may test the previous vl−1 to see if f˜l−1 is a better near-g.c.d. (note that the higher the degree of f˜l , the better).
EXAMPLE 1 Consider f˜1 = p˜(x) = x4 − 1.4143878x3 + .0001232x2 + .7071939x − .2500616
Take f˜2 = 41 p˜′ , and perform an EA in float-point arithmetic, computing the error bounds on L.H.S. 0f 2.37 as we go. Results are j degf˜j 1 4 2 3 3 2 4 1 5 0
2.37 − − 1.09 .9 × 10−7 .6 × 10−9
As our polynomial has an accuracy level .5 × 10−7 , we appear to have a near-gcd f˜3 of degree 2. ′ ) described in section 4 will now be The sequence Pi = gcd(Pi−1 , Pi−1 replaced by ′ P˜i = an α − gcd(P˜i−1 , P˜i−1 )
(2.41)
where by an α-gcd we mean a near-gcd at accuracy level α. Hribernig shows that “For |ζ| < 1, if (x − ζ)k−1 is a factor of an α-gcd of P˜ and P˜ ′ , then P˜ has a k-cluster of zeros with center ζ at an accuracy level 3α” Suppose that after applying 2.41 and the further computation of Qj and ˜ j as in sec 4 we have Q P˜1 ≡ f˜1 =
m Y
˜ j )j + r˜ (Q
j=0
(2.42)
2.6. Sturm Sequences (or gcd’s) Using Integers
47
then we may form ˜ j )j q˜j + r˜j (j = 1, ..., m) P˜1 = (Q
(2.43)
and check the size of the r˜j . If ||˜ rj || ≈ α, (j=1,...,m), then we accept 2.42 as a valid grouping of the zeros of P˜1 into clusters at accuracy level α. But if ||˜ rj || >> (<<) α we have too few (too many) clusters, and we have to lower (raise) degree P˜l , i.e. we have to take at least one step more (less) in the stabilized EA which generates P˜l ˜ j have degree > 1, their As in the standard procedure, if some of the Q approximate zeros must be found as centers of the several i-clusters which they represent. These zeros will be well-separated at the specified accuracy level (otherwise they would be considered as one cluster), and finding them should be relatively easy.
2.6
Sturm Sequences (or gcd’s) Using Integers
As pointed out at the start of section 5, errors in floating arithmetic often prevent us from finding the true gcd of two polynomials. Note that the calculation of Sturm sequences is the same as that of gcd’s, apart from the sign of the remainder at each step in the Euclidean algorithm (see below). Thus in what follows we will refer to gcd’s, as is often done in the literature.(Also the methods of Sec. 4 require the calculation of gcd’s , so this topic is important in its own right). One favorite way of avoiding errors is to multiply the polynomial by the gcd of the denominator of its rational coefficients and work with integers only, if necessary using multiple precision (of course if the true coefficients are irrationals they will necessarily be approximated by rationals on input to the computer). The traditional Euclid’s method for finding the gcd of two polynomials P1 and P2 is to divide P1 by P2 giving remainder P3 and repeat that process until Pl+1 = 0.Then Pl is the gcd of P1 and P2 . Unfortunately, even if P1 and P2 have integral coefficients, P3 etc generally have non-integral ones.
48
2. Sturm Sequences and Greatest Common Divisors
We can avoid this problem by instead computing the pseudo-remainder given for F and G by n−m+1 gm F = QG + R
(2.44)
where gm is the leading coefficient of G, n and m are the degrees of F and G respectively, and degree(R) < degree(G) = m. To see why this works, observe that division is actually accomplished by a series of ‘partial divisions’ sin ni −m Si+1 = Si − x G (2.45) gm where sin is the leading coefficient of Si , ni is its degree, and S0 = F. This eliminates successively lower powers of x from the partial remainders. However, to avoid non-integral coefficients we modify the above to Si+1 = gm Si − sin xni −m G
(2.46)
This will be repeated until we reach a value of i such that ni+1 < m. Since ni ≤ ni−1 − 1, 2.46 is applied at most n-m+1 times, Si being multiplied by gm each time. As we do not know how many times it will actually be used, we assume the worst case, leading to 2.44 If 2.44 is applied with F=Pi−2 , G = Pi−1 and R = βi Pi , i.e. to give βi Pi = αi Pi−2 − QPi−1 (i = 3, ..., l + 1)
(2.47)
where n
i−2 αi = lci−1
−ni−1 +1
(2.48)
and ni = deg(Pi ), lci =leading coefficient of Pi and βi is yet to be chosen, we will have what is called a polynomial remainder sequence (prs). The choice βi = 1 gives a Euclidean prs, but this leads to an exponential increase in coefficient size and thus is impractical except for low degrees. Or, we may divide the pseudo-remainder by the gcd of its coefficients, so that after division they will be relatively prime (then we say that the prs is Primitive). This controls the size, but finding the gcd of the coefficients takes a great deal of work. A method which is often relatively efficient (that is, when δi = ni − ni+1 = 1 for all i– the normal case) is the Reduced prs (Collins (1967)). Here we take δ
i−3 βi = αi−1 = lci−2
+1
(2.49)
2.7. Complex Roots (Wilf ’s Method)
49
and it turns out (see Brown and Traub(1971) or Akritas (1987) for proof) that the pseudo-remainder in 2.47 in this case is exactly divisible by βi , i.e. Pi has integral coefficients for all i. But also note that in the non-normal case for this method the coefficents may grow a great deal. An even better, but slightly more complicated, method is known as the Subresultant prs, where a “subresultant” is a polynomial whose coefficients are certain determinants related to the resultant. In this method we take δ
(2.50)
1−δ
(2.51)
β3 = (−1)δ1 +1 ; βi = −lci−2 ψi i−2 (i = 4, ..., l + 1) where ψ3 = −1; ψi = (−lci−2 )δi−3 ψi−1 i−3 (i = 4, ..., l + 1)
Brown and Traub (1971) give a good derivation, and Brown (1978) proves that the calculated Pi have integral coefficients . Note that if the prs is normal 2.50 and 2.51 reduce to ψi = −lci−2 ;
βi = +lc2i−2
(2.52)
In that case the reduced and subresultant prs are identical except possibly for signs. Collins (1967) p139 shows that the coefficients of Pl in a subresultant prs do not exceed (n − nl−1 + 1)(2d + log10 2(n − nl−1 + 1))
(2.53)
where d is the maximum number of decimal places in the coefficients of P1 and P2 . That is, they grow almost linearly with n, and no expensive computations of gcd’s of coefficients are required. Moreover Brown (1978) p 247 shows that the cost is of order (d2 n4 ). Thus it appears that the Subresultant prs is the best of its class, although other methods such as heuristic or modular may be even faster.
2.7
Complex Roots (Wilf’s Method)
We will show a method due to Wilf (1978) by which the number of roots in a given rectangle may be counted - then a two-dimensional extension of
50
2. Sturm Sequences and Greatest Common Divisors
the bisection method can be used to find a rectangle, as small as desired, containing a single root. The method is based on the “Argument Principle”, which states:-“ suppose no zeroes of f(z) lie on the boundary ∂R of R. Then the number N of zeroes of f(z) inside R= 1 1 ∆∂R (arg f (z)) = × {change in arg f (z) around ∂R} 2π 2π
(2.54)
Now consider a straight line from a to b which is part of ∂R. Let z=a+(b-a)t, so that f (z) =
n X
(αν + iβν )tν = fR (t) + ifI (t)
(2.55)
ν=0
Consider the curve in the w-plane given by w=f(z) as z moves from a to b. If the w-curve crosses from the 1st quadrant to the 2nd, or from the 3rd to the 4th, the function fI (t)/fR (t) ≡ R(t) jumps from +∞ to −∞, while if it crosses from the 2nd to the 1st, (or from 4th to 3rd), R(t) jumps from −∞ to +∞. Hence -I01 R = net excess of counter-clockwise over clockwise crossings by w-curve as z traverses ab and t goes from 0 to 1. But each extra counter-clockwise crossing contributes π to arg f(z). Hence ∆∂R argf (z) = −π
X
I01 fI (t)/fR (t)
(2.56)
edges of R
Hence N = −
m 1X (i) (i) I 1 {f (t)/fR (t)} 2 i=1 0 I
(2.57)
Now we may find each I01 by the Sturm’s theorem using a sequence with f1 = fR and f2 = fI . That is, if Q1 , Q2 , Q3 , Q4 , (Q5 = Q1 ) are vertices of a rectangle, then on side Qk Qk+1 we expand f(z) about Qk , i.e. replace z by Qk + ik−1 t; let f˜(t) =
n X
(αν + iβν )tν
(2.58)
ν=0
and take f1 (t) =
n X
ν=0
αν tν , f2 (t) =
n X
ν=0
βν tν .
(2.59)
2.8. References for Chapter 2
51
The usual Sturm sequence will terminate with a constant fm since f1 , f2 can have no common factor (for this would give a zero of f on a side of R).Then 4 1X N= {Vk (|Qk+1 − Qk |) − Vk (0)} 2 k=1
(2.60)
Krishnamurthy and Venkateswaran (1981) describe a parallel version of Wilf’s method, which they claim to work in O(n3 p) sequential time or O(n2 p) parallel time with n processors. Here 2−p is the precision required. Camargo-Brunetto et al. (2000) recommend using integer arithmetic where possible, i.e. in calculating the Sturm sequences by, for example, the subresultant method referred to in sec. 6. Pinkert (1976) describes a variation using Routh’s theorem as well as Sturm’s sequences. A problem in all these methods is that Sturm’s (or Routh’s) theorem does not work if there is a root or roots on one of the boundaries of a rectangle. The method recommended to deal with this problem is as follows: let the transformed polynomial on a side be given by 2.55 above, i.e. f (z) = fR (t) + ifI (t). We will find the gcd h(t) of fR (t) and fI (t). If this has a root ζ on the side, then fR (ζ) = fI (ζ) = 0
(2.61)
i.e. ζ is a root of f(z). So we will find the real roots of h(t) (and f(z)) on the side, as accurately as desired, by Sturm’s theorem and bisection. We record these roots. Then we shift the line a small distance to the left (or up) and repeat the process (more than once if necessary). If and when we reach a line with no roots on it, we apply Wilf’s method to the resulting rectangles on left and right (or above and below).
2.8
References for Chapter 2
Akritas, A.G. (1987), A Simple Proof of the Validity of the Reduced prs Algorithm, Computing 38, 369-372
52
2. Sturm Sequences and Greatest Common Divisors
Brown, W.S. (1978), The Subresultant PRS Algorithm, ACM Trans. Math. Software 4, 237-249 Brown, W.S. and Traub, J.F. (1971), On Euclid’s Algorithm and the Theory of Subresultants, J. Assoc. Comput. Mach. 18, 505-514 Camargo Brunetto, M.A.O., Claudio, D.M., and Trevisan, V. (2000), An Algebraic Algorithm to Isolate Complex Polynomial Zeros Using Sturm Sequences, Comput. Math. Appls. 39, 95-105 Collins, G.E. (1967), Subresultants and Reduced Polynomial Remainder Sequences, J. Assoc. Comput. Mach. 14, 128-142 Dunaway, D.K. (1974), Calculation of Zeros of a Real Polynomial Through Factorization Using Euclid’s Algorithm, SIAM J. Numer. Anal. 11, 1087-1104 Hribernig, V. and Stetter, H.J. (1997), Detection and Validation of Clusters of Polynomial Zeros, J. Symbolic Comput. 24, 667-681 Krishnamurthy, E.V. and Venkateswaran, H. (1981), A Parallel Wilf Algorithm for Complex Zeros of a Polynomial, BIT 21, 104-111 Pinkert, J.R. (1976), An Exact Method for Finding the Roots of a Complex Polynomial, ACM Trans. Math. Software 2, 351-363 Ralston, A. (1978), A First Course in Numerical Analysis, McGraw-Hill, New York Wilf, H.S. (1978), A Global Bisection Algorithm for Computing the Zeros of Polynomials in the Complex Plane, J. Assoc. Comput. Mach. 25, 415-420