Given a function ,
write
and define the Sturm functions by
(1)
|
where
is a polynomial quotient. Then construct the following chain of Sturm functions,
(2)
| |||
(3)
| |||
(4)
| |||
(5)
| |||
(6)
|
known as a Sturm chain. The chain is terminated when a constant
is obtained.
Sturm functions provide a convenient way for finding the number of real roots of an algebraic equation with real coefficients over a given interval. Specifically,
the difference in the number of sign changes between the Sturm functions evaluated
at two points
and
gives the number of real roots in the interval
. This powerful result is known as the Sturm
theorem. However, when the method is applied numerically, care must be taken
when computing the polynomial quotients to avoid spurious results due to roundoff
error.
As a specific application of Sturm functions toward finding polynomial roots, consider the function , plotted above, which has roots
,
,
, and 1.38879 (three of which are real).
The derivative is given by
, and the Sturm chain
is then given by
(7)
| |||
(8)
| |||
(9)
| |||
(10)
|
The following table shows the signs of and the number of sign changes
obtained for points separated by
.
1 | 1 | 3 | |||
0 | 1 | 1 | 1 | ||
2 | 1 | 1 | 1 | 1 | 0 |
This shows that
real roots lie in
,
and
real root lies in
.
Reducing the spacing to
gives the following table.
1 | 1 | 3 | |||
1 | 1 | 3 | |||
1 | 1 | 1 | 2 | ||
1 | 1 | 2 | |||
0.0 | 1 | 1 | 1 | ||
0.5 | 1 | 1 | 1 | ||
1.0 | 1 | 1 | 1 | 1 | |
1.5 | 1 | 1 | 1 | 1 | 0 |
2.0 | 1 | 1 | 1 | 1 | 0 |
This table isolates the three real roots and shows that they lie in the intervals ,
, and
. If desired, the intervals in which the roots fall
could be further reduced.
The Sturm functions satisfy the following conditions:
1. Two neighboring functions do not vanish simultaneously at any point in the interval.
2. At a null point of a Sturm function, its two neighboring functions are of different signs.
3. Within a sufficiently small interval surrounding a zero point of ,
is everywhere greater than zero or everywhere smaller
than zero.