Chapter 4: Transfer Functions and Block Diagrams
Lesson 2: Poles, Zeros, and System Modes
This lesson develops a rigorous link between the algebraic structure of transfer functions and the time-domain behavior of linear time-invariant (LTI) systems. We introduce formal definitions of poles and zeros, show how poles generate system modes via differential equations and Laplace transforms, and illustrate how these concepts appear in robotics-relevant models and software libraries (Python, C++, Java, MATLAB/Simulink, and Wolfram Mathematica).
1. Conceptual Overview
From the previous lesson, a single-input single-output (SISO) LTI system with zero initial conditions is characterized in the Laplace domain by a transfer function \( G(s) = \dfrac{Y(s)}{U(s)} \), relating the Laplace transforms of output \( Y(s) \) and input \( U(s) \). For a typical physical system, \( G(s) \) is a rational function:
\[ G(s) \;=\; \dfrac{Y(s)}{U(s)} \;=\; \dfrac{b_m s^m + b_{m-1} s^{m-1} + \dots + b_1 s + b_0} {s^n + a_{n-1} s^{n-1} + \dots + a_1 s + a_0}, \quad n \ge m,\; a_n = 1. \]
The denominator polynomial encodes the autonomous dynamics of the system; its roots are called poles and are directly responsible for the characteristic modes of the time response (exponentials and oscillations). The numerator polynomial encodes how the input excites those modes and introduces zeros, which are frequencies or growth rates that are suppressed in the input-output behavior.
The conceptual pipeline from physical model to poles, zeros, and modes can be summarized as:
flowchart TD
A["Physical laws (mechanical, electrical, etc.)"] --> B["Linear ODE model with constant coefficients"]
B --> C["Apply Laplace transform (zero initial conditions)"]
C --> D["Obtain transfer function G(s) = Y(s)/U(s)"]
D --> E["Factor denominator: roots are poles"]
D --> F["Factor numerator: roots are zeros"]
E --> G["Poles → exponential / oscillatory modes in time"]
F --> H["Zeros → attenuated or cancelled input directions"]
2. Formal Definitions of Poles, Zeros, and System Order
Let the transfer function be expressed in factorized form (assuming real coefficients and cancellation of any common factors between numerator and denominator):
\[ G(s) = K \; \dfrac{\displaystyle\prod_{i=1}^{n_z} (s - z_i)^{\mu_i}} {\displaystyle\prod_{j=1}^{n_p} (s - p_j)^{\nu_j}}, \quad \mu_i, \nu_j \in \mathbb{N}. \]
- A complex number \( p_j \in \mathbb{C} \) is a pole of \( G(s) \) of multiplicity \( \nu_j \) if \( G(s) \) can be written as above and no higher integer power of \( (s - p_j) \) divides the denominator.
- A complex number \( z_i \in \mathbb{C} \) is a zero of \( G(s) \) of multiplicity \( \mu_i \) if \( G(z_i) = 0 \) and \( (s - z_i)^{\mu_i} \) is the highest power dividing the numerator.
- The system order (for a minimal realization) is \( n = \sum_{j=1}^{n_p} \nu_j \), the degree of the denominator.
- The relative degree is \( r = \sum_{j=1}^{n_p} \nu_j - \sum_{i=1}^{n_z} \mu_i \). For a proper transfer function we have \( r \ge 0 \), and for a strictly proper transfer function \( r \ge 1 \).
Throughout this course we usually assume a minimal, strictly proper model, i.e., there are no exact cancellations between poles and zeros and the numerator degree is strictly less than the denominator degree. Non-minimal models lead to hidden modes, which we will revisit later in this lesson.
3. Differential Equations, Characteristic Polynomial, and Modes
3.1 Homogeneous solution and characteristic polynomial
Consider an nth-order linear ODE with constant coefficients, as obtained in previous chapters:
\[ a_n \dfrac{d^n y(t)}{dt^n} + a_{n-1} \dfrac{d^{n-1} y(t)}{dt^{n-1}} + \dots + a_1 \dfrac{dy(t)}{dt} + a_0 y(t) \;=\; b_m \dfrac{d^m u(t)}{dt^m} + \dots + b_0 u(t). \]
The homogeneous equation (zero input \( u(t) \equiv 0 \)) is
\[ a_n \dfrac{d^n y_h(t)}{dt^n} + a_{n-1} \dfrac{d^{n-1} y_h(t)}{dt^{n-1}} + \dots + a_1 \dfrac{dy_h(t)}{dt} + a_0 y_h(t) = 0. \]
Seeking exponential solutions \( y_h(t) = e^{s t} \) gives the characteristic polynomial:
\[ a_n s^n + a_{n-1} s^{n-1} + \dots + a_1 s + a_0 = 0. \]
Its roots \( s = p_j \) are exactly the poles of the transfer function \( G(s) \) (for zero initial conditions) derived via the Laplace transform. A fundamental result from ODE theory states that the homogeneous solution can be written as
\[ y_h(t) = \sum_{j=1}^{n_p} \sum_{\ell=0}^{\nu_j - 1} C_{j,\ell} \, t^{\ell} e^{p_j t}, \quad C_{j,\ell} \in \mathbb{C}, \]
where \( p_j \) are the distinct roots (poles) with multiplicities \( \nu_j \). Each term \( t^{\ell} e^{p_j t} \) is called a mode of the system.
3.2 Impulse response and partial fraction expansion
The impulse response \( g(t) \) of a strictly proper system is obtained by inverse Laplace transform of \( G(s) \). Using partial fractions, we can write
\[ G(s) = \sum_{j=1}^{n_p} \sum_{\ell=1}^{\nu_j} \dfrac{r_{j,\ell}}{(s - p_j)^{\ell}}, \quad r_{j,\ell} \in \mathbb{C}, \]
and recall the Laplace transform pair
\[ \mathcal{L}^{-1}\!\left\{\dfrac{1}{(s - p_j)^{\ell}}\right\} = \dfrac{t^{\ell - 1}}{(\ell - 1)!} e^{p_j t} u(t), \quad t \ge 0, \]
where \( u(t) \) is the unit-step function. Therefore the impulse response is
\[ g(t) = \sum_{j=1}^{n_p} \sum_{\ell=1}^{\nu_j} r_{j,\ell} \, \dfrac{t^{\ell - 1}}{(\ell - 1)!} e^{p_j t} u(t). \]
Conclusion: every pole \( p_j \) of the transfer function generates one or more modes of the form \( t^{\ell-1} e^{p_j t} \) in the time-domain behavior. The numerator (zeros) affects the coefficients \( r_{j,\ell} \) but not the exponents \( p_j \).
4. Classification of Modes by Pole Location
Let a pole be denoted by \( p = \sigma + j\omega \). The associated basic mode is \( e^{p t} = e^{\sigma t} e^{j\omega t} \), and any real system response is a real linear combination of such modes. Using Euler's formula, when \( \omega \neq 0 \) we obtain
\[ e^{\sigma t} e^{j\omega t} = e^{\sigma t}(\cos(\omega t) + j\sin(\omega t)). \]
Thus, for conjugate pairs \( p_{1,2} = \sigma \pm j\omega \), the real-valued mode can always be written as
\[ y_{\text{osc}}(t) = e^{\sigma t}\big(C_1 \cos(\omega t) + C_2 \sin(\omega t)\big), \quad C_1, C_2 \in \mathbb{R}. \]
We obtain the following qualitative classification:
-
Real pole
\( p = \sigma \in \mathbb{R} \):
- \( \sigma < 0 \): decaying exponential mode.
- \( \sigma = 0 \): constant (integrator) mode.
- \( \sigma > 0 \): growing exponential mode.
-
Complex conjugate pair
\( \sigma \pm j\omega \),
\( \omega \neq 0 \):
- \( \sigma < 0 \): decaying oscillation.
- \( \sigma = 0 \): sustained oscillation.
- \( \sigma > 0 \): growing oscillation.
- Repeated pole \( p \) with multiplicity \( \nu > 1 \): polynomially weighted exponential \( t^{\ell} e^{p t} \) terms produce responses that can rise initially even if \( \sigma < 0 \).
The precise link between pole locations and different notions of stability will be formally developed in Chapter 7; here we focus on the structural connection between poles and modes.
flowchart TD
S["Pole s0 in complex plane"] --> R["Real part of s0 negative?"]
R -->|yes| D["Decaying behavior \nin time"]
R -->|no| R2["Real part of s0 zero?"]
R2 -->|yes| M["Marginal behavior \n(constant or \nsustained oscillation)"]
R2 -->|no| G["Growing behavior \nin time"]
S --> IM["Imag part of \ns0 nonzero?"]
IM -->|no| REAL["Pure exponential \n(no oscillation)"]
IM -->|yes| OSC["Oscillatory exponential \n(sin/cos modulated)"]
D --> REAL
D --> OSC
G --> REAL
G --> OSC
5. Zeros and Input-Output Behavior
While poles determine intrinsic modes, zeros encode directions in which the input is suppressed in the output. Algebraically, a finite zero \( z \) satisfies \( G(z) = 0 \), so that (formally) an input mode with Laplace-domain factor \( 1/(s - z) \) is attenuated.
Consider a simple example:
\[ G(s) = \dfrac{s + 2}{(s + 1)(s + 3)}. \]
- Poles: \( p_1 = -1, \; p_2 = -3 \).
- Zero: \( z_1 = -2 \).
Using partial fractions:
\[ G(s) = \dfrac{1}{2}\dfrac{1}{s + 1} + \dfrac{1}{2}\dfrac{1}{s + 3}. \]
The impulse response is then
\[ g(t) = \dfrac{1}{2} e^{-t} u(t) + \dfrac{1}{2} e^{-3t} u(t), \]
which contains only the modes associated with the poles. The zero at \( s = -2 \) shapes the relative weights of the exponentials via the residues, and, for certain inputs (e.g. an exponential input related to \( s = -2 \)), it partially cancels the response.
In general, for an exponential input \( u(t) = e^{s_0 t} u(t) \) with Laplace transform \( U(s) = 1/(s - s_0) \), the steady-state component of the output is proportional to \( G(s_0) \). If \( G(s_0) = 0 \), the corresponding exponential component is suppressed; hence the term transmission zero.
6. Pole-Zero Cancellation and Hidden Modes
Suppose a transfer function before simplification is
\[ G_{\text{raw}}(s) = \dfrac{k (s + 2)}{(s + 2)(s + 5)} = \dfrac{k}{s + 5}. \]
Algebraically, a pole at \( s = -2 \) cancels a zero at the same location, yielding a first-order transfer function \( k/(s + 5) \). However, the underlying differential equation remains second order; the mode \( e^{-2 t} \) can still be present due to initial conditions, even if it does not appear in the input-output map \( G(s) \).
For control design, such cancellations are dangerous if the cancelled pole is unstable (with \( \Re(p) > 0 \)) or nearly unstable. The transfer function may hide an internal mode that cannot be influenced by the input in a simple way. A later course on state-space methods will formalize these ideas using controllability and observability theory.
7. Example – Robotic Joint Model and Its Poles
A simple rotational joint in a robot manipulator with motor torque input can often be approximated (after linearization) by
\[ J \ddot{\theta}(t) + B \dot{\theta}(t) + K \theta(t) = K_t u(t), \]
where \( \theta(t) \) is joint angle, \( u(t) \) is armature voltage or torque command, \( J > 0 \) is the equivalent inertia, \( B \ge 0 \) viscous friction, and \( K \ge 0 \) an equivalent stiffness due to elastic transmissions.
Taking Laplace transforms with zero initial conditions gives
\[ (J s^2 + B s + K)\Theta(s) = K_t U(s) \quad \Rightarrow \quad G(s) = \dfrac{\Theta(s)}{U(s)} = \dfrac{K_t}{J s^2 + B s + K}. \]
The poles are the roots of \( J s^2 + B s + K = 0 \):
\[ s_{1,2} = \dfrac{-B \pm \sqrt{B^2 - 4 J K}}{2J}. \]
- If \( B^2 > 4 J K \), both poles are real and negative (for \( B > 0, J > 0, K > 0 \)), yielding a sum of two decaying exponentials.
- If \( B^2 = 4 J K \), there is a repeated pole and the response contains a term proportional to \( t e^{s t} \).
- If \( B^2 < 4 J K \), there is a complex conjugate pair: \( s_{1,2} = \sigma \pm j\omega \) with \( \sigma = -B/(2J) < 0 \), leading to decaying oscillations of the joint.
This second-order joint model is ubiquitous in robotics. In later chapters we will relate these pole locations to time-domain metrics such as overshoot and settling time for joint position control.
8. Python Implementation (Control and Robotics Context)
Python offers symbolic and numerical tools well suited to pole-zero
analysis. For robotics-focused work, one often combines libraries such
as sympy, control, and
roboticstoolbox.
import numpy as np
import control # python-control library
from math import sqrt
# Joint model parameters (example values)
J = 0.01 # kg m^2
B = 0.02 # N m s/rad
K = 1.0 # N m/rad
Kt = 0.5 # N m per unit input
# Transfer function G(s) = Theta(s)/U(s)
num = [Kt]
den = [J, B, K]
G = control.TransferFunction(num, den)
print("Transfer function G(s) = Theta(s)/U(s):")
print(G)
# Poles and zeros
poles = control.pole(G)
zeros = control.zero(G)
print("Poles:", poles)
print("Zeros:", zeros)
# Step response (e.g., position response to a step in torque command)
t, y = control.step_response(G)
# t, y can be plotted with matplotlib
For a robotics library connection, we may estimate
\( J \) from a simplified rigid-link model using
roboticstoolbox:
from roboticstoolbox import DHRobot, RevoluteDH
# Simple 1-DOF revolute joint with unit-link parameters (toy example)
robot = DHRobot([RevoluteDH(a=0.5, d=0.0, alpha=0.0)], name="one_link")
# Joint inertia about the axis at configuration q = 0
M = robot.inertia([0.0])
J_est = float(M[0, 0])
print("Estimated joint inertia J_est:", J_est)
The estimated inertia J_est can then be used in the
transfer function \( G(s) \), and poles can be
recomputed. This illustrates how mechanical modeling and
control-theoretic pole analysis are combined in robotics.
9. C++ Implementation with Eigen and Robotics-Oriented Code
In C++, pole computation is often done either analytically (for
low-order systems) or numerically via linear algebra libraries such as
Eigen. Robotics frameworks (e.g., ros_control)
frequently use such libraries underneath.
#include <iostream>
#include <complex>
#include <cmath>
// Second-order joint model: G(s) = Kt / (J s^2 + B s + K)
struct JointModel {
double J;
double B;
double K;
double Kt;
};
std::pair<std::complex<double>, std::complex<double>>
compute_poles(const JointModel& jm) {
double J = jm.J;
double B = jm.B;
double K = jm.K;
double disc = B * B - 4.0 * J * K;
std::complex<double> sqrt_disc = std::sqrt(std::complex<double>(disc, 0.0));
std::complex<double> s1 = (-B + sqrt_disc) / (2.0 * J);
std::complex<double> s2 = (-B - sqrt_disc) / (2.0 * J);
return {s1, s2};
}
int main() {
JointModel jm{0.01, 0.02, 1.0, 0.5};
auto poles = compute_poles(jm);
std::cout << "Pole 1: " << poles.first << std::endl;
std::cout << "Pole 2: " << poles.second << std::endl;
return 0;
}
In robotics software stacks, the same numerical primitives may be encapsulated inside controllers that interact with joint-space dynamics or reduced-order linear models of the robot arm. Eigen can also be used to compute eigenvalues of state matrices once state-space models are introduced.
10. Java, MATLAB/Simulink, and Wolfram Mathematica
10.1 Java with Apache Commons Math
Java does not provide polynomial root finding in the standard library,
but packages such as
Apache Commons Math can be used. In robotics contexts
(e.g., Java-based robot frameworks), such libraries support
linear-system analysis.
import org.apache.commons.math3.analysis.polynomials.PolynomialFunction;
import org.apache.commons.math3.analysis.solvers.LaguerreSolver;
public class JointPoles {
public static void main(String[] args) {
double J = 0.01;
double B = 0.02;
double K = 1.0;
// Denominator: J s^2 + B s + K
double[] coeffs = {K, B, J}; // constant term first
PolynomialFunction den = new PolynomialFunction(coeffs);
LaguerreSolver solver = new LaguerreSolver();
// For quadratics, we know there are two roots; use complex root-finding
org.apache.commons.math3.complex.Complex[] roots = solver.solveAllComplex(coeffs, 0.0);
for (org.apache.commons.math3.complex.Complex r : roots) {
System.out.println("Pole: " + r);
}
}
}
10.2 MATLAB/Simulink (Control and Robotics System Toolboxes)
MATLAB's Control System Toolbox provides built-in functions for transfer functions and pole-zero analysis. Combined with Robotics System Toolbox, these are standard tools in robot control design.
% Parameters
J = 0.01;
B = 0.02;
K = 1.0;
Kt = 0.5;
s = tf('s');
G = Kt / (J*s^2 + B*s + K);
[zG, pG, kG] = zpkdata(G, 'v'); % zeros, poles, gain in vector form
disp('Poles:'); disp(pG);
disp('Zeros:'); disp(zG);
figure; pzmap(G); grid on;
title('Pole-zero map of joint model G(s)');
% In Simulink, one would:
% 1) Use a Transfer Fcn block with numerator [Kt] and denominator [J B K]
% 2) Drive it with a Step block (torque command)
% 3) Observe joint angle with a Scope block
10.3 Wolfram Mathematica
Mathematica offers symbolic and numeric functionality for linear systems. The poles and zeros of a transfer function are easily computed and visualized.
J = 0.01;
B = 0.02;
K = 1.0;
Kt = 0.5;
s =.
G[s_] := Kt/(J s^2 + B s + K);
(* TransferFunctionModel from input u to output theta *)
tf = TransferFunctionModel[{Kt}, {J, B, K}, s];
poles = Pole[tf];
zeros = Zero[tf];
Print["Poles: ", poles];
Print["Zeros: ", zeros];
PoleZeroPlot[tf]
These tools allow one to connect symbolic dynamics, numerical simulation, and pole-zero maps in a single environment, which is valuable for high-fidelity robot control design.
11. Problems and Solutions
Problem 1 (Poles, zeros, and impulse response):
Consider the transfer function
\( G_1(s) = \dfrac{5}{s(s + 2)} \).
(a) Find the poles and zeros.
(b) Compute the impulse response \( g_1(t) \) for
\( t \ge 0 \).
(c) Identify the modes present in \( g_1(t) \).
Solution:
(a) The denominator is \( s(s + 2) \), so the poles are
\( p_1 = 0 \) and \( p_2 = -2 \). The
numerator is a nonzero constant, so there are no finite zeros.
(b) Use partial fractions:
\[ \dfrac{5}{s(s + 2)} = \dfrac{A}{s} + \dfrac{B}{s + 2}. \]
Solving for \( A \) and \( B \) yields \( A = \tfrac{5}{2} \), \( B = -\tfrac{5}{2} \), hence
\[ G_1(s) = \dfrac{5}{2} \dfrac{1}{s} - \dfrac{5}{2} \dfrac{1}{s + 2}. \]
Using known Laplace pairs: \( \mathcal{L}^{-1}\{1/s\} = u(t) \) and \( \mathcal{L}^{-1}\{1/(s + 2)\} = e^{-2t} u(t) \), we get
\[ g_1(t) = \dfrac{5}{2} u(t) - \dfrac{5}{2} e^{-2t} u(t), \quad t \ge 0. \]
(c) The modes present are \( e^{0\cdot t} = 1 \) and \( e^{-2 t} \), associated with poles at \( 0 \) and \( -2 \), respectively.
Problem 2 (Repeated pole and polynomially weighted mode):
Let \( G_2(s) = \dfrac{3}{(s + 1)^2} \).
(a) Find the impulse response \( g_2(t) \) for
\( t \ge 0 \).
(b) Identify the corresponding mode.
Solution:
(a) Using the Laplace pair
\( \mathcal{L}^{-1}\{1/(s + 1)^2\} = t e^{-t} u(t) \), we
obtain
\[ g_2(t) = 3 t e^{-t} u(t), \quad t \ge 0. \]
(b) There is a single pole at \( p = -1 \) with multiplicity \( \nu = 2 \), and the associated mode is \( t e^{-t} \). The factor \( t \) can cause an initial growth before eventual decay.
Problem 3 (Robotic joint model and pole location):
For the joint model
\( G(s) = \dfrac{K_t}{J s^2 + B s + K} \)
with \( J > 0, B > 0, K > 0 \):
(a) Derive the expression for the poles.
(b) Show that the real part of both poles is negative.
(c) Give a condition on \( B^2 \) and
\( 4 J K \) for complex conjugate poles to occur.
Solution:
(a) The poles are the roots of
\( J s^2 + B s + K = 0 \), hence
\[ s_{1,2} = \dfrac{-B \pm \sqrt{B^2 - 4 J K}}{2J}. \]
(b) The real part of each pole is \( \Re(s_{1,2}) = -B/(2J) \). With \( B > 0 \) and \( J > 0 \), we have \( \Re(s_{1,2}) < 0 \), so both poles lie in the left half-plane.
(c) The poles are complex conjugate if and only if the discriminant is negative, \( B^2 - 4 J K < 0 \), which is equivalent to \( B^2 < 4 J K \). In that case, the joint exhibits decaying oscillations.
Problem 4 (Pole-zero cancellation and hidden mode):
Consider the unsimplified transfer function
\( G_{\text{raw}}(s) = \dfrac{k (s + 2)}{(s + 2)(s + 5)} \).
(a) List its poles and zeros.
(b) Simplify \( G_{\text{raw}}(s) \) algebraically and
list poles and zeros of the simplified transfer function.
(c) Explain why the original second-order dynamics may still contain a
mode associated with
\( s = -2 \) in the homogeneous solution.
Solution:
(a) Before cancellation, the denominator is
\( (s + 2)(s + 5) \) and numerator
\( k (s + 2) \). Thus the poles are
\( -2 \) and \( -5 \), and there is a
zero at \( -2 \).
(b) Cancelling the common factor gives
\[ G_{\text{min}}(s) = \dfrac{k}{s + 5}, \]
which has a single pole at \( -5 \) and no finite zeros.
(c) The underlying differential equation is of second order, and the homogeneous solution still contains modes associated with both roots of the original characteristic polynomial \( (s + 2)(s + 5) = 0 \). The cancellation only removes the influence of the \( e^{-2 t} \) mode on the input-output map; initial conditions can still excite this mode internally. Hence \( e^{-2 t} \) is a hidden mode.
12. Summary
In this lesson we established the central role of poles and zeros in the analysis of linear control systems. Starting from differential equations, we showed that poles arise as roots of the characteristic polynomial and correspond to exponential or oscillatory modes \( t^{\ell} e^{p t} \) in the time domain. Zeros do not create new exponents but modify the way inputs excite these modes, including complete suppression of certain exponential inputs. We also discussed pole-zero cancellation and the possibility of hidden modes, and we illustrated how to compute poles and zeros in robotics-relevant software environments such as Python, C++, Java, MATLAB/Simulink, and Wolfram Mathematica. These concepts form the foundation for the detailed time-response analysis in the next chapters and for block-diagram manipulation in the next lesson.
13. References
- Bode, H.W. (1938). Relations between attenuation and phase in feedback amplifier design. Bell System Technical Journal, 17(3), 229–244.
- Evans, W.R. (1948). Control system synthesis by root locus method. Transactions of the American Institute of Electrical Engineers, 67(1), 547–551.
- Kalman, R.E. (1960). On the general theory of control systems. IRE Transactions on Automatic Control, 4(3), 110–110.
- Zames, G. (1966). On the input-output stability of time-varying nonlinear feedback systems. IEEE Transactions on Automatic Control, 11(2), 228–238.
- MacFarlane, A.G.J. (1963). On the theory of linear systems with poles and zeros in the right-half s plane. Proceedings of the Institution of Electrical Engineers, 110(2), 399–404.
- Rosenbrock, H.H. (1969). On the zeros of a transfer function. Computer Journal, 12(3), 265–268.
- Vidyasagar, M. (1972). On the zeros of multivariable systems. International Journal of Control, 16(3), 491–498.
- Desoer, C.A., & Whalen, J.H. (1963). A note on the stability of linear time-invariant systems. Journal of the Franklin Institute, 275(5), 408–412.