Enter the coefficients of a discrete-time (digital) control system's characteristic polynomial and the tool builds the Jury table automatically, deciding whether every root lies inside the unit circle of the complex z-plane. See how stability is found without solving for the roots, shown on a z-plane plot and a root-magnitude chart.
Parameters
Set the coefficients of the discrete-time characteristic polynomial P(z) = z⁴ + a₃z³ + a₂z² + a₁z + a₀ (leading coefficient normalised to 1).
Coefficient a₃ (z³ term)
Coefficient a₂ (z² term)
Coefficient a₁ (z¹ term)
Coefficient a₀ (constant term)
Constant term. If |a₀| ≥ 1 the necessary condition C3 fails and the system is unstable
Results
—
P(1)
—
P(−1)
—
|a₀|
—
Stability verdict
—
Max root magnitude |z|max
—
Roots inside unit circle
—
Complex z-plane — roots and the unit circle
The unit circle |z|=1 is the stability boundary. Roots inside (green) mean stable; roots outside (red) mean unstable. The dots are the roots of the characteristic polynomial P(z).
Root magnitudes |z|
Root layout in the z-plane
Theory & Key Formulas
$$P(z)=z^4+a_3 z^3+a_2 z^2+a_1 z+a_0$$
The discrete-time characteristic polynomial. The leading coefficient is normalised to 1. The system is stable if every root z lies inside the unit circle, |z|<1.
$$P(1)\gt 0,\quad P(-1)\gt 0,\quad |a_0|\lt 1$$
Necessary conditions for a 4th-order (even-order) polynomial. P(1)=1+a₃+a₂+a₁+a₀, P(−1)=1−a₃+a₂−a₁+a₀. Together with the Jury inner conditions |b₀|>|b₃| and |c₀|>|c₂|, satisfying all of them means the system is stable.
In digital control the stable region is the interior of the unit circle in the z-plane, not the left half (Re<0) of the s-plane. This is the essential difference between the Jury test and the Routh-Hurwitz test.
What is the Jury Stability Test Simulator?
🙋
The "Jury stability test" sounds a lot like Routh-Hurwitz. What's the difference?
🎓
Roughly speaking, if Routh-Hurwitz is for "continuous-time systems", Jury is the stability test for "discrete-time systems". An analog control system flows in continuous time, but digital control running on a microcontroller or PC samples and updates values at a fixed period. The characteristic equation of this "sampled-data control" is written in the variable z rather than s. The Jury test deals with that polynomial in z.
🙋
When the variable changes from s to z, does the stability condition change too?
🎓
That is the most important point. For a continuous-time system, "stable if every pole lies in the left half of the s-plane (negative real part)", right? But for a discrete-time system the stable region becomes "the interior of the unit circle |z|=1 in the z-plane". A discrete-time response is a sum of poles z raised to the power n, so if |z|<1, |z| to the n decays to 0 over time, and if |z|>1 it diverges. So whether all roots sit inside the unit circle is what decides it.
🙋
Then I could just solve for all the roots and check whether each magnitude is below 1, right?
🎓
In principle yes, but solving 4th- or 5th-order polynomials by hand every time is hard. That is where Jury comes in. First look at the simple necessary conditions. For the example on the left, P(z)=z⁴−0.8z³+0.31z²−0.128z+0.024, we get P(1)=1−0.8+0.31−0.128+0.024=0.406>0, P(−1)=2.262>0, and |a₀|=0.024<1. All three hold. These conditions always hold for a stable system, so if even one fails you know immediately it is unstable.
🙋
If all the necessary conditions pass, can I already call it stable?
🎓
No, the necessary conditions alone are not enough. Next you build the "Jury table", a triangular table, from the coefficient row and its reverse using 2×2 determinants. For a 4th-order system two extra rows appear, and you check the inner conditions |b₀|>|b₃| and |c₀|>|c₂| by comparing the magnitudes of their first and last elements. Only when all three necessary conditions and both inner conditions hold is the system stable. The example has roots 0.5, 0.3 and ±0.4i — all with magnitude below 1, so it is stable.
🙋
What happens if a root lands exactly on the unit circle?
🎓
Good question. When a root's magnitude is exactly 1, that is the "marginally stable" state — it neither decays nor diverges but oscillates with constant amplitude. In a discrete system, picture the same magnitude value coming out at every sample. In practice marginal stability is treated almost like instability; you leave margin in the coefficients to push the roots firmly inside the circle. When a root comes within 0.001 of the unit circle, this tool detects it and shows the verdict in yellow as "marginal (boundary)".
Frequently Asked Questions
The Jury test decides whether a discrete-time (sampled-data, digital) control system is stable using only the coefficients of its characteristic polynomial. A discrete-time system is stable only if every root of the characteristic polynomial P(z) lies inside the unit circle |z|=1 of the complex z-plane. The Jury test builds a triangular table from the coefficients and checks a set of necessary conditions plus inner conditions, so it can confirm that all roots are inside the unit circle without solving for them. It is the discrete-time counterpart of the Routh-Hurwitz test for continuous-time systems.
The response of a discrete-time system is a sum of terms in z raised to the power n, and each term grows or decays as |z| to the n. If the magnitude |z| of a root is less than 1, |z| to the n converges to 0 over time and the response decays; if |z| is greater than 1 it diverges. So stability requires every pole to lie inside the unit circle |z|<1. For continuous-time systems the stable region was the left half of the s-plane; for digital control it becomes the interior of the unit circle in the z-plane. This is the key difference between continuous and discrete stability regions.
For a polynomial P(z) normalised so the leading coefficient is 1, three necessary conditions are checked first. First, P(1)>0 — the value of P at z=1 is positive. Second, for an even-order polynomial, P(-1)>0 — the value of P at z=-1 is positive. Third, |a0|<1 — the magnitude of the constant term is smaller than the leading coefficient (which is 1). These hold whenever the system is stable, so if even one is violated the system is immediately unstable. Conversely, satisfying all necessary conditions is not enough; the Jury table inner conditions must also be checked.
Starting from a row of coefficients Row1=[a0,a1,a2,a3,1] and its reverse Row2, successive rows are formed using 2x2 determinants of the outer pair of elements from two adjacent rows. For a 4th-order polynomial this yields two extra rows, and the magnitudes of their first and last elements give the two inner conditions |b0|>|b3| and |c0|>|c2|. If the three necessary conditions and the two inner conditions all hold, every root lies inside the unit circle and the discrete-time system is stable. This tool also computes the actual roots with the Durand-Kerner method so you can see the basis of the verdict.
Real-World Applications
Digital controller design: PID controllers, motor drivers and the current-control loops of power supplies that run on a microcontroller or FPGA are all discrete-time systems that update their values once per sampling period. Their closed-loop characteristic equations become polynomials in z, and stability is confirmed with the Jury test. In particular, a longer sampling period tends to push poles outside the unit circle, so engineers keep the sampling period and control gain as variables, solve the Jury conditions as inequalities, and obtain the range of stable parameters.
Verifying the digitisation (discretisation) of continuous systems: It is very common to replace a controller designed in the analog domain with a digital implementation via the Tustin transform or a zero-order hold. Because discretisation changes the stable region from the left half-plane to the interior of the unit circle, a design that was stable in continuous time can become unstable after discretisation. The Jury test is a quick way to verify whether the discretised characteristic polynomial really fits inside the unit circle.
Checking the stability of digital filters: The denominator polynomial of an IIR (infinite impulse response) filter's transfer function will also make the output diverge unless its roots are inside the unit circle. In audio processing and communications digital signal processing, engineers use the Jury conditions to confirm that the denominator roots remain inside the unit circle even after the coefficients are quantised. It guards against the accident where fixed-point rounding pushes a pole outside the circle.
Control engineering education and a sanity check before CAE: The Jury test is also useful as a "first read on the answer" before solving for the discrete-time poles numerically. Checking the Jury conditions before computing roots in MATLAB or Python tells you immediately whether the system is stable or unstable. Conversely, if the numerically computed roots contradict the Jury verdict, it is a sanity check that points to a coefficient input error or a discretisation modelling mistake.
Common Misconceptions and Pitfalls
The most common pitfall is carrying continuous-time intuition straight over to discrete-time systems. For continuous-time systems there is an image that "the closer a pole is to the origin, the faster and more stable the response". But the z-plane of a discrete-time system works differently. The stable region is the interior of the unit circle, the origin z=0 corresponds to the fastest possible (essentially one-sample) response, and the closer to the circumference |z|=1 the slower the decay. Reading the z-plane with the s-plane sense of "farther left is better" leads to wrong judgements. In the z-plane you must read it as "closer to the origin is better".
Next, the belief that "all-positive coefficients means stable". This is misunderstood for Routh-Hurwitz too, but in the Jury test the sign of the coefficients is neither a sufficient nor a necessary condition for stability. The coefficients of a stable discrete-time polynomial can be negative (as in the example on the left, a₃=−0.8 and a₁=−0.128), and conversely all-positive coefficients can still leave roots outside the unit circle. Always check both the necessary conditions P(1)>0, P(−1)>0, |a₀|<1 and the Jury inner conditions. Trusting the coefficient signs alone is dangerous.
Finally, the effect of sampling period and coefficient quantisation. The Jury test is exact for a given polynomial, but the polynomial itself depends strongly on the sampling period. A longer period moves the discrete poles outside the unit circle for the same continuous system and destabilises it. Moreover, a digital implementation rounds the coefficients to a finite number of bits, so a design that is stable on paper can have roots outside the circle once the coefficients are quantised. Do not aim to "just barely" satisfy the Jury conditions; design with enough margin in the coefficients and sampling period so the roots sit well inside the unit circle.
How to Use
Enter polynomial coefficients a₃, a₂, a₁, a₀ for your discrete-time characteristic equation P(z) = a₃z³ + a₂z² + a₁z + a₀.
Click Simulate to construct the Jury stability table, evaluating determinant ratios at each row.
Review P(1) and P(−1) evaluations, verify |a₀| < |a₃|, and confirm all Jury rows satisfy stability criterion.
Observe maximum root magnitude |z|max and verdict (Stable if all roots inside unit circle, Unstable otherwise).
Worked Example
For a motor speed controller with characteristic P(z) = z³ − 1.8z² + 1.05z − 0.2, coefficients are a₃=1, a₂=−1.8, a₁=1.05, a₀=−0.2. P(1)=0.05, P(−1)=−3.65, |a₀|=0.2 < |a₃|=1 passes initial check. Jury table rows compute ratios: row 2 determinant = 0.61, row 3 determinant = 0.38. All Jury ratios positive and < 1 confirm stability. Maximum root magnitude |z|max = 0.92 lies inside unit circle, verdict: Stable for closed-loop operation.
Practical Notes
If |a₀| ≥ |a₃|, system is immediately unstable—critical for digital filter design where leading coefficient scaling affects pole placement.
P(1)=0 indicates marginal stability at z=1; P(−1)=0 suggests oscillation modes near z=−1 requiring gain adjustment.
Use this for tuning PID discrete-time controllers: vary a₂, a₁ coefficients and re-simulate until all Jury determinants remain strictly positive and less than unity.
Third-order Jury test avoids numerical root-finding errors present in polynomial solvers for embedded DSP implementations.