Chapter 23: Modeling Uncertainty in Linear Systems
Lesson 4: Simple Uncertainty Models for Classical Analysis
In this lesson we introduce simple but powerful ways to represent model uncertainty so that classical tools such as Bode and Nyquist plots, sensitivity functions, and stability margins can be interpreted in a mathematically precise way. We focus on additive and multiplicative uncertainty models around a nominal transfer function and show how they arise from parameter variations in typical motion-control plants (e.g., robot joints or actuator axes). We then implement these ideas in Python, C++, Java, MATLAB/Simulink, and Wolfram Mathematica.
1. Nominal vs Uncertain Plant Models
Up to this point, we have typically assumed a perfectly known plant model \( G(s) \). In practice, a physical system (robot link, DC motor, vehicle axle, etc.) depends on parameters (mass, inertia, friction, gains) that are only known approximately. We denote the true plant, depending on a parameter vector \( \theta \), by \( G_{\text{true}}(s,\theta) \), and choose a nominal parameter value \( \theta_0 \) to obtain
\[ G_0(s) \;\triangleq\; G_{\text{true}}(s,\theta_0). \]
The real system behaves like some member of a set of plausible plants around \( G_0(s) \). A simple abstract description is
\[ \mathcal{P} \;=\; \bigl\{\, G(s) \;\big|\; G(s) \text{ is stable, and close to } G_0(s) \text{ in a specified sense} \bigr\}. \]
The purpose of simple uncertainty models is to encode “close to” in a way that:
- Relates directly to \( G_0(\mathrm{j}\omega) \) and its Bode/Nyquist plots.
- Is analytically tractable in inequality conditions for robust stability and performance.
- Can be estimated from parameter ranges or experimental frequency-response data.
In feedback with controller \( C(s) \), the nominal loop transfer is \( L_0(s) = C(s)G_0(s) \), nominal sensitivity and complementary sensitivity are
\[ S_0(s) \;=\; \frac{1}{1 + L_0(s)}, \qquad T_0(s) \;=\; \frac{L_0(s)}{1 + L_0(s)}. \]
Later, robust stability conditions will compare these functions to the size of the uncertainty, but in this lesson we concentrate on the modeling step.
flowchart TD
A["Physical system with uncertain parameters"] --> B["Modeling & identification"]
B --> C["Nominal transfer function G0(s)"]
C --> D["Define uncertainty set around G0(s)"]
D --> E["Classical analysis: Bode / Nyquist / margins"]
E --> F["Interpret robustness to model errors"]
2. Frequency-Domain View of Uncertainty
For a fixed frequency \( \omega \), the complex numbers \( G_{\text{true}}(\mathrm{j}\omega,\theta) \) obtained from all admissible parameter values \( \theta \) form a cloud (region) in the complex plane. The nominal value \( G_0(\mathrm{j}\omega) \) is one point in that region. A simple way to bound the cloud is via a disk:
\[ \bigl| G(\mathrm{j}\omega) - G_0(\mathrm{j}\omega) \bigr| \;\leq\; \delta(\omega), \]
where \( \delta(\omega) \ge 0 \) is a scalar bound on the magnitude of the modeling error at frequency \( \omega \). This is a very general starting point:
- It can be obtained from parameter Monte Carlo sweeps by taking the maximum distance between \( G_0(\mathrm{j}\omega) \) and sampled plants.
- It can be estimated from experimental frequency response \( \hat{G}(\mathrm{j}\omega) \) and a fitted model \( G_0(s) \).
To use this bound analytically, we embed it in transfer-function relationships of the form \( G(s) = G_0(s) + \text{error term} \) or \( G(s) = G_0(s)\cdot(1 + \text{relative error term}) \). These lead to the additive and multiplicative uncertainty models.
3. Additive Uncertainty Model
The additive uncertainty model writes the true plant as nominal plus an additive perturbation:
\[ G(s) \;=\; G_0(s) + \Delta_A(s). \]
Here \( \Delta_A(s) \) is an unknown but stable transfer function that captures modeling error. At each frequency we impose a magnitude bound
\[ \bigl|\Delta_A(\mathrm{j}\omega)\bigr| \;\leq\; \bar{\Delta}_A(\omega), \]
where \( \bar{\Delta}_A(\omega) \) is a nonnegative scalar function chosen by the designer. A particularly useful parametrization uses a weighting transfer function \( W_A(s) \) and an abstract uncertainty block \( \Delta(s) \) satisfying
\[ \Delta_A(s) \;=\; W_A(s)\,\Delta(s), \qquad \bigl|\Delta(\mathrm{j}\omega)\bigr| \le 1 \;\;\text{for all}\;\omega. \]
Then the additive model becomes
\[ G(s) \;=\; G_0(s) + W_A(s)\,\Delta(s), \]
and all frequency dependence of the bound is encoded in the known filter \( W_A(s) \). The dimension of \( W_A(s) \) is that of the plant (e.g. rad/s small-signal gain), and different choices emphasize low-frequency or high-frequency modeling error.
Construction from a disk bound. If we have an empirical upper bound
\[ \bigl| G(\mathrm{j}\omega) - G_0(\mathrm{j}\omega) \bigr| \;\leq\; \delta(\omega), \]
then we can choose \( W_A(\mathrm{j}\omega) \) such that \( |W_A(\mathrm{j}\omega)| \approx \delta(\omega) \), and define
\[ \Delta(\mathrm{j}\omega) \;=\; \frac{G(\mathrm{j}\omega) - G_0(\mathrm{j}\omega)}{W_A(\mathrm{j}\omega)}, \]
which satisfies \( |\Delta(\mathrm{j}\omega)| \le 1 \) by construction whenever \( |W_A(\mathrm{j}\omega)| \ge \delta(\omega) \).
4. Multiplicative Uncertainty Model
The multiplicative uncertainty model expresses modeling error in relative form:
\[ G(s) \;=\; G_0(s)\,\bigl(1 + \Delta_M(s)\bigr), \]
where \( \Delta_M(s) \) is a stable transfer function representing relative error. Solving for \( \Delta_M(s) \) gives
\[ \Delta_M(s) \;=\; \frac{G(s) - G_0(s)}{G_0(s)}, \]
which is well-defined wherever \( G_0(s) \neq 0 \). In the frequency domain,
\[ \bigl|\Delta_M(\mathrm{j}\omega)\bigr| \;=\; \frac{\bigl|G(\mathrm{j}\omega) - G_0(\mathrm{j}\omega)\bigr|} {\bigl|G_0(\mathrm{j}\omega)\bigr|}. \]
Again, we bound the relative error by a scalar function \( \bar{\Delta}_M(\omega) \) and often factor it as
\[ \Delta_M(s) \;=\; W_M(s)\,\Delta(s), \qquad \bigl|\Delta(\mathrm{j}\omega)\bigr| \le 1, \]
so that
\[ G(s) \;=\; G_0(s)\,\bigl(1 + W_M(s)\,\Delta(s)\bigr). \]
The multiplicative model is dimensionless and particularly convenient when:
- We are interested in percentage gain error at different frequencies.
- We want to overlay uncertainty disks on Nyquist plots of the loop transfer.
- The nominal plant has gain that varies strongly over frequency (e.g. roll-off).
Relationship between additive and multiplicative models. If \( G_0(s) \neq 0 \) for all \( s \) on the imaginary axis, then additive and multiplicative models are equivalent via
\[ \Delta_A(s) \;=\; G_0(s)\,\Delta_M(s), \qquad \Delta_M(s) \;=\; \frac{\Delta_A(s)}{G_0(s)}. \]
In practice, we choose whichever representation makes the frequency dependence of the uncertainty easier to describe.
5. Simple Constant-Bound Models and Classical Margins
A particularly simple model assumes a frequency-independent bound on relative error:
\[ \bigl|\Delta_M(\mathrm{j}\omega)\bigr| \;\leq\; \delta, \qquad 0 \le \delta < 1. \]
This corresponds to the statement “the plant magnitude is known within \( \pm 100\delta \) percent and the phase is uncertain within a disk whose radius is proportional to \( \delta \)”, for all frequencies in a specified band. Geometrically, the true plant lies in a disk of radius \( \delta |G_0(\mathrm{j}\omega)| \) centered at \( G_0(\mathrm{j}\omega) \).
When applied to the loop transfer \( L(s) = C(s)G(s) \), the multiplicative model
\[ L(s) \;=\; L_0(s)\,\bigl(1 + \Delta_M(s)\bigr) \]
implies that the Nyquist plot of \( L(\mathrm{j}\omega) \) is contained in disks around the nominal Nyquist curve of \( L_0(\mathrm{j}\omega) \). Classical gain and phase margins can be interpreted as ensuring that these disks do not cross the critical point \( -1 \) for all admissible uncertainties.
This viewpoint will be formalized in the next chapter using robust stability inequalities; for now we focus on constructing the uncertainty bounds themselves.
flowchart TD
A["Nominal loop L0(j omega)"] --> B["Assume |Delta_M(j omega)| <= delta"]
B --> C["Disk of radius delta * |L0(j omega)| around each point"]
C --> D["Check distance to -1 on Nyquist plot"]
D --> E["Interpret gain/phase margins as robustness to disks"]
6. Example – First-Order Plant with Parametric Uncertainty
Consider a first-order plant, typical of a low-bandwidth actuator or a heavily damped robot joint:
\[ G(s;\,K,\tau) \;=\; \frac{K}{\tau s + 1}. \]
Suppose that due to manufacturing tolerances and unmodeled friction, the gain and time constant lie in intervals
\[ K \in \bigl[(1-\alpha)K_0,\,(1+\alpha)K_0\bigr], \qquad \tau \in \bigl[(1-\beta)\tau_0,\,(1+\beta)\tau_0\bigr], \]
for some known \( 0 \le \alpha,\beta < 1 \). We take the nominal plant as
\[ G_0(s) \;=\; \frac{K_0}{\tau_0 s + 1}. \]
For a particular frequency \( \omega \), the nominal response is
\[ G_0(\mathrm{j}\omega) \;=\; \frac{K_0}{1 + \mathrm{j}\omega\tau_0}. \]
A worst-case bound on the relative error magnitude, over all admissible \( K,\tau \), is
\[ \bar{\Delta}_M(\omega) \;=\; \max_{K,\tau} \frac{ \bigl|G(\mathrm{j}\omega;K,\tau) - G_0(\mathrm{j}\omega)\bigr| }{ \bigl|G_0(\mathrm{j}\omega)\bigr| }. \]
This optimization can be solved numerically; however, a simple approximate analytic bound can be obtained by linearizing in the small parameters \( \alpha,\beta \). Introduce deviations \( \Delta K = K - K_0 \), \( \Delta\tau = \tau - \tau_0 \), and write the first-order variation of \( G(\mathrm{j}\omega;K,\tau) \) as
\[ \delta G(\mathrm{j}\omega) \;\approx\; \frac{\partial G}{\partial K}(\mathrm{j}\omega;\theta_0)\,\Delta K + \frac{\partial G}{\partial \tau}(\mathrm{j}\omega;\theta_0)\,\Delta\tau. \]
Straightforward differentiation gives
\[ \frac{\partial G}{\partial K}(\mathrm{j}\omega;\theta_0) \;=\; \frac{1}{1 + \mathrm{j}\omega\tau_0}, \qquad \frac{\partial G}{\partial \tau}(\mathrm{j}\omega;\theta_0) \;=\; -\,\frac{K_0\,\mathrm{j}\omega}{\bigl(1 + \mathrm{j}\omega\tau_0\bigr)^2}. \]
Bounding \( |\Delta K| \le \alpha K_0 \), \( |\Delta\tau| \le \beta\tau_0 \), we obtain
\[ \begin{aligned} \bigl|\delta G(\mathrm{j}\omega)\bigr| &\lesssim \left|\frac{1}{1 + \mathrm{j}\omega\tau_0}\right|\,\alpha K_0 + \left|\frac{K_0\,\mathrm{j}\omega}{\bigl(1 + \mathrm{j}\omega\tau_0\bigr)^2}\right|\,\beta\tau_0 \\[3pt] &= |G_0(\mathrm{j}\omega)|\, \Bigl( \alpha + \beta\,\frac{|\mathrm{j}\omega\tau_0|}{|1 + \mathrm{j}\omega\tau_0|} \Bigr). \end{aligned} \]
Therefore an approximate relative error bound is
\[ \bar{\Delta}_M(\omega) \;\approx\; \alpha + \beta\,\frac{\omega\tau_0}{\sqrt{1 + \omega^2\tau_0^2}}. \]
This function rises from \( \alpha \) at low frequencies to approximately \( \alpha + \beta \) at high frequencies, corresponding to increasing sensitivity of the phase and roll-off to the time constant uncertainty. A simple multiplicative weight \( W_M(s) \) can be chosen to upper-bound \( \bar{\Delta}_M(\omega) \) over the frequency band of interest.
7. Python Lab – Estimating Multiplicative Uncertainty from Parameter Samples
We now implement a numerical estimation of the multiplicative
uncertainty bound for the first-order plant. We use the
python-control library for transfer functions and frequency
response, and show how such uncertainties could arise in a simple robot
joint actuator model. For robotics-related work, this can be combined
with the roboticstoolbox-python package to propagate
actuator uncertainties into joint-space dynamics.
import numpy as np
import control as ctl # python-control library
# optional: from roboticstoolbox import DHRobot # robotics toolbox (not used directly here)
# Nominal parameters for a first-order joint actuator
K0 = 10.0 # nominal gain [rad/(V*s)]
tau0 = 0.05 # nominal time constant [s]
alpha = 0.2 # 20% gain uncertainty
beta = 0.1 # 10% time-constant uncertainty
# Nominal transfer function G0(s) = K0 / (tau0 s + 1)
s = ctl.tf([1, 0], [1]) # Laplace variable
G0 = K0 / (tau0 * s + 1)
# Frequency grid
w = np.logspace(0, 3, 300) # 1 rad/s to 1000 rad/s
# Monte Carlo sampling of uncertain plants
n_samples = 200
DeltaM_samples = []
for k in range(n_samples):
K = K0 * (1 + alpha * (2*np.random.rand() - 1)) # uniform in [1-alpha, 1+alpha]
tau = tau0 * (1 + beta * (2*np.random.rand() - 1)) # uniform in [1-beta, 1+beta]
G = K / (tau * s + 1)
# frequency responses
_, G0jw = ctl.freqresp(G0, w)
_, Gjw = ctl.freqresp(G, w)
DeltaM = (Gjw - G0jw) / G0jw # multiplicative error
DeltaM_samples.append(DeltaM.squeeze())
DeltaM_samples = np.array(DeltaM_samples) # shape: (n_samples, n_freq)
# Empirical bound over samples
DeltaM_mag = np.abs(DeltaM_samples)
DeltaM_bound = DeltaM_mag.max(axis=0) # max over samples at each frequency
# Design a simple bound: here we just exaggerate by 20% for safety
DeltaM_bound_safe = 1.2 * DeltaM_bound
# (Plotting code would use matplotlib; omitted here for brevity)
# In practice, plot DeltaM_bound_safe vs frequency and hand-fit a simple W_M(s).
# Example: define a crude first-order weight W_M(s) that roughly matches the bound
# W_M(s) = k_w * s/(s + w_c) + epsilon
k_w = 0.3
w_c = 1.0 / tau0
epsilon = 0.05
WM = k_w * s / (s + w_c) + epsilon
print("Nominal plant G0(s):", G0)
print("Example multiplicative weight W_M(s):", WM)
In a robot joint control context, \( G_0(s) \) might represent the identified actuator dynamics for a given link, while uncertainties in inertia, friction, and gear backlash are translated into ranges for \( K \) and \( \tau \). The estimated multiplicative bound can then inform controller bandwidth and stability margin selection.
8. C++ Lab – Time-Domain Simulation of Uncertain Plants
In C++, a typical robotics environment uses libraries such as
Eigen for linear algebra and ROS/ROS 2 for communication
and control. Here we show a stand-alone example that discretizes the
first-order plant and simulates step responses over a set of uncertain
parameters. The same code structure can be embedded in a
ros2_control controller to explore robustness of a joint
servo loop.
#include <iostream>
#include <vector>
#include <random>
// Simple first-order continuous-time model:
// G(s) = K / (tau s + 1)
// Discretized with forward Euler for simulation.
struct FirstOrderPlant {
double K;
double tau;
double y; // state (output)
double Ts; // sampling period
FirstOrderPlant(double K_, double tau_, double Ts_)
: K(K_), tau(tau_), y(0.0), Ts(Ts_) {}
double step(double u) {
// Continuous-time: tau * dy/dt = -y + K * u
// Forward Euler: y[k+1] = y[k] + Ts/tau * (-y[k] + K*u[k])
double dy = (-y + K * u) * (Ts / tau);
y += dy;
return y;
}
};
int main() {
double K0 = 10.0;
double tau0 = 0.05;
double alpha = 0.2; // 20% gain uncertainty
double beta = 0.1; // 10% tau uncertainty
double Ts = 0.001;
int N = 2000; // simulation steps
std::mt19937 gen(1234);
std::uniform_real_distribution<double> uni(-1.0, 1.0);
// Nominal plant
FirstOrderPlant plant_nom(K0, tau0, Ts);
// Example uncertain plant
double K_unc = K0 * (1.0 + alpha * uni(gen));
double tau_unc = tau0 * (1.0 + beta * uni(gen));
FirstOrderPlant plant_unc(K_unc, tau_unc, Ts);
std::vector<double> y_nom(N), y_unc(N);
double u = 1.0; // unit step
for (int k = 0; k < N; ++k) {
y_nom[k] = plant_nom.step(u);
y_unc[k] = plant_unc.step(u);
}
// Print a few samples for comparison
for (int k = 0; k < N; k += 200) {
std::cout << "k=" << k
<< " y_nom=" << y_nom[k]
<< " y_unc=" << y_unc[k] << std::endl;
}
return 0;
}
In a robotics C++ stack, the nominal model G0 is typically used to design the controller gains (e.g. PD gains for joint position). The sampling-based exploration of parameter variations shown above gives insight into step response variations, which can be related back to multiplicative bounds in the frequency domain.
9. Java Lab – Bode-Based Relative Error for Uncertain Parameters
In Java, scientific and robotics applications often rely on libraries
such as
Apache Commons Math or EJML for numerical
work. The following example uses plain Java to compute the magnitude of
the nominal and uncertain frequency responses, from which we obtain a
discrete approximation of the multiplicative error. The same code
structure could be wrapped into a higher-level robotics framework for
model-based control of manipulators implemented in Java.
public class MultiplicativeUncertaintyDemo {
// Magnitude of G(jw) = K / (1 + j w tau)
static double magG(double w, double K, double tau) {
double denomRe = 1.0;
double denomIm = w * tau;
double denomMag = Math.sqrt(denomRe * denomRe + denomIm * denomIm);
return K / denomMag;
}
public static void main(String[] args) {
double K0 = 10.0;
double tau0 = 0.05;
double alpha = 0.2;
double beta = 0.1;
double[] w = new double[50];
for (int i = 0; i < w.length; ++i) {
// logspace from 1 to 1000 rad/s
double t = (double) i / (w.length - 1);
w[i] = Math.pow(10.0, 0.0 + 3.0 * t);
}
// Example uncertain parameters at extremes
double K_unc = K0 * (1.0 + alpha);
double tau_unc = tau0 * (1.0 - beta);
System.out.println("w, |Delta_M(jw)|");
for (int i = 0; i < w.length; ++i) {
double wi = w[i];
double G0mag = magG(wi, K0, tau0);
double Gmag = magG(wi, K_unc, tau_unc);
double deltaM = Math.abs(Gmag - G0mag) / G0mag;
System.out.println(wi + ", " + deltaM);
}
}
}
The output is a table of \( \omega \) vs. \( |\Delta_M(\mathrm{j}\omega)| \). Plotting this data (e.g. in a Java-based visualization or exporting it to CSV) allows the designer to fit a simple multiplicative weight \( W_M(s) \) for use in classical robustness analysis.
10. MATLAB/Simulink Lab – Uncertainty for a Robot Joint Actuator
MATLAB is a standard platform in control and robotics. We use the Control System Toolbox to construct the nominal and uncertain plants. In a robotics context, the same transfer functions would be coupled to joint-space dynamics using Robotics System Toolbox, but we keep the example at the SISO actuator level here.
% Nominal first-order plant for a robot joint actuator
K0 = 10; % rad/(V*s)
tau0 = 0.05; % s
s = tf('s');
G0 = K0 / (tau0*s + 1);
alpha = 0.2; % 20% gain
beta = 0.1; % 10% time constant
w = logspace(0,3,300); % 1 to 1000 rad/s
% Frequency response of nominal plant
[mag0,ph0] = bode(G0,w);
mag0 = squeeze(mag0);
% Sample several uncertain plants
nSamples = 50;
DeltaM_bound = zeros(size(w));
for k = 1:nSamples
K = K0 * (1 + alpha*(2*rand-1));
tau = tau0* (1 + beta *(2*rand-1));
G = K / (tau*s + 1);
mag = squeeze(bode(G,w));
DeltaM = abs(mag - mag0) ./ mag0;
DeltaM_bound = max(DeltaM_bound, DeltaM);
end
% Simple hand-designed multiplicative weight (first order plus offset)
kw = 0.3;
wc = 1/tau0;
eps = 0.05;
WM = kw*s/(s+wc) + eps;
% Compare |W_M(jw)| to empirical bound
[magW,~] = bode(WM,w);
magW = squeeze(magW);
figure;
loglog(w, DeltaM_bound, 'LineWidth', 1.5); hold on;
loglog(w, magW, '--', 'LineWidth', 1.5);
grid on;
xlabel('\omega [rad/s]');
ylabel('Magnitude');
legend('|Delta_M(j\omega)| bound', '|W_M(j\omega)|');
title('Multiplicative uncertainty bound vs weight');
% In Simulink, G0 and W_M can be implemented using Transfer Fcn blocks, and
% Delta as a gain in [-1,1] to visualize worst-case plant trajectories.
This workflow emphasizes how Monte Carlo parameter sweeps, frequency-response analysis, and simple weighting functions combine to produce an interpretable multiplicative uncertainty model suitable for classical robustness checks.
11. Wolfram Mathematica Lab – Symbolic and Numeric Bounds
Wolfram Mathematica offers symbolic manipulation and frequency-response
computation via TransferFunctionModel. Here we compute a
relative error curve and fit a simple rational approximation that can
serve as a multiplicative weight. Mathematica also has functionality for
kinematics and dynamics of robotic mechanisms, within which these SISO
actuator uncertainties can be embedded.
(* Nominal plant *)
K0 = 10.0;
tau0 = 0.05;
s = LaplaceTransformVariable[s];
G0 = TransferFunctionModel[K0/(tau0*s + 1), s];
alpha = 0.2;
beta = 0.1;
(* Frequency grid *)
wlist = Table[10.^x, {x, 0, 3, 0.05}];
(* Helper to evaluate magnitude of first-order plant *)
Gmag[K_, tau_, w_] := Module[{num, den},
num = K;
den = Complex[1.0, w*tau];
Abs[num/den]
];
(* Empirical bound on |Delta_M(j w)| using extreme parameters *)
deltaMlist = Table[
Module[{w = wi, G0mag, GmagHi, GmagLo, d1, d2},
G0mag = Gmag[K0, tau0, w];
GmagHi = Gmag[K0*(1+alpha), tau0*(1-beta), w];
GmagLo = Gmag[K0*(1-alpha), tau0*(1+beta), w];
d1 = Abs[GmagHi - G0mag]/G0mag;
d2 = Abs[GmagLo - G0mag]/G0mag;
Max[d1, d2]
],
{wi, wlist}
];
(* Fit a simple model: |W_M(j w)| ~ a + b w/(w + wc) *)
a = 0.05;
b = 0.3;
wc = 1/tau0;
WMmag[w_] := a + b * (w/(w + wc));
ListLogLogPlot[
{
Transpose[{wlist, deltaMlist}],
Table[{w, WMmag[w]}, {w, wlist}]
},
PlotLegends -> {"|Delta_M(j w)| bound", "|W_M(j w)| model"},
Joined -> {True, True},
PlotRange -> All,
Frame -> True,
FrameLabel -> {"\!\(\*SubscriptBox[\(\[Omega]\), \(\)]\) [rad/s]", "Magnitude"}
]
This example highlights Mathematica's ability to combine symbolic models with numerical exploration for constructing uncertainty weights that are consistent with simple parametric ranges.
12. Problems and Solutions
Problem 1 (Equivalence of Additive and Multiplicative Uncertainty): Let \( G_0(s) \) be a stable transfer function with \( G_0(\mathrm{j}\omega) \neq 0 \) for all real \( \omega \). Suppose the true plant satisfies the additive model
\[ G(s) \;=\; G_0(s) + \Delta_A(s), \qquad \bigl|\Delta_A(\mathrm{j}\omega)\bigr| \le \bar{\Delta}_A(\omega). \]
Show that there exists a multiplicative uncertainty description
\[ G(s) \;=\; G_0(s)\,\bigl(1 + \Delta_M(s)\bigr), \]
with a bound \( |\Delta_M(\mathrm{j}\omega)| \le \bar{\Delta}_M(\omega) \) expressible in terms of \( \bar{\Delta}_A(\omega) \) and \( |G_0(\mathrm{j}\omega)| \).
Solution:
Whenever \( G_0(s) \neq 0 \), define
\[ \Delta_M(s) \;\triangleq\; \frac{\Delta_A(s)}{G_0(s)}. \]
Then
\[ \begin{aligned} G(s) &= G_0(s) + \Delta_A(s) \\[2pt] &= G_0(s)\left(1 + \frac{\Delta_A(s)}{G_0(s)}\right) \\[2pt] &= G_0(s)\,\bigl(1 + \Delta_M(s)\bigr), \end{aligned} \]
so the multiplicative representation holds. On the imaginary axis,
\[ \bigl|\Delta_M(\mathrm{j}\omega)\bigr| \;=\; \frac{\bigl|\Delta_A(\mathrm{j}\omega)\bigr|}{\bigl|G_0(\mathrm{j}\omega)\bigr|} \;\leq\; \frac{\bar{\Delta}_A(\omega)}{\bigl|G_0(\mathrm{j}\omega)\bigr|}. \]
Thus a valid bound is
\[ \bar{\Delta}_M(\omega) \;\triangleq\; \frac{\bar{\Delta}_A(\omega)}{\bigl|G_0(\mathrm{j}\omega)\bigr|}. \]
The assumption \( G_0(\mathrm{j}\omega) \neq 0 \) is essential: if the nominal plant has zeros on the imaginary axis, the multiplicative model may blow up near those frequencies.
Problem 2 (Additive Model from Relative Error Bound): Conversely, suppose \( G(s) = G_0(s)(1 + \Delta_M(s)) \) with \( |\Delta_M(\mathrm{j}\omega)| \le \delta \) for all \( \omega \) in some band. Show that an additive uncertainty bound of the form
\[ \bigl|\Delta_A(\mathrm{j}\omega)\bigr| \le \bar{\Delta}_A(\omega) \]
can be chosen, and give an explicit expression for \( \bar{\Delta}_A(\omega) \).
Solution:
From the multiplicative model,
\[ \Delta_A(s) \;=\; G(s) - G_0(s) \;=\; G_0(s)\,\Delta_M(s). \]
Hence on the imaginary axis
\[ \bigl|\Delta_A(\mathrm{j}\omega)\bigr| \;=\; \bigl|G_0(\mathrm{j}\omega)\bigr|\,\bigl|\Delta_M(\mathrm{j}\omega)\bigr| \;\leq\; \delta\,\bigl|G_0(\mathrm{j}\omega)\bigr|. \]
Therefore we may take
\[ \bar{\Delta}_A(\omega) \;\triangleq\; \delta\,\bigl|G_0(\mathrm{j}\omega)\bigr|. \]
This reproduces the intuitive statement that a fixed relative error bound corresponds to an additive error bound that scales with the nominal magnitude.
Problem 3 (Low-Frequency Behavior of Parametric Relative Error): For the first-order plant with parameter intervals as in Section 6, show that for sufficiently low frequencies \( \omega \tau_0 \ll 1 \), the relative error bound satisfies approximately
\[ \bar{\Delta}_M(\omega) \;\approx\; \alpha + \beta\,\omega\tau_0. \]
Solution:
From the approximate bound derived in Section 6,
\[ \bar{\Delta}_M(\omega) \;\approx\; \alpha + \beta\,\frac{\omega\tau_0}{\sqrt{1 + \omega^2\tau_0^2}}. \]
For \( \omega\tau_0 \ll 1 \), we use the Taylor expansion \( \sqrt{1 + x^2} \approx 1 + \tfrac{1}{2}x^2 \). Substituting \( x = \omega\tau_0 \) and ignoring higher-order terms gives
\[ \frac{\omega\tau_0}{\sqrt{1 + \omega^2\tau_0^2}} \;\approx\; \omega\tau_0\left(1 - \tfrac{1}{2}\omega^2\tau_0^2\right) \;\approx\; \omega\tau_0, \]
so that
\[ \bar{\Delta}_M(\omega) \;\approx\; \alpha + \beta\,\omega\tau_0 \]
at low frequencies. This linear-in-frequency term reflects increasing sensitivity to the time constant as \( \omega \) grows away from zero.
Problem 4 (Uncertainty Disk Around the Loop Transfer): Let \( L_0(\mathrm{j}\omega) \) be the nominal loop transfer and suppose a multiplicative bound \( |\Delta_M(\mathrm{j}\omega)| \le \delta \) holds for the plant. Show that the true loop transfer satisfies
\[ \bigl|L(\mathrm{j}\omega) - L_0(\mathrm{j}\omega)\bigr| \;\leq\; \delta\,\bigl|L_0(\mathrm{j}\omega)\bigr|. \]
Solution:
The loop transfer with multiplicative plant uncertainty is
\[ L(s) \;=\; C(s)G(s) \;=\; C(s)G_0(s)\,\bigl(1 + \Delta_M(s)\bigr) \;=\; L_0(s)\,\bigl(1 + \Delta_M(s)\bigr). \]
Therefore
\[ \begin{aligned} L(\mathrm{j}\omega) - L_0(\mathrm{j}\omega) &= L_0(\mathrm{j}\omega)\,\Delta_M(\mathrm{j}\omega), \\[2pt] \bigl|L(\mathrm{j}\omega) - L_0(\mathrm{j}\omega)\bigr| &= \bigl|L_0(\mathrm{j}\omega)\bigr| \,\bigl|\Delta_M(\mathrm{j}\omega)\bigr| \\[2pt] &\leq \delta\,\bigl|L_0(\mathrm{j}\omega)\bigr|. \end{aligned} \]
Geometrically, this means that the true Nyquist curve lies within a disk of radius \( \delta|L_0(\mathrm{j}\omega)| \) centered at each point of the nominal Nyquist curve, consistent with the intuition behind multiplicative uncertainty.
Problem 5 (Decision Flow Between Additive and Multiplicative Models): For a given plant modeling task, outline a decision flow for choosing whether to use additive or multiplicative uncertainty. Consider whether the nominal model crosses the origin, what type of physical information you have (absolute vs relative error), and your intended use (plant vs loop uncertainty).
Solution (conceptual):
flowchart TD
S["Start: modeling task"] --> O["Does G0(j omega) approach 0 in band of interest?"]
O -->|yes| ADD["Use additive model: \nabsolute error known"]
O -->|no| REL["Is relative error \ninformation available?"]
REL -->|yes| MUL["Use multiplicative model: \nG = G0 (1 + W_M Delta)"]
REL -->|no| DATA["Fit error magnitude from data, \nthen choose model"]
ADD --> LOOP["If loop analysis: transform to \nmultiplicative if needed"]
MUL --> LOOP
The key points are:
- If \( G_0(\mathrm{j}\omega) \) becomes very small, additive uncertainty often avoids numerical issues and better reflects absolute error.
- If relative error is more meaningful (e.g. “gain within ±20%”), multiplicative uncertainty is natural and convenient for loop-transfer reasoning.
- Transformations between models are possible whenever \( G_0(\mathrm{j}\omega) \neq 0 \), as shown in Problems 1 and 2.
13. Summary
In this lesson we developed simple yet rigorous models for representing uncertainty around a nominal transfer function in classical control:
- The additive model \( G = G_0 + W_A\Delta \) describes absolute modeling error and is convenient when the nominal response may cross the origin.
- The multiplicative model \( G = G_0(1 + W_M\Delta) \) encodes relative error and naturally aligns with Nyquist and Bode interpretations.
- We related these models through explicit formulas and showed how parametric uncertainty in a first-order plant leads to frequency-dependent relative error bounds.
- We implemented Monte Carlo estimation of multiplicative bounds in Python, C++, Java, MATLAB/Simulink, and Wolfram Mathematica, with an eye toward actuator-level models in robotics.
In the next chapter, these uncertainty descriptions will be combined with sensitivity functions and stability margins to perform robustness analysis using classical tools such as Bode, Nyquist, and Nichols diagrams.
14. References
- Zames, G. (1981). Feedback and optimal sensitivity: Model reference transformations, multiplicative seminorms, and approximate inverses. IEEE Transactions on Automatic Control, 26(2), 301–320.
- Safonov, M.G., Laub, A.J., & Hartmann, G.L. (1981). Feedback properties of multivariable systems: The role and use of the return difference matrix. IEEE Transactions on Automatic Control, 26(1), 47–65.
- Doyle, J.C., Wall, J.E., & Stein, G. (1982). Performance and robustness analysis for structured uncertainty. Proceedings of the 21st IEEE Conference on Decision and Control, 629–636.
- Stein, G. (1989). Respect the unstable. IEEE Control Systems Magazine, 9(4), 12–25.
- Vidyasagar, M. (1985). Control System Synthesis: A Factorization Approach. MIT Press. (Chapters on coprime factorization and uncertainty).
- Zhou, K., Doyle, J.C., & Glover, K. (1996). Robust and Optimal Control. Prentice Hall. (Sections on multiplicative and additive uncertainty; foundational theoretical treatment).
- Skogestad, S., & Postlethwaite, I. (1996). Multivariable Feedback Control: Analysis and Design. Wiley. (Early chapters on simple uncertainty models for SISO and MIMO systems).