Chapter 17: Stability Margins and Classical Robustness Measures

Lesson 3: Delay Margin and Its Relationship to Phase Margin

This lesson introduces delay margin as a robustness measure of a feedback loop against pure time delay, and shows how it is quantitatively related to the phase margin already defined in previous lessons. We work in the frequency domain with open-loop transfer functions, Nyquist/Bode plots, and provide analytical and computational formulas, including implementations in Python, C++, Java, MATLAB/Simulink, and Wolfram Mathematica with a view toward robotic control systems.

1. Conceptual Overview of Delay in Feedback Loops

Real control systems rarely act instantaneously. Sensor filtering, actuator dynamics, computation, and communication introduce time delays. Even a stable loop with comfortable gain and phase margins can become unstable if the delay becomes too large. The delay margin answers:

“What is the maximum additional pure delay that the closed-loop system can tolerate before losing stability?”

Consider a unity-feedback loop with controller \( C(s) \), plant \( G(s) \), and a pure delay of length \( T \) placed anywhere in the loop (for linear analysis, any location along the loop is equivalent because the delay factor multiplies the open-loop transfer function). The effective loop transfer function is:

\[ L_{\mathrm{d}}(s) = C(s)G(s)e^{-sT}. \]

The closed-loop transfer function is then:

\[ T_{\mathrm{cl}}(s) = \frac{L_{\mathrm{d}}(s)}{1 + L_{\mathrm{d}}(s)}. \]

The delay does not change the loop gain magnitude at a given frequency, but it adds extra negative phase, which reduces the phase margin and can eventually drive the Nyquist plot through the \(-1\) point, causing instability.

flowchart TD
  R["Reference r"] --> S["Summing junction"]
  S --> C["Controller C(s)"]
  C --> D["Pure delay exp(-s T)"]
  D --> G["Plant G(s)"]
  G --> Y["Output y"]
  Y --> H["Sensor"]
  H --> N["Negative feedback to summing junction"]
        

Delay margin is therefore a time-domain robustness measure derived from frequency-domain information, tightly connected to the phase margin at the gain crossover frequency.

2. Modeling Pure Time Delay in Laplace and Frequency Domains

A pure time delay of length \( T \) acting on a signal \( u(t) \) is defined by:

\[ y(t) = u(t - T), \quad T > 0. \]

The Laplace transform of this relationship is:

\[ \mathcal{L}\{u(t - T)\} = e^{-sT}U(s), \]

so a pure delay appears in the Laplace domain as a multiplicative factor \( e^{-sT} \). In the frequency domain (\( s = j\omega \)), the delay contributes a frequency-dependent phase lag:

\[ e^{-j\omega T} = \cos(\omega T) - j\sin(\omega T), \]

hence:

\[ \left| e^{-j\omega T} \right| = 1, \quad \arg\left(e^{-j\omega T}\right) = -\omega T \quad \text{(radians)}. \]

If the delay-free loop transfer function is \( L(s) = C(s)G(s) \), then with delay \(T\):

\[ L_{\mathrm{d}}(j\omega) = L(j\omega)e^{-j\omega T}. \]

Therefore, at every frequency \( \omega \), the magnitude of the loop gain is unchanged, while the phase is shifted by an additional \( -\omega T \):

\[ \left|L_{\mathrm{d}}(j\omega)\right| = \left|L(j\omega)\right|, \quad \arg L_{\mathrm{d}}(j\omega) = \arg L(j\omega) - \omega T. \]

This linear relationship between delay and phase is the key to relating delay margin to phase margin.

3. Phase Margin Recap at the Gain Crossover Frequency

Recall from previous lessons that the gain crossover frequency \( \omega_{\mathrm{gc}} \) is defined by:

\[ \left|L(j\omega_{\mathrm{gc}})\right| = 1. \]

Let the phase of the loop transfer function at that frequency be \( \phi_{\mathrm{gc}} \):

\[ \phi_{\mathrm{gc}} = \arg L(j\omega_{\mathrm{gc}}). \]

For a minimum-phase loop with no right-half-plane poles in the open loop, the Nyquist criterion tells us that closed-loop stability is largely determined by the behavior of the Nyquist plot around the critical point \(-1\). A useful measure of relative stability is the phase margin \( \phi_m \), defined (in radians) as:

\[ \phi_m = \pi + \phi_{\mathrm{gc}} = \pi + \arg L(j\omega_{\mathrm{gc}}). \]

In degrees, the equivalent is:

\[ \phi_m^{\circ} = 180^\circ + \phi_{\mathrm{gc}}^{\circ}, \]

where \( \phi_{\mathrm{gc}}^{\circ} \) denotes the phase angle in degrees. A “comfortable” phase margin (for classical design) is often between \(30^\circ\) and \(60^\circ\); larger margins mean more robustness to additional phase lag, including that introduced by time delays.

4. Derivation of Delay Margin and Its Relationship to Phase Margin

We now derive a simple but powerful approximate formula relating the delay margin to the phase margin. Assume:

  • The delay-free closed loop with \( L(s) = C(s)G(s) \) is stable.
  • The loop is minimum phase and has a well-defined gain crossover frequency \( \omega_{\mathrm{gc}} \).
  • We consider moderate delays so that the gain crossover frequency does not shift dramatically when delay is added (this approximation is accurate in many practical designs).

With a delay \( T \), the loop transfer function becomes \( L_{\mathrm{d}}(s) = L(s)e^{-sT} \). At the original gain crossover frequency \( \omega_{\mathrm{gc}} \), the magnitude is still unity:

\[ \left|L_{\mathrm{d}}(j\omega_{\mathrm{gc}})\right| = \left|L(j\omega_{\mathrm{gc}})\right| \cdot \left|e^{-j\omega_{\mathrm{gc}}T}\right| = 1 \cdot 1 = 1. \]

However, the phase at \( \omega_{\mathrm{gc}} \) is now:

\[ \arg L_{\mathrm{d}}(j\omega_{\mathrm{gc}}) = \arg L(j\omega_{\mathrm{gc}}) - \omega_{\mathrm{gc}}T = \phi_{\mathrm{gc}} - \omega_{\mathrm{gc}}T. \]

The closed-loop system becomes critically stable when the Nyquist plot passes exactly through \(-1\). At that point, at some frequency where the magnitude is unity, the phase must satisfy:

\[ \arg L_{\mathrm{d}}(j\omega_{\mathrm{gc}}) = -\pi. \]

Substituting the expression for the delayed phase:

\[ \phi_{\mathrm{gc}} - \omega_{\mathrm{gc}}T_{\mathrm{d}} = -\pi, \]

where \( T_{\mathrm{d}} \) is the critical delay at which the closed loop loses stability. Rearranging:

\[ \omega_{\mathrm{gc}}T_{\mathrm{d}} = \phi_{\mathrm{gc}} + \pi = \phi_m. \]

Therefore, in radians:

\[ T_{\mathrm{d}} = \frac{\phi_m}{\omega_{\mathrm{gc}}}. \]

In degrees, write \( \phi_m^{\circ} \) for the phase margin in degrees, then:

\[ T_{\mathrm{d}} = \frac{\phi_m^{\circ}\pi}{180 \, \omega_{\mathrm{gc}}}. \]

This formula gives the delay margin: the maximum amount of pure delay that can be added before the phase margin is driven to zero. For \( 0 \leq T < T_{\mathrm{d}} \), the phase margin remains positive and the closed loop is expected to be stable (subject to the assumptions made above).

More formally, if \( \mathcal{S}(T) \) is the event “closed loop with delay \( T \) is asymptotically stable”, we can define:

\[ T_{\mathrm{d,max}} = \sup\{\,T \geq 0 \mid \mathcal{S}(T) \text{ holds}\,\}. \]

The expression \( T_{\mathrm{d}} = \phi_m / \omega_{\mathrm{gc}} \) is an excellent approximation to \( T_{\mathrm{d,max}} \) in many classical design situations, particularly when the Nyquist curve crosses the unit circle near \( \omega_{\mathrm{gc}} \) with roughly constant slope.

5. Computing Delay Margin from a Bode Plot

Given the open-loop Bode plot of \( L(j\omega) \), we can compute the delay margin without explicitly drawing Nyquist curves:

  1. Find the gain crossover frequency \( \omega_{\mathrm{gc}} \) where \( \left|L(j\omega_{\mathrm{gc}})\right| = 1 \).
  2. At that frequency, read off the phase \( \phi_{\mathrm{gc}} \) (in degrees).
  3. Compute the phase margin: \( \phi_m^{\circ} = 180^\circ + \phi_{\mathrm{gc}}^{\circ} \).
  4. Convert the phase margin to delay margin: \( T_{\mathrm{d}} = \dfrac{\phi_m^{\circ}\pi}{180 \, \omega_{\mathrm{gc}}} \).
flowchart TD
  A["Open-loop Bode plot of L(j w)"] --> B["Locate gain crossover w_gc where |L(j w_gc)| = 1"]
  B --> C["Read phase phi_gc (deg) at w_gc"]
  C --> D["Compute phase margin PM_deg = 180 + phi_gc"]
  D --> E["Delay margin T_d = PM_deg * pi / (180 * w_gc)"]
        

In practice, software tools (MATLAB, Python control libraries, etc.) provide phase margin and gain crossover frequency directly; the delay margin can then be obtained from the formula above. Some tools also offer delay margin computation directly via Nyquist-based algorithms.

6. Example – Proportional Control of an Integrating Plant

Consider the simple but important case of a plant with transfer function \( G(s) = \dfrac{1}{s} \) (an integrator) controlled by a proportional controller \( C(s) = K \). This configuration appears in, for example, velocity control of a robot wheel where position is obtained by integrating velocity.

The loop transfer function without delay is:

\[ L(s) = C(s)G(s) = \frac{K}{s}. \]

Its frequency response is:

\[ L(j\omega) = \frac{K}{j\omega} = \frac{K}{\omega} e^{-j\frac{\pi}{2}}. \]

The magnitude and phase are:

\[ \left|L(j\omega)\right| = \frac{K}{\omega}, \quad \arg L(j\omega) = -\frac{\pi}{2} \quad (-90^\circ). \]

The gain crossover frequency is where \( \left|L(j\omega_{\mathrm{gc}})\right| = 1 \):

\[ \frac{K}{\omega_{\mathrm{gc}}} = 1 \quad \Rightarrow \quad \omega_{\mathrm{gc}} = K. \]

The phase at \( \omega_{\mathrm{gc}} \) is always \( -\pi/2 \), independent of \( K \), so:

\[ \phi_m = \pi + \left(-\frac{\pi}{2}\right) = \frac{\pi}{2} \quad (90^\circ). \]

Hence the phase margin is \(90^\circ\) regardless of the proportional gain. The delay margin (in radians) is:

\[ T_{\mathrm{d}} = \frac{\phi_m}{\omega_{\mathrm{gc}}} = \frac{\frac{\pi}{2}}{K} = \frac{\pi}{2K}. \]

For example, if \( K = 10 \), then:

\[ \omega_{\mathrm{gc}} = 10 \;\text{rad/s}, \quad T_{\mathrm{d}} = \frac{\pi}{20} \approx 0.157 \;\text{s}. \]

This means the closed-loop position control of the integrator-like plant is robust to up to about 160 ms of total loop delay (sensor, computation, communication, actuator) before losing stability. This is particularly relevant in teleoperated or networked robotic systems where communication delays can be significant.

7. Python Implementation – Phase and Delay Margins (Robotics-Oriented)

Using the python-control library, which integrates well with robotics modeling tools such as roboticstoolbox-python, we can compute phase margin and delay margin directly for linearized robot joint models.


import numpy as np
import control as ctl  # python-control: classical control toolbox

# Example: G(s) = 1/s, C(s) = K
K = 10.0
s = ctl.TransferFunction.s
G = 1 / s
C = K
L = C * G

# Compute classical margins
gm, pm, wg, wp = ctl.margin(L)

# Delay margin from phase margin and gain crossover frequency
Td_from_pm = np.deg2rad(pm) / wg

print("Phase margin (deg):", pm)
print("Gain crossover (rad/s):", wg)
print("Approximate delay margin (s):", Td_from_pm)
      

In a robotics context, G would typically be obtained from a linearization of a robot joint or end-effector dynamics around a nominal configuration. For example, with roboticstoolbox one can linearize the manipulator dynamics and feed the resulting state-space model into python-control to get L(s) and compute delay margins.

We can also approximate the effect of delay using a Padé approximation (for analysis only) and confirm that the delay value from the formula indeed destabilizes the loop:


# Approximate the critical delay using phase margin
Td_critical = Td_from_pm

# First-order Pade approximation of e^{-s T}
num_pade, den_pade = ctl.pade(Td_critical, 1)
Delay_approx = ctl.TransferFunction(num_pade, den_pade)

L_delayed_approx = L * Delay_approx
T_cl = ctl.feedback(L_delayed_approx, 1)

poles = ctl.pole(T_cl)
print("Closed-loop poles with approximate critical delay:", poles)
      

At (or slightly above) the critical delay, at least one pole will be close to or in the right-half plane, confirming the loss of stability predicted by the delay margin formula.

8. C++ and Java Implementations for Robotics Software Stacks

In many robotic systems, low-level controllers are written in C++ (e.g., in ROS or embedded firmware), while higher-level control strategies might be prototyped in Java (e.g., educational robotics frameworks such as WPILib). The core delay margin formula is simple to implement:

\[ T_{\mathrm{d}} = \frac{\phi_m^{\circ}\pi}{180 \, \omega_{\mathrm{gc}}}. \]

8.1 C++ Utility Function


#include <iostream>
#include <cmath>

// Compute delay margin from phase margin (deg) and gain crossover (rad/s)
double delayMargin(double phaseMarginDeg, double w_gc) {
    const double phaseMarginRad = phaseMarginDeg * M_PI / 180.0;
    return phaseMarginRad / w_gc;
}

int main() {
    double phaseMarginDeg = 45.0;   // e.g., from offline Bode plot
    double w_gc = 5.0;              // rad/s
    double T_d = delayMargin(phaseMarginDeg, w_gc);
    std::cout << "Delay margin (s): " << T_d << std::endl;

    // In a ROS node, this function can be used to check whether the estimated
    // communication + computation delay stays below T_d for a given controller.
    return 0;
}
      

8.2 Java Utility Class


public class DelayMarginExample {

    // Compute delay margin from phase margin (deg) and gain crossover (rad/s)
    public static double delayMargin(double phaseMarginDeg, double wGc) {
        double phaseMarginRad = Math.toRadians(phaseMarginDeg);
        return phaseMarginRad / wGc;
    }

    public static void main(String[] args) {
        double phaseMarginDeg = 45.0; // from design tool or measurement
        double wGc = 5.0;             // rad/s
        double Td = delayMargin(phaseMarginDeg, wGc);
        System.out.println("Delay margin (s): " + Td);

        // In a robotics framework such as WPILib, this can guide the selection
        // of sampling times and network delays allowed in a closed-loop system.
    }
}
      

In both C++ and Java, phase margin and crossover frequency are typically obtained from offline analysis (MATLAB, Python, etc.) or from identification experiments. The utility functions above can then be used in real-time software to monitor whether measured or estimated delays remain safely below the delay margin.

9. MATLAB/Simulink and Wolfram Mathematica Workflows

9.1 MATLAB/Simulink

MATLAB's Control System Toolbox provides built-in functions for gain and phase margins. In Simulink, the same plant/controller pair can be simulated with and without delay blocks to visualize the effect of approaching the delay margin.


% Proportional control of G(s) = 1/s
K = 10;
s = tf('s');
G = 1/s;
C = K;
L = C*G;

% Classical margins
[gm, pm, wg, wp] = margin(L);

% Delay margin from phase margin and gain crossover
Td = deg2rad(pm)/wg;

fprintf('Phase margin = %.2f deg\n', pm);
fprintf('Gain crossover = %.2f rad/s\n', wg);
fprintf('Approximate delay margin = %.4f s\n', Td);

% Verify with Pade approximation of the delay
[num_pade, den_pade] = pade(Td, 1);
DelayApprox = tf(num_pade, den_pade);
L_delayed = L * DelayApprox;
T_cl = feedback(L_delayed, 1);
pole(T_cl)
      

In Simulink, a typical robot joint diagram would place a Transport Delay block in the feedback or control path; by sweeping the delay and monitoring when oscillations or divergence occur, the experimentally observed delay margin can be compared with the analytical prediction above.

9.2 Wolfram Mathematica

Mathematica can also be used for symbolic and numerical analysis of delay margins.


(* Loop transfer function L(s) = K/s *)
K = 10;
L[s_] := K/s;

(* For G(s) = 1/s and C(s) = K, we know:
   w_gc = K, phase margin = Pi/2, so delay margin is: *)
wgc = K;
phaseMarginRad = Pi/2;
delayMargin = phaseMarginRad/wgc // N

(* Nyquist plot with the critical delay included via an exponential factor *)
NyquistPlot[L[s] Exp[-s delayMargin],
  {s, I*0.001, I*100},
  PlotRange -> All,
  GridLines -> Automatic]
      

More complex plants (e.g., linearized models of robotic manipulators) can be specified using TransferFunctionModel or StateSpaceModel, with frequency-response analysis used to compute phase margins and corresponding delay margins.

10. Problems and Solutions

Problem 1 (Derivation of Delay Margin Formula): Starting from the definition of phase margin and the effect of pure delay on the phase of the loop transfer function, derive the relation \( T_{\mathrm{d}} = \dfrac{\phi_m}{\omega_{\mathrm{gc}}} \), where \( \phi_m \) is in radians and \( \omega_{\mathrm{gc}} \) is the gain crossover frequency.

Solution:

Let \( L(s) \) be the delay-free loop transfer function with gain crossover \( \omega_{\mathrm{gc}} \) defined by \( \left|L(j\omega_{\mathrm{gc}})\right| = 1 \) and phase \( \phi_{\mathrm{gc}} = \arg L(j\omega_{\mathrm{gc}}) \). The phase margin (in radians) is:

\[ \phi_m = \pi + \phi_{\mathrm{gc}}. \]

Introducing a pure delay \( T \) multiplies the loop by \( e^{-sT} \), so at \( \omega_{\mathrm{gc}} \) the phase becomes:

\[ \phi_{\mathrm{gc,d}} = \arg L(j\omega_{\mathrm{gc}}) - \omega_{\mathrm{gc}}T = \phi_{\mathrm{gc}} - \omega_{\mathrm{gc}}T. \]

At the stability boundary (zero phase margin), we must have:

\[ \phi_{\mathrm{gc,d}} = -\pi \quad \Rightarrow \quad \phi_{\mathrm{gc}} - \omega_{\mathrm{gc}}T_{\mathrm{d}} = -\pi. \]

Solving for \( T_{\mathrm{d}} \):

\[ \omega_{\mathrm{gc}}T_{\mathrm{d}} = \phi_{\mathrm{gc}} + \pi = \phi_m \quad \Rightarrow \quad T_{\mathrm{d}} = \frac{\phi_m}{\omega_{\mathrm{gc}}}. \]

This is the desired relation between delay margin, phase margin, and gain crossover frequency.

Problem 2 (Numerical Delay Margin from Phase Margin): A feedback system has gain crossover frequency \( \omega_{\mathrm{gc}} = 5 \;\text{rad/s} \) and phase margin \( \phi_m^{\circ} = 45^\circ \). Compute the approximate delay margin \( T_{\mathrm{d}} \).

Solution:

Convert the phase margin to radians:

\[ \phi_m = \frac{45\pi}{180} = \frac{\pi}{4}. \]

Apply \( T_{\mathrm{d}} = \phi_m / \omega_{\mathrm{gc}} \):

\[ T_{\mathrm{d}} = \frac{\pi/4}{5} = \frac{\pi}{20} \approx 0.157 \;\text{s}. \]

Thus the closed-loop system can tolerate approximately \(0.16\) seconds of pure delay before losing stability.

Problem 3 (Integrator with Proportional Control): For the loop \( L(s) = K/s \) with \( K > 0 \), show that the phase margin is always \(90^\circ\), and derive the delay margin as a function of \( K \).

Solution:

The frequency response is \( L(j\omega) = K/(j\omega) \) with magnitude \( \left|L(j\omega)\right| = K/\omega \) and phase \( -\pi/2 \). The gain crossover frequency satisfies:

\[ \frac{K}{\omega_{\mathrm{gc}}} = 1 \quad \Rightarrow \quad \omega_{\mathrm{gc}} = K. \]

At \( \omega_{\mathrm{gc}} \), the phase is \( -\pi/2 \), so the phase margin is:

\[ \phi_m = \pi + \left(-\frac{\pi}{2}\right) = \frac{\pi}{2} \quad (90^\circ), \]

independent of \( K \). Applying the formula for delay margin:

\[ T_{\mathrm{d}} = \frac{\phi_m}{\omega_{\mathrm{gc}}} = \frac{\frac{\pi}{2}}{K} = \frac{\pi}{2K}. \]

Increasing the proportional gain \( K \) improves bandwidth (since \( \omega_{\mathrm{gc}} = K \)), but reduces the delay margin inversely with \( K \). This illustrates a fundamental trade-off between response speed and tolerance to delay.

Problem 4 (Required Phase Margin from Delay Constraint): A networked robot joint controller must tolerate at least \( T_{\max} = 50 \;\text{ms} \) of communication delay. Experimental identification shows the gain crossover frequency to be \( \omega_{\mathrm{gc}} = 20 \;\text{rad/s} \). What minimum phase margin (in degrees) should the controller provide to meet this requirement?

Solution:

We require \( T_{\mathrm{d}} \geq T_{\max} \). Using \( T_{\mathrm{d}} = \phi_m / \omega_{\mathrm{gc}} \):

\[ \phi_m \geq \omega_{\mathrm{gc}} T_{\max} = 20 \cdot 0.05 = 1 \;\text{rad}. \]

Converting to degrees:

\[ \phi_m^{\circ} \geq \frac{180}{\pi} \cdot 1 \approx 57.3^\circ. \]

Thus the controller should be designed for a phase margin of at least about \(60^\circ\) to safely tolerate the specified network delay.

Problem 5 (Qualitative Nyquist Interpretation): Explain qualitatively why adding a delay reduces the phase margin but does not change the gain margin when the delay is modeled as \( e^{-sT} \).

Solution:

In the frequency domain, the factor \( e^{-j\omega T} \) describing a pure delay has unit magnitude and phase \( -\omega T \). Therefore, for each frequency \( \omega \), the magnitude of the loop transfer function remains unchanged, while the phase is shifted by an additional negative angle. On a Nyquist plot, this has the effect of rotating the entire curve clockwise around the origin without changing its radial distance at any frequency. The phase margin (the angular separation between the Nyquist point at unit magnitude and the \(-1\) point) is reduced, but the gain margin (related to radial distance at \( -180^\circ \)) stays unchanged for a strictly pure delay. As the delay increases, the rotated Nyquist curve eventually passes through the \(-1\) point, corresponding to zero phase margin and loss of stability.

11. Summary

In this lesson we introduced delay margin as a classical robustness measure describing the maximum admissible pure time delay in a feedback loop before closed-loop instability occurs. We modeled pure delay as a multiplicative factor \( e^{-sT} \) in the loop transfer function, observed that it leaves the magnitude unchanged while subtracting phase \( \omega T \), and used this to relate delay margin to phase margin at the gain crossover frequency by \( T_{\mathrm{d}} = \phi_m / \omega_{\mathrm{gc}} \).

We then examined a concrete example (proportional control of an integrator), highlighting the trade-off between bandwidth and delay margin. Finally, we showed how to compute and use delay margin in practical software environments (Python, C++, Java, MATLAB/Simulink, and Mathematica), with emphasis on robotic control applications where communication and computation delays are unavoidable.

In the next lesson, we will build on these concepts to discuss practical interpretation of stability margins, including how to balance gain, phase, and delay margins against performance requirements in real systems.

12. References

  1. Nyquist, H. (1932). Regeneration theory. Bell System Technical Journal, 11(1), 126–147.
  2. Bode, H. W. (1940). Relations between attenuation and phase in feedback amplifier design. Bell System Technical Journal, 19(3), 421–454.
  3. Bode, H. W. (1945). Network analysis and feedback amplifier design. Bell System Technical Journal, 24(1), 1–36 (and related papers).
  4. Cohen, G. C., & Newcomb, R. W. (1965). Sensitivity and stability margins of linear systems with time delay. IEEE Transactions on Automatic Control, 10(2), 169–173.
  5. Åström, K. J., Hägglund, T., Hang, C. C., & Ho, W. K. (1992). Automatic tuning and adaptation for PID controllers – A survey. Control Engineering Practice, 1(4), 699–714.
  6. Niculescu, S.-I. (1998). On delay-dependent stability under model transformations of linear systems with delayed state. IEEE Transactions on Automatic Control, 43(5), 743–747.
  7. Michiels, W., & Niculescu, S.-I. (2002). Stability and stabilization of time-delay systems: An eigenvalue-based approach. SIAM Journal on Control and Optimization, 40(1), 155–182.
  8. Keel, L. H., & Bhattacharyya, S. P. (1995). Robust, fragile, or optimal? IEEE Transactions on Automatic Control, 42(8), 1098–1105.
  9. Ho, W. K., Hang, C. C., & Åström, K. J. (1995). Refinements of the Ziegler–Nichols tuning formula. IEE Proceedings D (Control Theory and Applications), 142(3), 297–302.
  10. Mirkin, L. (2004). On the approximation of delays by distributed delays. IEEE Transactions on Automatic Control, 49(5), 780–783.