Chapter 12: Frequency Response and Resonance
Lesson 5: Time–Frequency Domain Relationships and Trade-offs (Speed vs. Overshoot, etc.)
This lesson formalizes how frequency-response features (bandwidth, resonant peak, phase behavior) constrain and predict time-domain behavior (rise time, settling time, overshoot). We derive core relationships for LTI systems, prove a fundamental time–frequency uncertainty inequality for signals, and then specialize to the canonical second-order prototype to obtain explicit formulas linking damping ratio and natural frequency to both time- and frequency-domain performance indices.
1. Conceptual Overview: Why Time and Frequency Must Trade Off
For an LTI system, the frequency response \( G(j\omega) \): encodes how sinusoidal components are amplified and phase-shifted. Since a transient (e.g., a step response) can be decomposed into many frequency components, constraints in one domain necessarily constrain the other domain:
- \( \omega_{bw} \): larger bandwidth typically implies faster rise time and smaller dominant time constants.
- \( M_r \): a larger resonant peak typically implies stronger ringing and higher overshoot for lightly damped dynamics.
- Increasing damping reduces overshoot and resonance but generally reduces bandwidth (slows the response).
flowchart TD
A["Design knobs: wn (natural freq), \nzeta (damping)"] --> B["Frequency response"]
A --> C["Time response"]
B --> B1["Bandwidth wb: \nlarger -> faster"]
B --> B2["Resonant peak Mr: \nlarger -> more ringing"]
B --> B3["Phase slope near crossover: \nrelates to damping"]
C --> C1["Rise time tr: \nsmaller -> faster"]
C --> C2["Settling time ts: \nsmaller -> faster"]
C --> C3["Overshoot Mp: \nsmaller -> less ringing"]
B2 --> C3
B1 --> C1
B1 --> C2
A --> D["Trade-off: increase wb \noften increases Mr and \nMp unless zeta increased"]
In what follows, we make these statements precise via (i) general LTI transform relationships, (ii) a universal uncertainty inequality for signals, and (iii) explicit second-order formulas used throughout control engineering as design approximations.
2. Frequency Response from Impulse Response and Laplace Transform
Let an LTI system have impulse response \( h(t) \): (assume causality: \( h(t)=0 \) for \( t < 0 \):). For input \( u(t) \): the output is convolution \( y(t):
\[ y(t) = (h * u)(t) = \int_{0}^{\infty} h(\tau)\,u(t-\tau)\,d\tau. \]
Consider a complex exponential input \( u(t)=e^{j\omega t} \): (used as an algebraic device). Substitute into convolution:
\[ y(t) = \int_{0}^{\infty} h(\tau)\,e^{j\omega(t-\tau)}\,d\tau = e^{j\omega t}\int_{0}^{\infty} h(\tau)\,e^{-j\omega \tau}\,d\tau. \]
This motivates the definition of the frequency response: \( G(j\omega):
\[ G(j\omega) \triangleq \int_{0}^{\infty} h(t)\,e^{-j\omega t}\,dt, \quad \Rightarrow \quad y(t)=G(j\omega)\,e^{j\omega t}. \]
If the Laplace transform exists, the transfer function is \( G(s)=\int_{0}^{\infty} h(t)\,e^{-st}\,dt \): and the frequency response is the restriction \( G(j\omega)=G(s)\vert_{s=j\omega} \) when that substitution is valid (e.g., stable proper LTI).
Key consequence: broad frequency content in \( h(t) \): (fast impulse response) implies large bandwidth, which tends to produce fast step responses; narrow frequency content implies slower dynamics.
3. Time–Frequency Concentration and an Uncertainty Inequality
Beyond LTI systems, there is a universal statement for energy signals: you cannot simultaneously localize a signal arbitrarily well in time and in frequency. This is the mathematical backbone of “fast transients require wide frequency content.”
Let \( x(t) \in L^2(\mathbb{R}) \): with Fourier transform \( X(\omega) \): defined by
\[ X(\omega) = \int_{-\infty}^{\infty} x(t)\,e^{-j\omega t}\,dt, \qquad x(t) = \frac{1}{2\pi}\int_{-\infty}^{\infty} X(\omega)\,e^{j\omega t}\,d\omega. \]
Define signal energy and the time/frequency “centers”: \( E \): , \( t_0 \): , \( \omega_0 \):
\[ E = \int_{-\infty}^{\infty} |x(t)|^2\,dt, \quad t_0 = \frac{1}{E}\int_{-\infty}^{\infty} t\,|x(t)|^2\,dt, \quad \omega_0 = \frac{1}{2\pi E}\int_{-\infty}^{\infty} \omega\,|X(\omega)|^2\,d\omega. \]
Define the spreads (standard deviations) in time and frequency: \( \Delta t \): and \( \Delta \omega \):
\[ (\Delta t)^2 = \frac{1}{E}\int_{-\infty}^{\infty} (t-t_0)^2\,|x(t)|^2\,dt, \qquad (\Delta \omega)^2 = \frac{1}{2\pi E}\int_{-\infty}^{\infty} (\omega-\omega_0)^2\,|X(\omega)|^2\,d\omega. \]
Theorem (time–frequency uncertainty):
\[ \Delta t\,\Delta \omega \ge \frac{1}{2}. \]
Proof (sketch with full mathematical steps):
Without loss of generality, shift the signal so that \( t_0=0 \) and modulate so that \( \omega_0=0 \) (these operations do not change \( \Delta t \) and \( \Delta\omega \)). Consider the functions \( f(t)=t\,x(t) \): and \( g(t)=\frac{d}{dt}x(t) \):. By Cauchy–Schwarz:
\[ \left(\int_{-\infty}^{\infty} |f(t)|^2 dt\right)\left(\int_{-\infty}^{\infty} |g(t)|^2 dt\right) \ge \left|\int_{-\infty}^{\infty} f(t)\,\overline{g(t)}\,dt\right|^2. \]
The left factor is \( \int t^2|x(t)|^2 dt = E(\Delta t)^2 \). For the second factor, Parseval’s identity and the differentiation property give:
\[ \int_{-\infty}^{\infty}\left|\frac{d}{dt}x(t)\right|^2 dt = \frac{1}{2\pi}\int_{-\infty}^{\infty} \omega^2 |X(\omega)|^2 d\omega = E(\Delta \omega)^2. \]
Now evaluate the cross term by integration by parts (assuming sufficient decay so boundary terms vanish):
\[ \int_{-\infty}^{\infty} t\,x(t)\,\overline{x'(t)}\,dt = \left[t\,x(t)\,\overline{x(t)}\right]_{-\infty}^{\infty} - \int_{-\infty}^{\infty} \left(x(t)\,\overline{x(t)} + t\,x'(t)\,\overline{x(t)}\right)\,dt. \]
The boundary term is zero by decay, and the remaining expression implies
\[ \int_{-\infty}^{\infty} t\,x(t)\,\overline{x'(t)}\,dt = -\int_{-\infty}^{\infty} |x(t)|^2 dt - \int_{-\infty}^{\infty} t\,x'(t)\,\overline{x(t)}\,dt. \]
Taking complex conjugates shows the real part satisfies:
\[ 2\,\Re\left\{\int_{-\infty}^{\infty} t\,x(t)\,\overline{x'(t)}\,dt\right\} = -E. \]
Hence \( \left|\int t\,x(t)\,\overline{x'(t)}\,dt\right| \ge \frac{E}{2} \). Substituting into Cauchy–Schwarz yields
\[ \big(E(\Delta t)^2\big)\big(E(\Delta\omega)^2\big) \ge \left(\frac{E}{2}\right)^2 \quad \Rightarrow \quad \Delta t\,\Delta\omega \ge \frac{1}{2}. \]
Interpretation: making \( \Delta t \) small (fast, localized transient) forces \( \Delta\omega \) large (broad spectral content), which in LTI systems manifests as higher bandwidth and/or stronger high-frequency gain.
4. Second-Order Prototype: Exact Time–Frequency Relationships
The canonical closed-loop (or normalized plant) second-order low-pass model is:
\[ G(s) = \frac{\omega_n^2}{s^2 + 2\zeta\omega_n s + \omega_n^2}, \qquad 0 < \zeta, \quad \omega_n > 0. \]
Define the damped natural frequency \( \omega_d \):
\[ \omega_d = \omega_n\sqrt{1-\zeta^2}, \qquad 0 < \zeta < 1. \]
4.1 Step response and overshoot
For a unit-step input and \( 0 < \zeta < 1 \): the step response can be written as
\[ y(t) = 1 - \frac{1}{\sqrt{1-\zeta^2}}\,e^{-\zeta\omega_n t}\, \sin\!\big(\omega_d t + \phi\big), \qquad \phi = \arctan\!\left(\frac{\sqrt{1-\zeta^2}}{\zeta}\right). \]
The first peak occurs at \( t_p \):
\[ t_p = \frac{\pi}{\omega_d} = \frac{\pi}{\omega_n\sqrt{1-\zeta^2}}. \]
Proposition (percent overshoot):
\[ M_p = 100\,\exp\!\left(\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}\right)\%. \]
Proof: evaluate \( y(t) \) at \( t=t_p \). Using \( \sin(\omega_d t_p + \phi)=\sin(\pi+\phi)=-\sin(\phi) \) and \( \sin(\phi)=\sqrt{1-\zeta^2} \) for the chosen \( \phi \), we get:
\[ y(t_p)=1+\exp\!\left(\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}\right), \quad \Rightarrow \quad M_p = 100\big(y(t_p)-1\big). \]
A common settling-time approximation (2% band) follows from the envelope \( e^{-\zeta\omega_n t} \):
\[ t_s \approx \frac{4}{\zeta\omega_n} \quad \text{(2% criterion)}. \]
4.2 Frequency response, resonance peak, and resonance frequency
Evaluate at \( s=j\omega \):
\[ G(j\omega) = \frac{\omega_n^2}{\omega_n^2-\omega^2 + j(2\zeta\omega_n\omega)}. \]
Hence the magnitude squared is
\[ |G(j\omega)|^2 = \frac{\omega_n^4}{(\omega_n^2-\omega^2)^2 + (2\zeta\omega_n\omega)^2}. \]
Normalize by letting \( x = \omega/\omega_n \):
\[ |G(j\omega)|^2 = \frac{1}{(1-x^2)^2 + (2\zeta x)^2}. \]
The resonant peak \( M_r \): occurs at the \( \omega \) maximizing \( |G(j\omega)| \). This is equivalent to minimizing the denominator \( D(x)=(1-x^2)^2 + (2\zeta x)^2 \):. Differentiate:
\[ \frac{dD}{dx} = 2(1-x^2)(-2x) + 8\zeta^2 x = 4x\big(x^2 - 1 + 2\zeta^2\big). \]
The nonzero critical point satisfies \( x^2 = 1-2\zeta^2 \): which requires \( \zeta < 1/\sqrt{2} \):. Therefore:
\[ \omega_r = \omega_n\sqrt{1-2\zeta^2}, \qquad \text{valid when } \zeta < \frac{1}{\sqrt{2}}. \]
Substitute \( x^2=1-2\zeta^2 \) into the denominator: \( 1-x^2=2\zeta^2 \) and \( x=\sqrt{1-2\zeta^2} \), yielding
\[ D(x)= (2\zeta^2)^2 + (2\zeta)^2(1-2\zeta^2) = 4\zeta^2(1-\zeta^2). \]
Thus the resonant peak is:
\[ M_r = \max_\omega |G(j\omega)| = \frac{1}{2\zeta\sqrt{1-\zeta^2}}, \qquad \zeta < \frac{1}{\sqrt{2}}. \]
Direct linkage: both \( M_p \) and \( M_r \) are monotone decreasing in \( \zeta \) over the underdamped range, so a frequency-domain resonance constraint imposes a time-domain overshoot constraint, and conversely.
5. Bandwidth as a Predictor of Speed
Define the (magnitude) bandwidth \( \omega_{bw} \): as the smallest frequency at which the magnitude falls to \( 1/\sqrt{2} \) of the DC gain. Since \( G(0)=1 \) for the canonical model, the -3 dB condition is:
\[ |G(j\omega_{bw})|^2 = \frac{1}{2}. \]
Using the normalized expression with \( x=\omega/\omega_n \):
\[ \frac{1}{(1-x^2)^2 + (2\zeta x)^2} = \frac{1}{2} \quad \Longleftrightarrow \quad (1-x^2)^2 + (2\zeta x)^2 = 2. \]
Expand and write it as a quadratic in \( x^2 \):
\[ (1 - 2x^2 + x^4) + 4\zeta^2 x^2 - 2 = 0 \quad \Longleftrightarrow \quad x^4 + (4\zeta^2 - 2)x^2 - 1 = 0. \]
Let \( u=x^2 \):. Then:
\[ u^2 + (4\zeta^2 - 2)u - 1 = 0 \quad \Rightarrow \quad u = 1 - 2\zeta^2 + \sqrt{4\zeta^4 - 4\zeta^2 + 2}, \]
taking the positive root. Therefore the -3 dB bandwidth is
\[ \omega_{bw} = \omega_n\sqrt{1 - 2\zeta^2 + \sqrt{4\zeta^4 - 4\zeta^2 + 2}}. \]
Speed linkage: for moderate damping, \( \omega_{bw} \) scales with \( \omega_n \), while time metrics scale roughly as \( 1/(\zeta\omega_n) \). This yields an intrinsic trade-off: increasing \( \omega_n \) tends to increase bandwidth (faster), while increasing \( \zeta \) tends to reduce overshoot and resonance (safer) but can reduce bandwidth.
6. Putting It Together: Speed–Overshoot–Resonance Trade-offs
For the second-order prototype, the core metrics are explicit functions of \( \zeta \) and \( \omega_n \):
\[ M_p(\zeta) = 100\exp\!\left(\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}\right), \quad M_r(\zeta) = \frac{1}{2\zeta\sqrt{1-\zeta^2}}, \]
\[ t_s \approx \frac{4}{\zeta\omega_n}, \quad \omega_{bw} = \omega_n\sqrt{1 - 2\zeta^2 + \sqrt{4\zeta^4 - 4\zeta^2 + 2}}. \]
Design implication A (overshoot constraint fixes damping): given a maximum overshoot \( M_p^\star \), solve for \( \zeta \):
\[ \frac{M_p^\star}{100} = \exp\!\left(\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}\right) \quad \Rightarrow \quad \zeta = \frac{-\ln\!\left(M_p^\star/100\right)}{\sqrt{\pi^2 + \ln^2\!\left(M_p^\star/100\right)}}. \]
Design implication B (speed constraint fixes natural frequency): if a settling-time target \( t_s^\star \) is given, choose
\[ \omega_n \approx \frac{4}{\zeta t_s^\star}. \]
Alternatively, if a bandwidth target \( \omega_{bw}^\star \) is given, use the bandwidth formula to solve for \( \omega_n \):
\[ \omega_n = \frac{\omega_{bw}^\star}{\sqrt{1 - 2\zeta^2 + \sqrt{4\zeta^4 - 4\zeta^2 + 2}}}. \]
Qualitative trade-off (one sentence, fully rigorous): for fixed \( \zeta \), increasing \( \omega_n \) increases \( \omega_{bw} \) and decreases \( t_s \); for fixed \( \omega_n \), increasing \( \zeta \) decreases \( M_p \) and \( M_r \) but can decrease \( \omega_{bw} \), limiting achievable speed without overshoot.
7. Computational Labs: Measuring the Trade-offs in Code
The following implementations compute step-response metrics and frequency-response metrics for the second-order prototype and sweep \( \zeta \) to reveal the speed–overshoot–resonance coupling.
7.1 Python (SciPy)
File: Chapter12_Lesson5.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Chapter 12 - Lesson 5: Time–Frequency Domain Relationships and Trade-offs
# File: Chapter12_Lesson5.py
import numpy as np
from scipy import signal
def second_order_tf(zeta: float, wn: float) -> signal.TransferFunction:
num = [wn**2]
den = [1.0, 2.0 * zeta * wn, wn**2]
return signal.TransferFunction(num, den)
def step_metrics(t: np.ndarray, y: np.ndarray, tol: float = 0.02):
y_final = float(y[-1])
y_peak = float(np.max(y))
Mp = 0.0 if y_final == 0.0 else max(0.0, (y_peak - y_final) / abs(y_final)) * 100.0
y10, y90 = 0.1 * y_final, 0.9 * y_final
def first_cross(level: float):
idx = np.where(y >= level)[0]
return float(t[idx[0]]) if len(idx) else float("nan")
tr = first_cross(y90) - first_cross(y10)
band_low, band_high = (1.0 - tol) * y_final, (1.0 + tol) * y_final
outside = np.where((y < band_low) | (y > band_high))[0]
ts = float(t[outside[-1]]) if len(outside) else 0.0
return {"y_final": y_final, "Mp_percent": float(Mp), "tr": float(tr), "ts": float(ts)}
def frequency_metrics(sys: signal.TransferFunction, w: np.ndarray):
w, H = signal.freqresp(sys, w=w)
mag = np.abs(H)
Mr = float(np.max(mag))
wr = float(w[int(np.argmax(mag))])
dc = float(mag[0])
target = dc / np.sqrt(2.0)
idx = np.where(mag <= target)[0]
wb = float(w[idx[0]]) if len(idx) else float("nan")
return {"Mr": Mr, "wr": wr, "wb": wb}
def demo_single(zeta=0.3, wn=10.0):
sys = second_order_tf(float(zeta), float(wn))
t = np.linspace(0, 3.0, 4000)
t, y = signal.step(sys, T=t)
tm = step_metrics(t, y)
w = np.logspace(-2, 3, 2000) * wn
fm = frequency_metrics(sys, w)
return tm, fm
if __name__ == "__main__":
zeta, wn = 0.35, 12.0
tm, fm = demo_single(zeta=zeta, wn=wn)
print("=== Single system ===")
print(f"zeta={zeta:.3f}, wn={wn:.3f} rad/s")
print(f"Overshoot Mp = {tm['Mp_percent']:.2f}%")
print(f"Rise time tr = {tm['tr']:.4f} s (10%->90%)")
print(f"Settling time ts = {tm['ts']:.4f} s (2%)")
print(f"Resonant peak Mr = {fm['Mr']:.4f}")
print(f"Bandwidth wb = {fm['wb']:.4f} rad/s")
7.2 C++ (from-scratch frequency sweep)
File: Chapter12_Lesson5.cpp
/*
Chapter 12 - Lesson 5: Time–Frequency Domain Relationships and Trade-offs
File: Chapter12_Lesson5.cpp
*/
#include <iostream>
#include <vector>
#include <complex>
#include <cmath>
#include <iomanip>
#include <limits>
static inline double sqr(double x){ return x*x; }
struct FreqMetrics { double Mr, wr, wb; };
std::complex<double> G_jw(double w, double zeta, double wn){
std::complex<double> jw(0.0, w);
std::complex<double> den = jw*jw + 2.0*zeta*wn*jw + sqr(wn);
return sqr(wn) / den;
}
FreqMetrics frequency_metrics(double zeta, double wn){
const int N = 6000;
double wmin = 1e-2 * wn, wmax = 1e+3 * wn;
double Mr = 0.0, wr = wmin;
double dc = std::abs(G_jw(wmin, zeta, wn));
double target = dc / std::sqrt(2.0);
double wb = std::numeric_limits<double>::quiet_NaN();
bool found_bw = false;
for(int i=0;i<N;i++){
double a = static_cast<double>(i)/(N-1);
double w = wmin * std::pow(wmax/wmin, a);
double mag = std::abs(G_jw(w, zeta, wn));
if(mag > Mr){ Mr = mag; wr = w; }
if(!found_bw && mag <= target){ wb = w; found_bw = true; }
}
return {Mr, wr, wb};
}
int main(){
double zeta = 0.35, wn = 12.0;
auto fm = frequency_metrics(zeta, wn);
std::cout << std::fixed << std::setprecision(6);
std::cout << "Mr=" << fm.Mr << ", wr=" << fm.wr << ", wb=" << fm.wb << "\\n";
return 0;
}
7.3 Java (self-contained Complex arithmetic)
File: Chapter12_Lesson5.java
/*
Chapter 12 - Lesson 5: Time–Frequency Domain Relationships and Trade-offs
File: Chapter12_Lesson5.java
*/
import java.util.*;
public class Chapter12_Lesson5 {
static class Complex {
final double re, im;
Complex(double re, double im){ this.re = re; this.im = im; }
Complex add(Complex b){ return new Complex(this.re + b.re, this.im + b.im); }
Complex mul(Complex b){ return new Complex(this.re*b.re - this.im*b.im, this.re*b.im + this.im*b.re); }
Complex div(Complex b){
double d = b.re*b.re + b.im*b.im;
return new Complex((this.re*b.re + this.im*b.im)/d, (this.im*b.re - this.re*b.im)/d);
}
double abs(){ return Math.hypot(re, im); }
}
static Complex G_jw(double w, double zeta, double wn){
Complex jw = new Complex(0.0, w);
Complex jw2 = jw.mul(jw);
Complex term = new Complex(0.0, 2.0*zeta*wn*w);
Complex den = jw2.add(term).add(new Complex(wn*wn, 0.0));
return new Complex(wn*wn, 0.0).div(den);
}
public static void main(String[] args){
double zeta = 0.35, wn = 12.0;
double wmin = 1e-2*wn, wmax = 1e3*wn;
int N = 6000;
double Mr = 0.0, wr = wmin;
double dc = G_jw(wmin, zeta, wn).abs();
double target = dc / Math.sqrt(2.0);
double wb = Double.NaN;
boolean found = false;
for(int i=0;i<N;i++){
double a = (double)i/(N-1);
double w = wmin * Math.pow(wmax/wmin, a);
double mag = G_jw(w, zeta, wn).abs();
if(mag > Mr){ Mr = mag; wr = w; }
if(!found && mag <= target){ wb = w; found = true; }
}
System.out.printf(Locale.US, "Mr=%.6f, wr=%.6f, wb=%.6f%n", Mr, wr, wb);
}
}
7.4 MATLAB / Simulink
File: Chapter12_Lesson5.m
% Chapter 12 - Lesson 5: Time–Frequency Domain Relationships and Trade-offs
% File: Chapter12_Lesson5.m
clear; clc;
zeta = 0.35;
wn = 12; % rad/s
s = tf('s');
G = wn^2/(s^2 + 2*zeta*wn*s + wn^2);
info = stepinfo(G);
Mp = info.Overshoot;
tr = info.RiseTime;
ts = info.SettlingTime;
[mag,~,w] = bode(G);
mag = squeeze(mag); w = squeeze(w);
Mr = max(mag);
wr = w(find(mag == Mr, 1, 'first'));
wb = bandwidth(G);
fprintf('Mp=%.2f%%, tr=%.6fs, ts=%.6fs\\n', Mp, tr, ts);
fprintf('Mr=%.6f, wr=%.6f rad/s, wb=%.6f rad/s\\n', Mr, wr, wb);
% Optional scripted Simulink build:
try
mdl = 'Chapter12_Lesson5_Simulink';
if bdIsLoaded(mdl); close_system(mdl,0); end
new_system(mdl); open_system(mdl);
add_block('simulink/Sources/Step', [mdl '/Step'], 'Position',[50 80 80 110]);
add_block('simulink/Continuous/Transfer Fcn', [mdl '/G(s)'], 'Position',[150 75 260 115]);
add_block('simulink/Sinks/Scope', [mdl '/Scope'], 'Position',[320 75 350 115]);
set_param([mdl '/G(s)'], 'Numerator', mat2str([wn^2]), 'Denominator', mat2str([1 2*zeta*wn wn^2]));
add_line(mdl, 'Step/1', 'G(s)/1');
add_line(mdl, 'G(s)/1', 'Scope/1');
set_param(mdl, 'StopTime', '3');
sim(mdl);
catch ME
fprintf('Simulink skipped: %s\\n', ME.message);
end
7.5 Wolfram Mathematica
File: Chapter12_Lesson5.nb
(* Chapter 12 - Lesson 5: Time–Frequency Domain Relationships and Trade-offs *)
(* File: Chapter12_Lesson5.nb *)
Needs["ControlSystems`"];
zeta = 0.35; wn = 12;
s = Unique["s"];
G = TransferFunctionModel[{wn^2},{1, 2 zeta wn, wn^2}, s];
resp = StepResponse[G, {0, 3}][[1]];
t = resp[[1]]; y = resp[[2]];
Print["Overshoot Mp (%) = ", 100 Max[0, (Max[y] - y[[-1]])/y[[-1]]]];
wz = LogSpace[-2, 3, 2000]*wn;
mag = Abs[FrequencyResponse[G, I*#]]& /@ wz;
Mr = Max[mag];
wr = wz[[First@Ordering[mag, -1]]];
bw = Module[{dc = mag[[1]], idx},
idx = FirstPosition[mag, _?(# <= dc/Sqrt[2] &)];
If[idx === Missing["NotFound"], Indeterminate, wz[[idx[[1]]]]]
];
Print["Mr = ", Mr];
Print["wr (rad/s) = ", wr];
Print["wb (rad/s) = ", bw];
7.6 Design Workflow (specs to parameters)
flowchart TD
S["Given specs: Mp_max, ts_max OR wb_min"] --> Z["Solve zeta from Mp_max"]
Z --> WN1["If ts_max: choose wn ~ 4/(zeta*ts_max)"]
Z --> WN2["If wb_min: choose wn from wb formula"]
WN1 --> V["Verify: compute Mr, wb, tr, ts via formulas or simulation"]
WN2 --> V
V --> OK{"All constraints satisfied?"}
OK -->|yes| DONE["Finalize second-order design point \n(zeta, wn)"]
OK -->|no| ADJ["Adjust: increase zeta to reduce \nMp/Mr OR increase wn to speed up"]
ADJ --> V
8. Problems and Solutions
Problem 1 (Derive resonance frequency): For \( G(s)=\frac{\omega_n^2}{s^2+2\zeta\omega_n s+\omega_n^2} \), show that if \( \zeta < 1/\sqrt{2} \), the magnitude \( |G(j\omega)| \) is maximized at \( \omega_r=\omega_n\sqrt{1-2\zeta^2} \).
Solution: Using \( x=\omega/\omega_n \), \( |G(j\omega)|^2 = 1/\big((1-x^2)^2+(2\zeta x)^2\big) \). Maximize \( |G|^2 \) by minimizing \( D(x)=(1-x^2)^2+(2\zeta x)^2 \). Differentiate:
\[ \frac{dD}{dx} = 4x\big(x^2 - 1 + 2\zeta^2\big). \]
Nonzero critical point satisfies \( x^2=1-2\zeta^2 \), which requires \( \zeta < 1/\sqrt{2} \). Thus \( \omega_r=\omega_n x \).
Problem 2 (Resonant peak formula): Show that for \( \zeta < 1/\sqrt{2} \), \( M_r = 1/(2\zeta\sqrt{1-\zeta^2}) \).
Solution: At \( x^2=1-2\zeta^2 \), \( 1-x^2=2\zeta^2 \) and \( D(x)= (2\zeta^2)^2 + (2\zeta)^2(1-2\zeta^2)=4\zeta^2(1-\zeta^2) \). Hence
\[ M_r = \frac{1}{\sqrt{D(x)}} = \frac{1}{2\zeta\sqrt{1-\zeta^2}}. \]
Problem 3 (Overshoot–damping inversion): Given an overshoot limit \( M_p^\star \), derive \( \zeta = \frac{-\ln(M_p^\star/100)}{\sqrt{\pi^2 + \ln^2(M_p^\star/100)}} \).
Solution: From \( M_p/100=\exp\!\left(\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}\right) \), take logs and solve:
\[ \ln\!\left(\frac{M_p^\star}{100}\right) = \frac{-\zeta\pi}{\sqrt{1-\zeta^2}} \quad \Rightarrow \quad \ln^2\!\left(\frac{M_p^\star}{100}\right) = \frac{\zeta^2\pi^2}{1-\zeta^2}. \]
Rearranging gives \( \zeta^2 = \frac{\ln^2(M_p^\star/100)}{\pi^2 + \ln^2(M_p^\star/100)} \), and since \( \zeta > 0 \), take the positive root with the minus sign in the numerator to ensure positivity.
Problem 4 (-3 dB bandwidth derivation): Starting from \( |G(j\omega_{bw})|^2 = 1/2 \), derive \( \omega_{bw} = \omega_n\sqrt{1 - 2\zeta^2 + \sqrt{4\zeta^4 - 4\zeta^2 + 2}} \).
Solution: With \( x=\omega/\omega_n \), the condition is \( (1-x^2)^2 + (2\zeta x)^2 = 2 \), which expands to \( x^4 + (4\zeta^2 - 2)x^2 - 1 = 0 \). Let \( u=x^2 \) and solve the quadratic:
\[ u = \frac{-(4\zeta^2-2) + \sqrt{(4\zeta^2-2)^2 + 4}}{2} = 1 - 2\zeta^2 + \sqrt{4\zeta^4 - 4\zeta^2 + 2}, \]
and \( \omega_{bw}=\omega_n\sqrt{u} \).
Problem 5 (Feasibility check): Suppose you require \( M_p \le 10\% \) and \( t_s \le 0.8\,\text{s} \) (2% criterion) for a second-order prototype. Compute a feasible \( (\zeta,\omega_n) \) and report the implied \( \omega_{bw} \).
Solution: First compute \( \zeta \) from \( M_p^\star=10 \):
\[ \zeta = \frac{-\ln(0.10)}{\sqrt{\pi^2 + \ln^2(0.10)}}. \]
Then choose \( \omega_n \approx 4/(\zeta t_s^\star) \) with \( t_s^\star=0.8 \). Finally compute \( \omega_{bw} \) from the bandwidth formula in Section 5. (The provided code files perform this evaluation numerically.)
9. Summary
We established rigorous bridges between time and frequency viewpoints: (i) frequency response is the transform of the impulse response and predicts sinusoidal steady state; (ii) a universal uncertainty inequality proves that fast time localization requires broad frequency spread; (iii) for the canonical second-order system we derived closed-form relations connecting damping and natural frequency to overshoot, settling time, resonance peak, resonance frequency, and -3 dB bandwidth. These results operationalize the central control-engineering trade-off: increasing speed (bandwidth) tends to increase resonance and overshoot unless damping is increased, which in turn can reduce bandwidth.
10. References
- Gabor, D. (1946). Theory of communication. Journal of the Institution of Electrical Engineers (Part III: Radio and Communication Engineering), 93(26), 429–457.
- Heisenberg, W. (1927). Über den anschaulichen Inhalt der quantentheoretischen Kinematik und Mechanik. Zeitschrift für Physik, 43, 172–198.
- Bode, H.W. (1940). Relations between attenuation and phase in feedback amplifier design. Bell System Technical Journal, 19, 421–454.
- Fano, R.M. (1950). Theoretical limitations on the broadband matching of arbitrary impedances. Journal of the Franklin Institute, 249(1), 57–83.
- Shannon, C.E. (1949). Communication in the presence of noise. Proceedings of the IRE, 37(1), 10–21.
- Parseval, M.A. (1806). Mémoire sur les séries et sur l’intégration complète des équations aux différences partielles linéaires. Mémoires présentés à l’Institut des Sciences, Lettres et Arts, 1, 638–648.
- Wiener, N. (1949). Extrapolation, interpolation, and smoothing of stationary time series. Wiley / MIT-related theoretical foundations (journal-era results summarized).