Routh–Hurwitz Stability Calculator
Enter the coefficients of a real polynomial to build its Routh array and count roots in the open right half-plane. The result also calls out zero pivots, complete zero rows, and roots at the origin.
Right-half-plane roots0
- Strictly Hurwitz stable
- Yes
- First-column sign sequence
- s^4: + → s^3: + → s^2: + → s^1: + → s^0: +
- Exceptional-case diagnosis
- Ordinary Routh-array construction.
Routh array
| Row | Column 1 | Column 2 | Column 3 |
|---|---|---|---|
| s^4 | 1 | 35 | 24 |
| s^3 | 10 | 50 | 0 |
| s^2 | 30 | 24 | 0 |
| s^1 | 42 | 0 | 0 |
| s^0 | 24 | 0 | 0 |
Zero tolerance: 1e-10 × the largest selected coefficient magnitude; positive normalization does not change the signs.
How to use this calculator
- Select the degree of the polynomial, then enter every coefficient from the highest power through the constant.
- Enter 0 for a missing power; do not shift the later coefficients to fill the gap.
- Read the sign changes in the first column to find the number of open right-half-plane roots.
- Check the displayed Routh array and exceptional-case diagnosis before relying on a boundary result.
How the Routh–Hurwitz test works
For a real polynomial P(s) = aₙsⁿ + aₙ₋₁sⁿ⁻¹ + … + a₁s + a₀, the Routh array organizes its coefficients into rows headed sⁿ through s⁰. The first two rows take alternating coefficients. Each later entry is calculated from the two rows above it:
R[i,j] = (R[i−1,0] × R[i−2,j+1] − R[i−2,0] × R[i−1,j+1]) ÷ R[i−1,0]
The number of sign changes down the completed first column equals the number of roots in the open right half-plane. A polynomial is strictly Hurwitz stable only when that count is zero, there is no root at the origin, and the construction has not reached a complete zero row that signals a boundary case.
Zero pivots and complete zero rows
A zero first entry in an otherwise nonzero row cannot be used as a divisor. The standard repair is a symbolic positive ε. This calculator keeps that symbol through the needed arithmetic and takes the signs in the limit ε → 0+; it does not use a small floating-point substitute for the final count.
A row of all zeros is different. The preceding row defines an auxiliary polynomial, using its entries as the coefficients of alternating powers. The zero row is replaced with the coefficients of that auxiliary polynomial’s derivative, and the construction continues. This often accompanies symmetric root structure and means the result is not a simple strict-stability certificate.
What moves the result and what it leaves out
The signs and relative sizes of the coefficients control the first-column signs. Multiplying every coefficient by a positive number changes no signs, so this tool positively normalizes the entered polynomial before building the array. It reports a tolerance of 1e−10 × max |aᵢ| and flags entered coefficients within that tolerance, because rounding near zero can change a classification.
The table classifies root location; it does not calculate the roots themselves, their damping ratios, or a stability margin. It is also not a complete control-system analysis: delays, nonlinearities, parameter uncertainty, and the dynamics omitted from a characteristic polynomial still need their own treatment.
Worked example
For P(s) = s⁴ + 10s³ + 35s² + 50s + 24, the first two rows are [1, 35, 24] and [10, 50, 0]. The remaining first-column entries are 30, 42, and 24, so the sequence is +, +, +, +, +. There are no sign changes, no zero constant term, and no complete zero row, so the polynomial is strictly Hurwitz stable.
By contrast, s⁴ + 2s² + 1 produces a complete zero row. The tool replaces it with the derivative of the auxiliary polynomial and reports the boundary case rather than calling the polynomial strictly stable.
Common questions
What do sign changes in the first column mean?
Each adjacent sign change in the completed first column represents one root in the open right half-plane. Those roots have positive real part, which makes the corresponding continuous-time mode grow rather than decay. The count does not give the roots’ exact positions.
How do I enter a polynomial with a missing term?
Enter zero for that coefficient and keep every later coefficient under its actual power. For example, enter a zero s³ coefficient for s⁴ + 5s² + 2, rather than moving 5 into the s³ field. The alternating layout of the first two Routh rows depends on those positions.
What does a complete row of zeros mean?
A complete zero row means the normal recurrence has reached a symmetric case. The preceding row forms an auxiliary polynomial, whose derivative supplies the replacement row. It can occur with imaginary-axis roots, but it does not alone identify every root or prove that all of them lie on that axis.
Why does the Routh table use epsilon?
When only the first entry of a row is zero, division would fail even though the rest of the row is meaningful. Replacing that entry with a symbolic positive epsilon lets the recurrence continue, and the signs are read as epsilon approaches zero from above. This avoids making the answer depend on an arbitrary tiny decimal.
Can multiplying the polynomial by a negative constant change the result?
No. A negative multiplier reverses every first-column sign together, so the places where adjacent signs differ stay the same. A positive multiplier likewise leaves the sign-change count unchanged; this calculator uses positive normalization only for numerical conditioning.