Unit 5.2: More on the Qualitative and Quantitative Response of First- and Second-Order Poles#
Follow along at cpjobling.github.io/eg-150-textbook/poles_and_zeros/second_order_properties
Acknowledgements#
The notes for this unit have been influenced by the MATLAB LiveScript PoleZeroAnalysis.mlx from the MathWorks curriculum module Transfer Function Analysis of Dynamic Systems [Allie, 2024]. You will find some useful interactive applications with which you can explore the concepts presented here. Some of these will be deomostrated in the lecture.
The examples have been inspired by the recording of the second half of the video recording of Stephen Boyd’s 1999 lecture 10 (delivered at Stanford University) which itself is based on Qualitative properties of signals & Laplace transforms [Boyd, 1993].
You can watch the video on YouTube here:
Agenda#
Quantitative behaviour of real poles#
In Qualitative properties of terms we stated that a response term that corresponds to a real pole
We didn’t quantify these effects, so it is useful to do so here.
Rate of exponential growth#
Given that the rational polynomial
where
The corresponding term in
This will be a growing exponential for which the doubling time is a useful measure of the growth rate.
Given that at time
Example 7#
Plot the response of the pole
and confirm that the doubling time is around 7 seconds.
Solution to example 7#
Done in MATLAB
format compact
clear variables
sigma = 0.1;
% Doubling time
T = log(2)/sigma
T = 6.9315
% Plot
t = linspace(0,15,100);
plot(t,10*exp(sigma*t)),ylim([0,50]),grid
% Plot and label lines: first doubling
line([T,T],[0,20],'Color','r','LineStyle','--')
line([0,T],[20,20],'Color','r','LineStyle','--')
hold on
plot(T,20,'o')
text(3,22,'First doubling')
% Plot and label lines: second doubling
plot(2*T,40,'o')
line([2*T,2*T],[0,40],'Color','g','LineStyle','--')
line([0,2*T],[40,40],'Color','g','LineStyle','--')
text(10,42,'Second doubling')
% Label graph
title('Exponential growth'),
ylabel('f(t) = 10*exp(0.1*t)'),xlabel('Time t [s]')
hold off

Given that
We have added the exact solutions to the plot.
The MATLAB code to reproduce this result is given in example7.mlx
Rate of exponential decay#
If
where
The corresponding term in
This will be a decaying exponential for which the time constant
Putting the time constant into the response equation
Thus the response reaches around
Another measure of decay that is sometimes used is the value of
Example 8#
The current in the RC circuit shown in Fig. 41 has the transform
If
(a) The initial current
(b) The time constant
(c) The time at which the current decays to 1% of
Solution to example 8#
(a) The initial current is given by[1]
Given the component values of
(b) The time constant
(c) The time at which the current decays to 1% of
MATLAB confirmation
t = linspace(0,50,100);
R = 1e6; C = 10e-6;
sigma = -1/(R*C);
% Time constant and initial current
tau = 1/abs(sigma); i0 = 1/(R*C);
% Plot
plot(t,i0*exp(sigma*t)),grid
% Plot and label lines: time constant
line([tau,tau],[0,i0*exp(-1)],'Color','r','LineStyle','--')
line([0,tau],[i0*exp(-1),i0*exp(-1)],'Color','r','LineStyle','--')
text(tau+1,i0*exp(-1),'Time constant: 37% of i0 in 10 seconds')
hold on
plot(tau,i0*exp(-1),'o')
% Plot and label lines: 1% point
line([4.6*tau,4.6*tau],[0,0.01*i0],'Color','g','LineStyle','--')
line([0,4.6*tau],[0.01*i0,0.01*i0],'Color','g','LineStyle','--')
plot(4.6*tau,0.01*i0,'o')
text(32,0.01*i0+0.005,'1% of initial current in 46 seconds')
% Label graph
title('Exponential decay of current in an RC circuit'),
ylabel('Current i(t) [A]'),xlabel('Time t [s]')
hold off

The MATLAB code to reproduce this result is given in example8.mlx
Natural frequency#
The locations of the poles in the
Consider a pole in the complex plane illustrated in Fig. 78

Fig. 78 Phase
The natural (undamped) frequency (in rad/s) contributed by a pole
is the pole magnitude, .The phase,
, determines the relative strength of the oscillatory component.
Analysis of a second-order system#
Second-order systems with a pair of conjugate poles and no zeros are useful for illustrating the natural frequency response analytically. It is helpful to write this type of system in the form:
where
is the gain coefficient is the damping ratio already introduced in Complex poles: Damping ratio \zeta and quality factor Qand
is the (undamped) natural frequency.
These parameters are helpful for drawing a connection between the natural response of the system and the properties of the poles. In this section, the poles of the second-order system will be analytically computed and related to the natural response of the system.
Pole analysis#
The poles of the system occur when the denominator is zero:
For simplicity, consider
As stated above, the natural frequency is defined as the magnitude of the pole. The magnitude is computed as :
Using the definitions illustrated in Fig. 76,
This illustrates why this form of the equation is used: the natural frequency is the parameter
The damping ratio
As
For stable systems, that implies greater damping.
The gain coefficient
Natural response#
The impulse response of a system
because the impulse
syms s t zeta omega_n K Y(s) y(t)
assume(t > 0)
Y(s) = K/(s^2 + 2*zeta*omega_n*s + omega_n^2)
y(t) = ilaplace(Y) % The impulse response in the time domain
Gives the result
Notice that the impulse response is a product of an exponential and sine function. From these functions observe that:
The sine function frequency (in rads/s) is
. If the damping , then the frequency is . This is the reason is often referred to as the undamped natural frequency.The rate of decay of the exponential damping function is
.The gain parameter
only contributes as a constant multiplier to the magnitude of the response.
Step-response of a second-order system#
The step response of a system
because the step function
Here we will state, without proof, that the step response will be
where :
is the imaginary part of the system’s complex pole pair, sometimes called the damped natural frequency is the magnitide of the real part of the system’s complex pole pair is the phase shift.
Note
The proof requires us to complete the square in the denominator of the term with the complex roots
Then take the PFE of the terms assuming that the complex poles will yield terms:
Making the substitutions
The step-response terms will then be
Having computed the residues
Example 9#
Determine the step response for a second order system with tf
and step
functions.
Solution to example 9#
Analytical solution using the symbolic math toolbox
syms Y_s(s) y_s(t)
zeta = 0.5; omega_n = 10;
X(s) = 1/s;
H(s) = omega_n^2/(s^2 + 2*zeta*omega_n*s + omega_n^2);
Y_s(s) = H(s)*X(s)
% step response
y_s(t) = ilaplace(Y_s(s))
Gives the result
Plot the solution
fplot(y_s(t)*heaviside(t),[0,1.2]),ylim([0,1.2]),grid
xlabel('Time (seconds)'),ylabel('y_s(t)'),...
title('Step Response: Determined analytically')

Confirming the result with (61) we get:
sigma = zeta*omega_n;
omega = omega_n*sqrt(1 - zeta^2);
% Compute response using the formula
t = linspace(0,1.2,100);
yst = (1 - exp(-sigma*t).*(cos(omega*t)+(sigma/omega)*sin(omega*t)));
Plot the result
plot(t,yst),grid,...
xlabel('Time (seconds)'),ylabel('y_s(t)'),...
title('Step Response: Computed with formula')

Using the tf
and step
functions we get:
num = omega_n^2; den = [1 2*zeta*omega_n,omega_n^2];
Hs = tf(num,den)
Hs
=
100
----------------
s^2 + 10 s + 100
Continuous-time transfer function.
step(Hs),title('Step Response: Computed with tf function')

The MATLAB code to reproduce this result is given in example9.mlx
Useful quantifiers that result from step response#
The relationship between the pole locations and the step response are summarized in Fig. 79 [2]

Fig. 79 Relationship between poles and step response#
Knowledge of the location of the poles and their damping ratio and natural frequency are useful for qualtitaive anaysis of the response of a complex pole pair. There are also a number of parameters that quantively define the features of the step response which we may be interested in. These are shown in the right-hand picture of Fig. 80. Knowledge of the poles allows us to predict the step response. But also, usefully for many design problems, knowledge of the step response allows us to predict the location of the poles.
We will explore these ideas in the following sections.
Poles#
The location of the system poles is important and can be obtained by factorizing the denominator of pole
which will take these values from a transfer function.
We will illustrate these with the example used in Example 9.
First we set up the system function
syms s t
zeta = 0.5; omega_n = 10;
H = omega_n^2/(s^2 + 2*zeta*omega_n*s + omega_n^2)
Find the poles symbolically
[num,den] = numden(H);
symbolicPoles = factor(den,'FactorMode','full') % FactorMode needed to reduce quadratic
Factors interpreted as
Now find the poles numerically
% Convert symbolic polynomials to numeric polynomials
n = sym2poly(num); d = sym2poly(den);
% Compute the roots
den_poles = roots(d)
den_poles = -5.0000 + 8.6603i -5.0000 - 8.6603i
FInally, from the transfer function model
Hs = tf(n,d);
poles = pole(Hs)
poles = -5.0000 + 8.6603i -5.0000 - 8.6603i
Damping ratio and natural frequencies#
These are most conveniently obtained from the transfer function using the damp
function.
[wn,z] = damp(Hs)
wn = 2×1 double 10.0000 10.0000
z = 2×1 double 0.5000 0.5000
The function damp
can also return the poles
[wn,z,p] = damp(Hs)
wn = 2×1 double 10.0000 10.0000
z = 2×1 double 0.5000 0.5000
p = -5.0000 + 8.6603i -5.0000 - 8.6603i
Rise-time#
The rise time
The rise-time depends on

Fig. 80 Damping ratio as a function of normalised rise-time for a second-order underdamped response#
For the problem being considered
step(Hs),line([0,0.1],[0.1,0.1]),line([0,0.25],[0.9,0.9])

Settling time#
The settling time
The actual setting time is related to the real part of the poles and, for this case,
For our example
Ts = 4/(zeta*omega_n) % seconds
Ts = 0.8000
step(Hs),line([0,1.2],[1.02,1.02]),line([0,1.2],[0.98,0.98])

The value looks about right!
Peak overshoot#
The peak overshoot is a measure of damping in a system and is the height of the first peak (
If we know the peak overshoot, we can calculate the damping ratio
For our example
POS = exp(-zeta*pi/sqrt(1 - zeta^2))*100 % OS
POS = 16.3034
OS = 1 + POS/100; % OS
step(Hs),line([0,1.2],[OS,OS])

Reverse formula check
z = -log(POS/100)/sqrt(pi^2 + log(POS/100)^2)
z = 0.5000
Peak time#
We sometimes compute the peak time
For our example
Tp = pi/(omega_n*sqrt(1 - zeta^2))
Tp = 0.3628
step(Hs),line([Tp,Tp],[0,1.16304])

List all properties#
MATLAB provides a useful function stepinfo that computes a step response for a system and takes measurements of the response to summarize the useful quantitative data defined above as well as a few more quantities.
stepinfo(Hs)
ans = struct with fields: RiseTime: 0.1639 TransientTime: 0.8076 SettlingTime: 0.8076 SettlingMin: 0.9315 SettlingMax: 1.1629 Overshoot: 16.2929 Undershoot: 0 Peak: 1.1629 PeakTime: 0.3592
You should compare the values computed with the approximations given in this section.
Exercises 16#
Exercise 16.1: Qualitative analysis#
A signal or system response
(a) How many poles are there in
(b) What is the nature of the response due to the terms given in (66)?
(c) Which are the dominant poles?
MATLAB visualization
syms t
x_1 = -exp(-2*t)
x_2 = -0.1*t^2*cos(3*t + 5)
x_3 = x_1 + x_2
T = 2*pi/3; % Period of sinusoidal term
fplot(x_1,[0,3*T])
hold on
fplot(x_2,[0,3*T])
fplot(x_3,[0,3*T])
grid, title('Visualization of dominant poles from Exercise 16.1'),ylabel('x(t)')
legend('x_1(t)','x_2(t)','x_3(t)')
hold off

Exercise 16.2: Qualitative and quantitative analysis#
A system has poles
(a) Give the transfer function
(b) Plot the poles on a pole zero map
(c) Give the time constant
(d) How do the zeros affect the response
(e) Which is the dominant pole?
(f) Will the system be stable or unstable?
Partial solution to Exercise 16.2#
The poles and zeros can be entered into MATLAB
z = [-1.5; -3 - 3j; -3 + 3j];
p = [0; 1 + j; 1 - j; -1; -2 + 2j; -2 - 2j; -3];
% Define a transfer function in zero-pole-gain form
Fs = zpk(z,p,1)
Fs
=
(s+1.5) (s^2 + 6s + 18)
-------------------------------------------
s (s+1) (s+3) (s^2 - 2s + 2) (s^2 + 4s + 8)
Continuous-time zero/pole/gain model.
(a) The transfer function is
tf(Fs)
ans
=
s^3 + 7.5 s^2 + 27 s + 27
-----------------------------------------------------
s^7 + 6 s^6 + 13 s^5 + 6 s^4 - 10 s^3 + 40 s^2 + 48 s
Continuous-time transfer function.
(b) The pole-zero map
pzmap(Fs),xlim([-4,1]),ylim([-4,4]),title('Pole zero map for Example 16.2')

damp(Fs)
Pole Damping Frequency Time Constant
(rad/seconds) (seconds)
0.00e+00 -1.00e+00 0.00e+00 Inf
-1.00e+00 1.00e+00 1.00e+00 1.00e+00
1.00e+00 + 1.00e+00i -7.07e-01 1.41e+00 -1.00e+00
1.00e+00 - 1.00e+00i -7.07e-01 1.41e+00 -1.00e+00
-2.00e+00 + 2.00e+00i 7.07e-01 2.83e+00 5.00e-01
-2.00e+00 - 2.00e+00i 7.07e-01 2.83e+00 5.00e-01
-3.00e+00 1.00e+00 3.00e+00 3.33e-01
Bonus: the step response is
step(Fs)

Exercise 16.3: Spring-Mass-Damper System#
You can analyze a mass-spring-damper system (Fig. 81) by looking at the poles of its transfer function.

Fig. 81 Diagram of a spring-mass-damper system#
Consider a mass-spring-damper that
is dynamically forced by an arbitrary function
has zero initial conditions:
and
The position transfer function is
(a) Write the mass-spring-damper transfer function in the form
and solve for the expressions of the gain
% Use these symbolic variables
syms m c k
% Replace the NaNs with your expressions
K = 1/m
omega_n = sqrt(k/m)
zeta = (c/m)/(2*omega_n)
(b) Solve for the symbolic expressions of the poles of pplus
and pminus
where pplus
stores the positive root.
% Your solution here
poles = solve(s^2 + (c/m)*s + (k/m) == 0);
pplus = poles(1), pminus = poles(2)
(c) Plot the step response of the system stepinfo
. Adjust the values of
k = 1; m = 1; c = 1;
Gs = tf(1/m, [1 c/m k/m])
Gs
=
1
-----------
s^2 + s + 1
Continuous-time transfer function.
step(Gs)

p = pole(Gs)
p = -0.5000 + 0.8660i -0.5000 - 0.8660i
[Wn,Z]=damp(Gs)
Wn = 2×1 double 1.0000 1.0000
Z = 2×1 double 0.5000 0.5000
stepinfo(Gs)
ans = struct with fields: RiseTime: 1.6390 TransientTime: 8.0759 SettlingTime: 8.0759 SettlingMin: 0.9315 SettlingMax: 1.1629 Overshoot: 16.2929 Undershoot: 0 Peak: 1.1629 PeakTime: 3.5920
Summary#
Unit 5.2: Take aways#
Real pole :#
Growth rate:
, the exponential signal doubles every s.Time constant:
, the exponential signal decays to of it’s original value in s. The exponential signal reaches of it’s original value in s.
Complex pole pair :#
Representation of denominator:
Natural frequency:
Damping ratio:
Standard second-order system transfer function#
Transfer function:
Poles:
Performance parameters for second-order system#
Rise time:
is estimated from graph of normaized rise-time v shown in Fig. 80.2% Setting time:
Percentage overshoot:
Peak time:
Useful MATLAB commands#
tf
: defines a system as a transfer functionstep
: plots the step response of a systempole
: lists the poles of a systemdamp
: lists the natural frequency and damping ratios of the poles of a systemstepinfo
: lists the properties of the step response of a system
Unit 5.2: Further exploration#
If you have access to MATLAB (desktop of online), you can install the MATLAB curriculum module Transfer Function Analysis of Dynamic Systems [Allie, 2024] and further explore the concepts given here. The MATLAB Live Script PoleZeroAnalysis.mlx provides some interactive tools that enable you to interactively explore second order system response and includes the impact of zeros which we have not covered here.
References#
Chad Allie. Transfer function analysis of dynamic systems. 2024. Retrieved April 3, 2024. URL: MathWorks-Teaching-Resources/Transfer-Function-Analysis-of-Dynamic-Systems.
Stephen Boyd. Ee-102: introduction to signals and systems. 1993. Retrieved April 3, 2024. URL: https://web.stanford.edu/~boyd/ee102/.