Sturm's theorem

From Wikipedia, the free encyclopedia
(Redirected from Sturm sequence)
Jump to navigation Jump to search

Script error: No such module "Unsubst".Script error: No such module "Unsubst".Template:Short description In mathematics, the Sturm sequence of a univariate polynomial Template:Mvar is a sequence of polynomials associated with Template:Mvar and its derivative by a variant of Euclid's algorithm for polynomials. Sturm's theorem expresses the number of distinct real roots of Template:Mvar located in an interval in terms of the number of changes of signs of the values of the Sturm sequence at the bounds of the interval. Applied to the interval of all the real numbers, it gives the total number of real roots of Template:Mvar.[1]

Whereas the fundamental theorem of algebra readily yields the overall number of complex roots, counted with multiplicity, it does not provide a procedure for calculating them. Sturm's theorem counts the number of distinct real roots and locates them in intervals. By subdividing the intervals containing some roots, it can isolate the roots into arbitrarily small intervals, each containing exactly one root. This yields the oldest real-root isolation algorithm, and arbitrary-precision root-finding algorithm for univariate polynomials.

For computing over the reals, Sturm's theorem is less efficient than other methods based on Descartes' rule of signs. However, it works on every real closed field, and, therefore, remains fundamental for the theoretical study of the computational complexity of decidability and quantifier elimination in the first order theory of real numbers.

The Sturm sequence and Sturm's theorem are named after Jacques Charles François Sturm, who discovered the theorem in 1829.[2]

The theorem

The Sturm chain or Sturm sequence of a univariate polynomial P(x)Script error: No such module "Check for unknown parameters". with real coefficients is the sequence of polynomials P0,P1,, such that

P0=P,P1=P,Pi+1=rem(Pi1,Pi),

for i ≥ 1Script error: No such module "Check for unknown parameters"., where P'Script error: No such module "Check for unknown parameters". is the derivative of Template:Mvar, and rem(Pi1,Pi) is the remainder of the Euclidean division of Pi1 by Pi. The length of the Sturm sequence is at most the degree of Template:Mvar.

The number of sign variations at Template:Mvar of the Sturm sequence of Template:Mvar is the number of sign changes (ignoring zeros) in the sequence of real numbers

P0(ξ),P1(ξ),P2(ξ),.

This number of sign variations is denoted here V(ξ)Script error: No such module "Check for unknown parameters"..

Sturm's theorem states that, if Template:Mvar is a square-free polynomial, the number of distinct real roots of Template:Mvar in the half-open interval (a, b]Script error: No such module "Check for unknown parameters". is V(a) − V(b)Script error: No such module "Check for unknown parameters". (here, Template:Mvar and Template:Mvar are real numbers such that a < bScript error: No such module "Check for unknown parameters".).[1]

The theorem extends to unbounded intervals by defining the sign at +∞Script error: No such module "Check for unknown parameters". of a polynomial as the sign of its leading coefficient (that is, the coefficient of the term of highest degree). At –∞Script error: No such module "Check for unknown parameters". the sign of a polynomial is the sign of its leading coefficient for a polynomial of even degree, and the opposite sign for a polynomial of odd degree.

In the case of a non-square-free polynomial, if neither Template:Mvar nor Template:Mvar is a multiple root of Template:Mvar, then V(a) − V(b)Script error: No such module "Check for unknown parameters". is the number of distinct real roots of Template:Mvar.

The proof of the theorem is as follows: when the value of Template:Mvar increases from Template:Mvar to Template:Mvar, it may pass through a zero of some Pi (i > 0Script error: No such module "Check for unknown parameters".); when this occurs, the number of sign variations of (Pi1,Pi,Pi+1) does not change. When Template:Mvar passes through a root of P0=P, the number of sign variations of (P0,P1) decreases from 1 to 0. These are the only values of Template:Mvar where some sign may change.

Example

Script error: No such module "Unsubst". Suppose we wish to find the number of roots in some range for the polynomial p(x)=x4+x3x1. So

p0(x)=p(x)=x4+x3x1p1(x)=p(x)=4x3+3x21

The remainder of the Euclidean division of p0Script error: No such module "Check for unknown parameters". by p1Script error: No such module "Check for unknown parameters". is 316x234x1516; multiplying it by −1Script error: No such module "Check for unknown parameters". we obtain

p2(x)=316x2+34x+1516.

Next dividing p1Script error: No such module "Check for unknown parameters". by p2Script error: No such module "Check for unknown parameters". and multiplying the remainder by −1Script error: No such module "Check for unknown parameters"., we obtain

p3(x)=32x64.

Now dividing p2Script error: No such module "Check for unknown parameters". by p3Script error: No such module "Check for unknown parameters". and multiplying the remainder by −1Script error: No such module "Check for unknown parameters"., we obtain

p4(x)=316.

As this is a constant, this finishes the computation of the Sturm sequence.

To find the number of real roots of p0 one has to evaluate the sequences of the signs of these polynomials at −∞Script error: No such module "Check for unknown parameters". and Script error: No such module "Check for unknown parameters"., which are respectively (+, −, +, +, −)Script error: No such module "Check for unknown parameters". and (+, +, +, −, −)Script error: No such module "Check for unknown parameters".. Thus

V()V(+)=31=2,

where Template:Mvar denotes the number of sign changes in the sequence, which shows that Template:Mvar has two real roots.

This can be verified by noting that p(x)Script error: No such module "Check for unknown parameters". can be factored as (x2 − 1)(x2 + x + 1)Script error: No such module "Check for unknown parameters"., where the first factor has the roots −1Script error: No such module "Check for unknown parameters". and 1Script error: No such module "Check for unknown parameters"., and second factor has no real roots. This last assertion results from the quadratic formula, and also from Sturm's theorem, which gives the sign sequences (+, –, –)Script error: No such module "Check for unknown parameters". at −∞Script error: No such module "Check for unknown parameters". and (+, +, –)Script error: No such module "Check for unknown parameters". at +∞Script error: No such module "Check for unknown parameters"..

Generalization

Script error: No such module "Unsubst". Sturm sequences have been generalized in two directions. To define each polynomial in the sequence, Sturm used the negative of the remainder of the Euclidean division of the two preceding ones. The theorem remains true if one replaces the negative of the remainder by its product or quotient by a positive constant or the square of a polynomial. It is also useful (see below) to consider sequences where the second polynomial is not the derivative of the first one.

A generalized Sturm sequence is a finite sequence of polynomials with real coefficients

P0,P1,,Pm

such that

  • the degrees are decreasing after the first one: degPi<degPi1 for i = 2, ..., mScript error: No such module "Check for unknown parameters".;
  • Pm does not have any real root or has no sign changes near its real roots.
  • if Pi(ξ) = 0Script error: No such module "Check for unknown parameters". for 0 < i < mScript error: No such module "Check for unknown parameters". and Template:Mvar a real number, then Pi −1 (ξ) Pi + 1(ξ) < 0Script error: No such module "Check for unknown parameters"..

The last condition implies that two consecutive polynomials do not have any common real root. In particular the original Sturm sequence is a generalized Sturm sequence, if (and only if) the polynomial has no multiple real root (otherwise the first two polynomials of its Sturm sequence have a common root).

When computing the original Sturm sequence by Euclidean division, it may happen that one encounters a polynomial that has a factor that is never negative, such a x2 or x2+1. In this case, if one continues the computation with the polynomial replaced by its quotient by the nonnegative factor, one gets a generalized Sturm sequence, which may also be used for computing the number of real roots, since the proof of Sturm's theorem still applies (because of the third condition). This may sometimes simplify the computation, although it is generally difficult to find such nonnegative factors, except for even powers of Template:Mvar.

Use of pseudo-remainder sequences

Script error: No such module "Unsubst". In computer algebra, the polynomials that are considered have integer coefficients or may be transformed to have integer coefficients. The Sturm sequence of a polynomial with integer coefficients generally contains polynomials whose coefficients are not integers (see above example).

To avoid computation with rational numbers, a common method is to replace Euclidean division by pseudo-division for computing polynomial greatest common divisors. This amounts to replacing the remainder sequence of the Euclidean algorithm by a pseudo-remainder sequence, a pseudo remainder sequence being a sequence p0,,pk of polynomials such that there are constants ai and bi such that bipi+1 is the remainder of the Euclidean division of aipi1 by pi. (The different kinds of pseudo-remainder sequences are defined by the choice of ai and bi; typically, ai is chosen for not introducing denominators during Euclidean division, and bi is a common divisor of the coefficients of the resulting remainder; see Pseudo-remainder sequence for details.)

For example, the remainder sequence of the Euclidean algorithm is a pseudo-remainder sequence with ai=bi=1 for every Template:Mvar, and the Sturm sequence of a polynomial is a pseudo-remainder sequence with ai=1 and bi=1 for every Template:Mvar.

Various pseudo-remainder sequences have been designed for computing greatest common divisors of polynomials with integer coefficients without introducing denominators (see Pseudo-remainder sequence). They can all be made generalized Sturm sequences by choosing the sign of the bi to be the opposite of the sign of the ai. This allows the use of Sturm's theorem with pseudo-remainder sequences.

Root isolation

For a polynomial with real coefficients, root isolation consists of finding, for each real root, an interval that contains this root, and no other roots.

This is useful for root finding, allowing the selection of the root to be found and providing a good starting point for fast numerical algorithms such as Newton's method; it is also useful for certifying the result, as if Newton's method converge outside the interval one may immediately deduce that it converges to the wrong root.

Root isolation is also useful for computing with algebraic numbers. For computing with algebraic numbers, a common method is to represent them as a pair of a polynomial to which the algebraic number is a root, and an isolation interval. For example 2 may be unambiguously represented by (x22,[0,2]).

Sturm's theorem provides a way for isolating real roots that is less efficient (for polynomials with integer coefficients) than other methods involving Descartes' rule of signs. However, it remains useful in some circumstances, mainly for theoretical purposes, for example for algorithms of real algebraic geometry that involve infinitesimals.[3]

For isolating the real roots, one starts from an interval (a,b] containing all the real roots, or the roots of interest (often, typically in physical problems, only positive roots are interesting), and one computes V(a) and V(b). For defining this starting interval, one may use bounds on the size of the roots (see Template:Slink). Then, one divides this interval in two, by choosing Template:Mvar in the middle of (a,b]. The computation of V(c) provides the number of real roots in (a,c] and (c,b], and one may repeat the same operation on each subinterval. When one encounters, during this process an interval that does not contain any root, it may be suppressed from the list of intervals to consider. When one encounters an interval containing exactly one root, one may stop dividing it, as it is an isolation interval. The process stops eventually, when only isolating intervals remain.

This isolating process may be used with any method for computing the number of real roots in an interval. Theoretical complexity analysis and practical experiences show that methods based on Descartes' rule of signs are more efficient. It follows that, nowadays, Sturm sequences are rarely used for root isolation.

Application

Generalized Sturm sequences allow counting the roots of a polynomial where another polynomial is positive (or negative), without computing these root explicitly. If one knows an isolating interval for a root of the first polynomial, this allows also finding the sign of the second polynomial at this particular root of the first polynomial, without computing a better approximation of the root.

Let P(x)Script error: No such module "Check for unknown parameters". and Q(x)Script error: No such module "Check for unknown parameters". be two polynomials with real coefficients such that Template:Mvar and Template:Mvar have no common root and Template:Mvar has no multiple roots. In other words, Template:Mvar and P'QScript error: No such module "Check for unknown parameters". are coprime polynomials. This restriction does not really affect the generality of what follows as GCD computations allows reducing the general case to this case, and the cost of the computation of a Sturm sequence is the same as that of a GCD.

Let W(a)Script error: No such module "Check for unknown parameters". denote the number of sign variations at Template:Mvar of a generalized Sturm sequence starting from Template:Mvar and P'QScript error: No such module "Check for unknown parameters".. If a < bScript error: No such module "Check for unknown parameters". are two real numbers, then W(a) – W(b)Script error: No such module "Check for unknown parameters". is the number of roots of Template:Mvar in the interval (a,b] such that Q(a) > 0Script error: No such module "Check for unknown parameters". minus the number of roots in the same interval such that Q(a) < 0Script error: No such module "Check for unknown parameters".. Combined with the total number of roots of Template:Mvar in the same interval given by Sturm's theorem, this gives the number of roots of Template:Mvar such that Q(a) > 0Script error: No such module "Check for unknown parameters". and the number of roots of Template:Mvar such that Q(a) < 0Script error: No such module "Check for unknown parameters"..[1]

See also

<templatestyles src="Div col/styles.css"/>

References

<templatestyles src="Reflist/styles.css" />

  1. a b c Script error: No such module "Footnotes".
  2. Script error: No such module "Template wrapper".
  3. Script error: No such module "Footnotes".

Script error: No such module "Check for unknown parameters".

  • Script error: No such module "citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Baumol, William. Economic Dynamics, chapter 12, Section 3, "Qualitative information on real roots"
  • D.G. Hook and P. R. McAree, "Using Sturm Sequences To Bracket Real Roots of Polynomial Equations" in Graphic Gems I (A. Glassner ed.), Academic Press, pp. 416–422, 1990.