Chapter 7: Fundamentals of Stability Analysis
Lesson 1: Definitions of Stability for LTI Systems
This lesson introduces rigorous notions of stability for continuous-time linear time-invariant (LTI) systems described by ordinary differential equations and transfer functions. We distinguish internal stability (zero-input behavior) from input-output stability (BIBO stability) and show how both can be characterized using the poles of the transfer function. The tools developed here are the conceptual foundation for Routh–Hurwitz tests and root-locus design in later lessons.
1. Intuitive Notion of Stability for LTI Systems
In control engineering, a system is called stable if small disturbances or bounded inputs do not drive its output to infinity. For a single-input single-output (SISO) LTI system with input \( u(t) \) and output \( y(t) \), a typical model is an \( n \)th-order linear differential equation
\[ a_n \frac{d^n y(t)}{dt^n} + a_{n-1} \frac{d^{n-1} y(t)}{dt^{n-1}} + \cdots + a_1 \frac{dy(t)}{dt} + a_0 y(t) = \\ b_m \frac{d^m u(t)}{dt^m} + b_{m-1} \frac{d^{m-1} u(t)}{dt^{m-1}} + \cdots + b_0 u(t), \]
with constant real coefficients \( a_i, b_j \). Using Laplace transforms (from Chapters 2–4), the transfer function of the system is
\[ G(s) = \frac{Y(s)}{U(s)} = \frac{b_m s^m + b_{m-1} s^{m-1} + \cdots + b_0} {a_n s^n + a_{n-1} s^{n-1} + \cdots + a_0}. \]
The roots of the denominator polynomial \( p(s) = a_n s^n + \cdots + a_0 \) are called the poles of the system. As we will see, the locations of these poles in the complex \( s \)-plane completely determine the qualitative stability properties of the LTI system.
At a qualitative level, for continuous-time LTI systems:
- If all natural modes decay with time, the system is stable.
- If at least one natural mode grows without bound, the system is unstable.
- If some modes neither decay nor grow (pure oscillations) and none grow, we obtain marginal stability.
flowchart TD
A["Start: LTI model (ODE or transfer function)"]
--> B["Form characteristic polynomial p(s)"]
B --> C["Compute poles (roots of p(s))"]
C --> D["Check location of all poles"]
D -->|All poles in left half-plane| E["Asymptotically stable"]
D -->|"Some poles on imaginary axis, \nnone in right half-plane"| F["Marginally stable (more checks)"]
D -->|"At least one pole in right half-plane"| G["Unstable"]
2. Zero-Input Response and Internal Stability
To isolate the system's intrinsic dynamics, we first consider the zero-input case \( u(t) \equiv 0 \). The output then satisfies
\[ a_n \frac{d^n y(t)}{dt^n} + a_{n-1} \frac{d^{n-1} y(t)}{dt^{n-1}} + \cdots + a_0 y(t) = 0. \]
The Laplace transform (assuming zero input) yields \( p(s) Y(s) = \text{terms depending on initial conditions} \), where \( p(s) \) is the characteristic polynomial. The homogeneous (natural) solution has the general form
\[ y_h(t) = \sum_{k=1}^{r} \sum_{\ell=0}^{m_k - 1} c_{k,\ell} \, t^\ell e^{\lambda_k t}, \]
where \( \lambda_k \in \mathbb{C} \) are the distinct roots of \( p(s) \), \( m_k \) are their multiplicities, and the coefficients \( c_{k,\ell} \) depend on the initial conditions. Every mode is thus a polynomial in \( t \) times an exponential \( e^{\lambda_k t} \).
The internal (zero-input) stability of the equilibrium \( y(t) = 0 \) can be defined in a Lyapunov sense:
- The zero solution is stable if for every \( \varepsilon > 0 \) there exists \( \delta > 0 \) such that \( |y(0)| < \delta \) implies \( |y(t)| < \varepsilon \) for all \( t \ge 0 \).
- It is asymptotically stable if it is stable and, in addition, \( \lim_{t \to \infty} y(t) = 0 \) for all initial conditions sufficiently close to zero.
For LTI systems, these abstract definitions collapse to simple conditions on the poles \( \lambda_k \) because every solution is a linear combination of exponentials and polynomial-exponentials.
3. Pole-Based Definitions of Stability for Continuous-Time LTI Systems
Let \( \lambda_1,\dots,\lambda_r \) be the distinct poles of a finite-dimensional continuous-time LTI system (roots of the characteristic polynomial), with multiplicities \( m_1,\dots,m_r \). We define:
\[ \alpha_{\max} := \max_{k} \Re(\lambda_k). \]
Then the following statements hold for such LTI systems.
\[ \begin{aligned} &\text{(i) The system is asymptotically stable if and only if } \Re(\lambda_k) < 0 \text{ for all } k. \\ &\text{(ii) The system is unstable if there exists } k \text{ with } \Re(\lambda_k) > 0. \\ &\text{(iii) The system is marginally stable (in the LTI sense) if} \\ &\quad \Re(\lambda_k) \le 0 \text{ for all } k, \text{ at least one } \Re(\lambda_k) = 0, \\ &\quad \text{and every pole on the imaginary axis (}\Re(\lambda_k)=0\text{) is simple (no repeated pole).} \end{aligned} \]
The difference between cases (i) and (iii) is crucial:
- In case (i), \( y_h(t) \to 0 \) exponentially fast.
- In case (iii), \( y_h(t) \) may remain bounded but not converge to zero (e.g., pure sinusoidal oscillations).
- If a pole is repeated on the imaginary axis (e.g. \( s^2 + \omega^2 \) squared), terms like \( t e^{j\omega t} \) appear, whose amplitude grows without bound, so the system is unstable.
One can show (exercise in differential equations and linear algebra) that if all poles satisfy \( \Re(\lambda_k) < 0 \), then there exist constants \( M \ge 1 \) and \( \alpha > 0 \) such that for all \( t \ge 0 \)
\[ |y_h(t)| \le M e^{-\alpha t} \max_{0 \le j \le n-1} \left|y^{(j)}(0)\right|. \]
This is called exponential stability. For finite-dimensional continuous-time LTI systems, asymptotic stability and exponential stability are equivalent.
flowchart TD
A["Poles of G(s)"]
--> B["All Re(pole) < 0"]
A --> C["Some Re(pole) = 0, none > 0"]
A --> D["At least one Re(pole) > 0 or \nrepeated on imaginary axis"]
B --> E["Asymptotically \n(exponentially) stable"]
C --> F["Marginally stable \n(e.g. pure oscillations)"]
D --> G["Unstable \n(response grows without bound)"]
4. BIBO Stability and the Impulse Response
Internal stability looks at the zero-input response given initial conditions. In many control applications we care about input-output stability: do bounded inputs always produce bounded outputs? This motivates the notion of bounded-input bounded-output (BIBO) stability.
For a causal LTI system with impulse response \( g(t) \), the input-output relation is (for \( t \ge 0 \))
\[ y(t) = \int_0^t g(t-\tau) u(\tau)\, d\tau. \]
Definition (BIBO stability). The system is BIBO stable if for every input satisfying \( |u(t)| \le M_u \) for all \( t \ge 0 \), the corresponding output satisfies \( |y(t)| \le M_y \) for all \( t \ge 0 \), where \( M_y \) may depend on \( M_u \) but not on time.
A key result for causal LTI systems is:
\[ \text{The system is BIBO stable} \;\Longleftrightarrow\; \int_0^{\infty} |g(t)| \, dt < \infty. \]
Proof sketch. Assume \( \int_0^{\infty} |g(t)| dt < \infty \). For a bounded input with \( \|u\|_{\infty} := \sup_{t \ge 0} |u(t)| \le M_u \),
\[ \begin{aligned} |y(t)| &= \left|\int_0^t g(t-\tau) u(\tau)\, d\tau\right| \\ &\le \int_0^t |g(t-\tau)|\, |u(\tau)|\, d\tau \\ &\le \|u\|_{\infty} \int_0^t |g(t-\tau)|\, d\tau \le \|u\|_{\infty} \int_0^{\infty} |g(\sigma)|\, d\sigma. \end{aligned} \]
Thus we can take \( M_y = \|u\|_{\infty} \int_0^{\infty} |g(\sigma)|\, d\sigma \), which is finite by assumption. The converse direction can also be shown by constructing sequences of bounded inputs that exploit non-integrable impulse responses.
For rational transfer functions \( G(s) \) with no pole-zero cancellations and all poles strictly in the left half-plane \( \Re(s) < 0 \), the impulse response is a finite sum of decaying exponentials, hence absolutely integrable, and the system is BIBO stable. Conversely, if any pole lies in the right half-plane, the impulse response contains terms like \( e^{\alpha t} \) with \( \alpha > 0 \), so \( \int_0^{\infty} |g(t)| dt = \infty \) and the system is BIBO unstable.
5. Internal vs BIBO Stability — Examples
We now illustrate the concepts on simple examples that you can verify using Laplace transforms and time-domain solutions.
Example 1 (Stable first-order system).
Consider \( \dot{y}(t) + 2 y(t) = u(t) \). The transfer function is
\[ G(s) = \frac{1}{s + 2}. \]
There is a single pole at \( s = -2 \), which lies in the open left half-plane. The zero-input response is \( y_h(t) = C e^{-2 t} \), which decays to zero, so the system is asymptotically (and exponentially) stable. The impulse response is \( g(t) = e^{-2 t} \mathbf{1}_{\{t \ge 0\}} \), and
\[ \int_0^{\infty} |g(t)| dt = \int_0^{\infty} e^{-2 t} dt = \frac{1}{2} < \infty, \]
so the system is also BIBO stable.
Example 2 (Unstable first-order system).
Consider \( \dot{y}(t) - y(t) = u(t) \). Now \( G(s) = 1/(s - 1) \) with pole at \( s = 1 \). The zero-input response \( y_h(t) = C e^{t} \) grows unbounded unless \( C = 0 \), so the system is internally unstable. The impulse response \( g(t) = e^{t} \mathbf{1}_{\{ t \ge 0 \}} \) is not integrable on \( [0,\infty) \), and the system is not BIBO stable.
Example 3 (Undamped oscillator — marginal internal stability).
Consider the ideal mass-spring system \( \ddot{y}(t) + \omega_0^2 y(t) = u(t) \). The transfer function is
\[ G(s) = \frac{1}{s^2 + \omega_0^2}. \]
The poles are \( s = \pm j \omega_0 \), lying on the imaginary axis and simple (non-repeated). The zero-input response is \( y_h(t) = A \cos(\omega_0 t) + B \sin(\omega_0 t) \), which is bounded but does not converge to zero unless \( A = B = 0 \). Thus the system is internally marginally stable.
However, it is not BIBO stable. For instance, if the input is a sinusoid at the natural frequency \( u(t) = \sin(\omega_0 t) \), resonance leads to a response that grows unbounded in amplitude (a phenomenon you can derive via Laplace transforms or the method of undetermined coefficients). Therefore, this system is marginally stable internally but BIBO unstable.
6. Python Implementation — Checking Pole Locations
In robotic control (e.g., joint position control of a robot arm),
continuous-time models are often analyzed using Python libraries such as
numpy, scipy.signal, and the
python-control package. Below is a small utility that
checks the poles of a transfer function and classifies stability.
import numpy as np
def classify_ct_lti_from_den(den_coeffs, tol=1e-9):
"""
Classify a continuous-time LTI system given the denominator coefficients
of its transfer function G(s) = N(s) / D(s).
den_coeffs: list or array [a_n, a_{n-1}, ..., a_0]
tol: numerical tolerance for deciding whether Re(pole) is zero.
"""
den_coeffs = np.asarray(den_coeffs, dtype=float)
roots = np.roots(den_coeffs) # poles of G(s)
real_parts = roots.real
max_real = np.max(real_parts)
# Check for poles on the imaginary axis within tolerance
on_imag_axis = np.abs(real_parts) <= tol
if max_real < -tol:
stability = "asymptotically stable"
elif max_real > tol:
stability = "unstable"
else:
# Some poles are near the imaginary axis, none clearly in right half-plane
stability = "marginally stable (check multiplicities and resonance)"
return roots, stability
if __name__ == "__main__":
# Example: stable system G(s) = 1 / (s^2 + 3 s + 2)
den = [1.0, 3.0, 2.0]
poles, stability = classify_ct_lti_from_den(den)
print("Poles:", poles)
print("Classification:", stability)
In robotics, you would typically obtain den from the
dynamic model of the joint or link (e.g. via linearization and Laplace
transform), then use functions like the above for quick stability
checks. The python-control library can automate pole
computation and plotting:
import control as ct
num = [1.0]
den = [1.0, 3.0, 2.0]
G = ct.TransferFunction(num, den)
print("Poles from python-control:", ct.pole(G))
7. C++ Implementation — Eigen Polynomial Solver
In C++-based robotics stacks (for example, ROS control frameworks), the
Eigen library is widely used for linear algebra. Eigen
provides a polynomial solver that can approximate the poles of an LTI
system given the denominator coefficients.
#include <iostream>
#include <Eigen/Core>
#include <Eigen/Polynomial>
int main() {
// Example: G(s) = 1 / (s^2 + 3 s + 2)
Eigen::VectorXd den(3);
den << 1.0, 3.0, 2.0; // coefficients of s^2 + 3 s + 2
Eigen::PolynomialSolver<double, Eigen::Dynamic> solver;
solver.compute(den);
auto roots = solver.roots();
bool asymptoticallyStable = true;
for (int i = 0; i < roots.size(); ++i) {
double realPart = roots[i].real();
std::cout << "pole[" << i << "] = " << roots[i] << "\n";
if (realPart >= 0.0) {
asymptoticallyStable = false;
}
}
if (asymptoticallyStable) {
std::cout << "System is asymptotically stable.\n";
} else {
std::cout << "System is NOT asymptotically stable.\n";
}
return 0;
}
In a robotics application, the polynomial coefficients would come from the linearized dynamics (e.g., linearization of a robot joint model around an operating point). Similar code can be embedded inside simulation tools or controller design utilities.
8. Java Implementation — Apache Commons Math
Java-based robotic frameworks (such as some mobile robotics or FRC control stacks) can use the Apache Commons Math library for numerical computations, including polynomial root finding.
import org.apache.commons.math3.analysis.polynomials.PolynomialFunction;
import org.apache.commons.math3.analysis.solvers.LaguerreSolver;
import org.apache.commons.math3.complex.Complex;
public class StabilityChecker {
public static void main(String[] args) {
// Example: G(s) = 1 / (s^2 + 3 s + 2)
// Coefficients in descending powers: a_n, ..., a_0
double[] den = {1.0, 3.0, 2.0};
LaguerreSolver solver = new LaguerreSolver();
Complex[] roots = solver.solveAllComplex(den, 0.0);
boolean asymptoticallyStable = true;
for (Complex r : roots) {
double realPart = r.getReal();
System.out.println("pole = " + r);
if (realPart >= 0.0) {
asymptoticallyStable = false;
}
}
if (asymptoticallyStable) {
System.out.println("System is asymptotically stable.");
} else {
System.out.println("System is NOT asymptotically stable.");
}
}
}
Such utilities can be integrated with higher-level Java robotics libraries (for example, WPILib in FRC robots) to automatically verify that controller parameters keep the closed-loop poles in the left half-plane.
9. MATLAB/Simulink and Wolfram Mathematica Implementations
9.1 MATLAB/Simulink (Control System Toolbox)
MATLAB is standard in control and robotics. The Control System Toolbox can construct transfer functions, compute poles, and simulate responses.
% Define transfer function G(s) = 1 / (s^2 + 3 s + 2)
num = 1;
den = [1 3 2];
G = tf(num, den);
% Poles and stability check
p = pole(G);
isAsymptoticallyStable = all(real(p) < 0);
disp('Poles of G(s):');
disp(p);
if isAsymptoticallyStable
disp('System is asymptotically stable.');
else
disp('System is NOT asymptotically stable.');
end
% Time response check (e.g., step response)
figure;
step(G);
grid on;
title('Step response of G(s) = 1 / (s^2 + 3 s + 2)');
In Simulink, the same system can be represented by a
Transfer Fcn block with numerator and denominator set as
above, connected to a Step input and a Scope.
Observing a decaying step response corresponds to asymptotic stability.
9.2 Wolfram Mathematica
Wolfram Mathematica has built-in support for transfer functions and pole analysis:
(* Define continuous-time transfer function G(s) = 1 / (s^2 + 3 s + 2) *)
num = {1};
den = {1, 3, 2};
s =.; (* clear any previous definitions *)
G = TransferFunctionModel[num/den, s];
poles = Pole[G];
stableQ[roots_List] := Max[Re[roots]] < 0;
Print["Poles: ", poles];
Print["Asymptotically stable? ", stableQ[poles]];
(* Optional: visualize time response *)
stepResp = OutputResponse[G, UnitStep[t], {t, 0, 10}];
Plot[Evaluate[stepResp], {t, 0, 10}, PlotRange -> All,
AxesLabel -> {"t", "y(t)"},
PlotLabel -> "Step response of G(s) = 1 / (s^2 + 3 s + 2)"];
Such symbolic and numeric tools are very useful in robotic control design, where families of controllers can be analyzed and tuned symbolically before numerical implementation on embedded hardware.
10. Problems and Solutions
The following problems reinforce the formal definitions of stability and their relationship to pole locations and impulse responses.
Problem 1 (Scalar LTI system and stability types). Consider the scalar LTI system \( \dot{y}(t) = a y(t) \), with constant \( a \in \mathbb{R} \) and zero input. Classify the stability of the equilibrium \( y(t) = 0 \) depending on the sign of \( a \).
Solution. The solution is
\[ y(t) = y(0) e^{a t}. \]
- If \( a < 0 \), then \( e^{a t} \to 0 \) as \( t \to \infty \), so \( y(t) \to 0 \) for all initial conditions. The equilibrium is asymptotically (exponentially) stable.
- If \( a = 0 \), then \( y(t) = y(0) \) for all time. The equilibrium is stable (small perturbations stay small) but not asymptotically stable, because the state does not converge back to zero unless \( y(0) = 0 \).
- If \( a > 0 \), then \( e^{a t} \to \infty \) as \( t \to \infty \), so any nonzero initial condition yields an unbounded response. The equilibrium is unstable.
In terms of poles, the transfer function would be \( G(s) = 1/(s - a) \) with pole \( s = a \), and the classification coincides with the left-half-plane, imaginary-axis, or right-half-plane position of this pole.
Problem 2 (Pole locations and internal stability). The characteristic polynomial of an LTI system is \( p(s) = s^3 + 4 s^2 + 5 s + 2 \). Show that the system is asymptotically stable by examining its poles.
Solution. We factor the polynomial:
\[ p(s) = (s + 1)(s^2 + 3 s + 2) = (s + 1)(s + 1)(s + 2). \]
The poles are \( s = -1 \) (double pole) and \( s = -2 \). All have strictly negative real parts, so the system is asymptotically (and exponentially) stable. Even though \( s = -1 \) is repeated, it lies in the left half-plane, so the corresponding terms \( t e^{-t} \) remain bounded and decay to zero.
Problem 3 (Impulse response and BIBO stability). Consider a system with impulse response \( g(t) = t e^{-t} \mathbf{1}_{\{ t \ge 0 \}} \). Determine whether the system is BIBO stable by computing \( \displaystyle \int_0^{\infty} |g(t)| dt \).
Solution. For \( t \ge 0 \), we have \( |g(t)| = t e^{-t} \), so
\[ \int_0^{\infty} |g(t)| dt = \int_0^{\infty} t e^{-t} dt. \]
Using integration by parts with \( u = t \), \( dv = e^{-t} dt \), \( du = dt \), \( v = - e^{-t} \), we get
\[ \begin{aligned} \int_0^{\infty} t e^{-t} dt &= \left[ -t e^{-t} \right]_0^{\infty} + \int_0^{\infty} e^{-t} dt \\ &= 0 + 1 = 1. \end{aligned} \]
The integral is finite, so the system is BIBO stable.
Problem 4 (Undamped oscillator and BIBO instability). Consider again the undamped oscillator \( \ddot{y}(t) + \omega_0^2 y(t) = u(t) \). Show that there exists a bounded input such that the output is unbounded, hence the system is BIBO unstable.
Solution. The transfer function is \( G(s) = 1/(s^2 + \omega_0^2) \). Consider the input \( u(t) = \sin(\omega_0 t) \), which is bounded for all time. The steady-state particular solution of the forced system can be computed by substituting \( y_p(t) = A t \cos(\omega_0 t) + B t \sin(\omega_0 t) \) (a standard ansatz for resonance). One finds a term proportional to \( t \cos(\omega_0 t) \) or \( t \sin(\omega_0 t) \), whose amplitude grows without bound as \( t \to \infty \). Thus a bounded input produces an unbounded output, and the system is not BIBO stable.
Problem 5 (Internal vs BIBO stability for proper rational LTI systems). Let \( G(s) \) be a proper rational transfer function with no pole-zero cancellations and all poles in the open left half-plane. Argue why the corresponding LTI system is both internally asymptotically stable and BIBO stable.
Solution. If all poles of \( G(s) \) lie in the open left half-plane, then each mode in the homogeneous solution \( y_h(t) \) is of the form \( t^\ell e^{\lambda t} \) with \( \Re(\lambda) < 0 \), so \( y_h(t) \to 0 \) for any initial condition. Hence the system is internally asymptotically stable. Because the system is proper and has no pole-zero cancellations, its impulse response is a finite sum of decaying exponentials and polynomial-exponentials with exponents having negative real part. Such functions are absolutely integrable on \( [0,\infty) \), so
\[ \int_0^{\infty} |g(t)| dt < \infty. \]
By the LTI BIBO stability theorem, the system is BIBO stable. This equivalence between internal asymptotic stability and BIBO stability is a key property of finite-dimensional proper LTI systems without cancellations.
11. Summary
In this lesson we introduced formal definitions of stability for continuous-time LTI systems:
- Internal (Lyapunov) stability and asymptotic stability of the zero solution, defined via the zero-input response and the behavior of homogeneous solutions.
- BIBO stability, defined via bounded-input bounded-output behavior and characterized (for LTI systems) by absolute integrability of the impulse response.
- Pole-based characterizations: asymptotic stability when all poles lie in the open left half-plane, marginal stability when poles lie in the closed left half-plane with simple imaginary-axis poles, and instability when any pole lies in the right half-plane or when there are repeated imaginary-axis poles.
We also demonstrated how to implement stability checks in Python, C++, Java, MATLAB/Simulink, and Wolfram Mathematica, with an eye toward robotic control applications. In the next lessons of this chapter we will develop systematic algebraic criteria (Routh–Hurwitz) to decide pole locations from polynomial coefficients without explicitly computing roots.
12. References
- Routh, E.J. (1877). A Treatise on the Stability of a Given State of Motion. London: Macmillan.
- Lyapunov, A.M. (1892). General Problem of the Stability of Motion. Doctoral dissertation, University of Kharkov. (English translations in various later publications.)
- Hurwitz, A. (1895). Über die Bedingungen, unter welchen eine Gleichung nur Wurzeln mit negativen reellen Teilen besitzt. Mathematische Annalen, 46(2), 273–284.
- Kalman, R.E., & Bertram, J.E. (1960). General synthesis procedure for computer control of single-loop and multiloop linear systems. Transactions of the AIEE, Part II: Applications and Industry, 79(4), 559–575.
- Zames, G. (1966). On the input-output stability of time-varying nonlinear feedback systems, Part I: Conditions derived using concepts of loop gain, conicity, and positivity. IEEE Transactions on Automatic Control, 11(2), 228–238.
- Vidyasagar, M. (1978). Nonlinear Systems Analysis. Prentice-Hall. (Chapters on input-output stability and LTI systems.)
- Desoer, C.A., & Vidyasagar, M. (1975). Feedback Systems: Input-Output Properties. Academic Press.
- Kailath, T. (1980). Linear Systems. Prentice-Hall.
- Sontag, E.D. (1998). Mathematical Control Theory: Deterministic Finite Dimensional Systems. Springer.
- Ogata, K. (2010). Modern Control Engineering, 5th ed. Prentice-Hall. (Classical references on LTI stability and pole placement.)