A real polynomial is said to be stable if all its roots
lie in the left half-plane. The term "stable"
is used to describe such a polynomial because, in the theory of linear servomechanisms,
a system exhibits unforced time-dependent motion of the form
, where
is the root of a certain real
polynomial
.
A system is therefore mechanically stable iff
is a stable polynomial.
The polynomial
is stable iff
, and the irreducible
polynomial
is stable iff both
and
are greater than zero. The Routh-Hurwitz
theorem can be used to determine if a polynomial is stable.
Given two real polynomials and
, if
and
are stable, then so is their product
, and vice versa (Séroul 2000, p. 280). It therefore
follows that the coefficients of stable real polynomials are either all positive
or all negative (although this is not a sufficient
condition, as shown with the counterexample
). Furthermore, the values of a stable polynomial
are never zero for
and have the same sign as the coefficients of the polynomial.
It is possible to decide if a polynomial is stable without first knowing its roots using the following theorem due to Strelitz (1977). Let be a real polynomial with roots
,
...,
,
and construct
as the monic real polynomial of degree
having roots
for
. Then
is stable iff all coefficients of
and
are positive (Séroul 2000, p. 281).
For example, given the third-order polynomial , the sum-of-roots polynomial
is given by
(1)
|
Resolving the inequalities given by requiring that each coefficient of and
be greater than zero then gives the conditions for
to be stable as
,
,
.
Similarly, for the fourth-order polynomial , the sum-of-roots-polynomial is
(2)
|
so the condition for
to be stable can be resolved to
,
,
,
.
The fifth-order polynomial is
(3)
|
The following Wolfram Language code computes the sum-of-roots polynomial and inequalities obtained from the coefficients:
RootSumPolynomial[r_List, x_]:=Module[ {n = Length[r], i, j}, RootReduce@Collect[Expand[ Times@@((x - #)&/@Flatten[ Table[r[[i]] + r[[j]], {i, n}, {j, i+1, n}]]) ], x] ] RootSumPolynomial[p_?PolynomialQ, x_]:= RootSumPolynomial[RootList[p, x], x] RootList[p_?PolynomialQ, x_]:= x /. {ToRules[Roots[p==0, x, Cubics -> False, Quartics -> False ]]} RootSumInequalities[p_?PolynomialQ, x_]:= And @@ (# > 0& /@ Flatten[CoefficientList[#, x]& /@ {RootSumPolynomial[p, x], p}])
while the following reduces the inequalities to a minimal set in the cubic case:
Resolve[Exists[x, Element[(a | b | c | x), Reals], RootSumInequalities[x^3 + a x^2 + b x + c, x] ], {a, b, c}]