Steady-state error analysis tells you how accurately a control system tracks its desired output once all the transient dynamics have died out. If a system never quite reaches the reference input, that persistent gap is the steady-state error. This topic gives you the tools to predict that error, classify systems by their tracking ability, and design controllers that reduce it.
Steady-state error
Steady-state error () is the difference between the desired output and the actual output after the system has settled. It's the error that remains once all transient oscillations and exponential decays are gone.
Three factors determine :
- The input type: step (constant), ramp (linearly increasing), or parabolic (quadratically increasing)
- The system type: how many integrators (poles at ) exist in the open-loop transfer function
- The open-loop gain: the magnitude of the transfer function at low frequencies
The relationship between input type and system type is the core of this entire section. A system that perfectly tracks a step input may still accumulate error under a ramp input.
Error constants
Error constants quantify a system's ability to track each class of input. They're all computed from the open-loop transfer function by taking limits as .
Position error constant
predicts steady-state error for a step input:
If is finite, the system will have a nonzero steady-state error to a step. If , the error is zero.
Velocity error constant
predicts steady-state error for a ramp input:
The factor of in front "tests" whether the system has enough integration to keep up with a linearly growing input.
Acceleration error constant
predicts steady-state error for a parabolic input:
The factor tests for the two integrators needed to track a quadratic input with zero error.
For all three constants, a larger value means a smaller steady-state error for the corresponding input type.
System type
The system type equals the number of poles at the origin () in the open-loop transfer function . Each pole at the origin acts as a pure integrator (). The type number directly determines which inputs the system can track with zero steady-state error.
Type 0 systems
No poles at the origin. is finite, while and .
- Step input: finite, nonzero
- Ramp input: (error grows without bound)
- Parabolic input:
Example: has no factor in the denominator, so it's Type 0 with .
Type 1 systems
One pole at the origin. , is finite, .
- Step input:
- Ramp input: finite, nonzero
- Parabolic input:
Example: has one factor in the denominator, making it Type 1 with .

Type 2 systems
Two poles at the origin. , , is finite.
- Step input:
- Ramp input:
- Parabolic input: finite, nonzero
Example: is Type 2 with .
Ramp vs step inputs
Understanding the input signals is important because each one demands a different level of tracking capability from the system.
- Step input: a sudden jump to a constant value (e.g., setting a thermostat to 72°F). The system just needs to reach and hold a fixed reference.
- Ramp input: a reference that increases linearly with time (e.g., a satellite dish tracking a moving target at constant angular velocity). The system must continuously keep up with a changing setpoint.
- Parabolic input: a reference that increases quadratically (e.g., tracking an accelerating object). This is the most demanding and least common of the three.
Each input type is one degree harder to track than the last, which is why you need one additional integrator for each step up.
Steady-state error formulas
These formulas assume a unity feedback configuration and that the closed-loop system is stable. Always verify stability first; these formulas are meaningless for an unstable system.
Formula for step input
For a Type 0 system with , you get , or 10% of the step magnitude. For Type 1 or higher, , so .
Formula for ramp input
For a Type 1 system with , you get . For Type 0, , so . For Type 2 or higher, , so .
Formula for parabolic input
Same pattern: finite gives finite error (Type 2), gives infinite error (Type 0 or 1), and gives zero error (Type 3+).
Steady-state error in unity feedback systems
In a unity feedback system, , so the open-loop transfer function simplifies to just . This makes the analysis straightforward: you compute all error constants directly from using the limit formulas above.
The standard error formulas (, , ) are derived specifically for unity feedback. Most textbook problems assume this configuration unless stated otherwise.

Steady-state error in non-unity feedback systems
When , you can't just plug into the error constant formulas. You need to use the full open-loop transfer function in the limit calculations.
There's a subtlety here: the "error" in a non-unity feedback system isn't simply anymore. The error signal is , so what you're computing is the actuating error, not the true output error. To find the actual difference between the reference and the output, you may need to account for separately.
One common design approach is to shape so that , which makes the steady-state behavior match the unity feedback case for constant inputs.
Improving steady-state error
Increasing system type
The most direct way to reduce steady-state error is to add integrators to the forward path. Each integrator adds a pole at the origin, raising the system type by one.
- Type 0 → Type 1 (add one integrator): eliminates for step inputs
- Type 0 → Type 2 (add two integrators): eliminates for step and ramp inputs
Adding poles at origin
"Adding poles at the origin" and "adding integrators" mean the same thing. Multiplying the plant or controller transfer function by places a pole at .
The tradeoff: each added integrator contributes of phase lag, which reduces phase margin and can destabilize the system. You rarely see systems above Type 2 in practice because stability becomes very difficult to maintain.
Steady-state error vs transient response
There's a fundamental tension between steady-state accuracy and transient performance. Increasing gain to reduce tends to increase overshoot and can push the system toward instability. Adding integrators eliminates error for certain inputs but adds phase lag, which slows the response and increases overshoot.
Good control design requires balancing both. You don't just minimize steady-state error in isolation; you pick a controller that meets both your accuracy spec and your transient specs (rise time, settling time, overshoot).
Steady-state error in PID control
A PID controller has the form , where each term plays a distinct role in shaping both transient and steady-state behavior.
Effect of proportional gain
Increasing the proportional gain raises the open-loop gain, which increases the error constants and reduces for step inputs in Type 0 systems. But proportional control alone can never fully eliminate steady-state error for a step input in a Type 0 system; you'd need to get , which is impractical. Higher proportional gain also increases overshoot and can cause oscillations.
Effect of integral gain
The integral term adds a pole at the origin, effectively raising the system type by one. This is why integral action eliminates steady-state error for step inputs entirely, and reduces it for ramp inputs. It's the most important PID term for steady-state accuracy.
The cost: integral action introduces phase lag, which can slow the response and increase overshoot. Too much integral gain can also cause integral windup, where the integrator accumulates large error during saturation and causes excessive overshoot when the system recovers.
Effect of derivative gain
The derivative term does not affect steady-state error directly because its contribution goes to zero as . Its role is entirely in the transient response: it adds phase lead, which reduces overshoot and improves settling time. By improving transient behavior, a well-tuned derivative gain gives you more room to increase or without destabilizing the system, indirectly helping steady-state performance.