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}]