0% found this document useful (0 votes)
5 views16 pages

Control System Stability Analysis Guide

The document outlines methods for analyzing control systems, focusing on Bode plots, gain and phase margins, and root locus sketches. It provides templates for computing system responses, determining stability, and interpreting results based on pole and zero locations. Additionally, it includes MATLAB snippets for practical implementation of these analyses.

Uploaded by

shiwani.23042
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views16 pages

Control System Stability Analysis Guide

The document outlines methods for analyzing control systems, focusing on Bode plots, gain and phase margins, and root locus sketches. It provides templates for computing system responses, determining stability, and interpreting results based on pole and zero locations. Additionally, it includes MATLAB snippets for practical implementation of these analyses.

Uploaded by

shiwani.23042
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

11/30/25, 6:27 PM Solve control system questions

zeros/poles in LHP) and stable, the magnitude plot gives pole/zero count vs 

frequency.
2. Important anchor: magnitude crosses 0 dB at ωgc ​ = 25 rad/s. Denote G(s) =
∏(s+zi )
K∏ . Use slope changes (from the asymptote drawing) to deduce pole & zero

(s+pj )

locations (corner frequencies).


3. Typical approach (exam-style): identify number of slope changes and corner
frequencies from the asymptote, then write G(s) as product of first-order factors.
Because the figure isn’t numerically listed here, present the general template and
show how you would pick coefficients from the plot.

Template answer (write this and fill corner frequencies from the picture):

Assume the asymptotic plot indicates corner frequencies at ω = a1 , a2 , … and slopes


​ ​

change by −20 dB/dec at each pole and +20 dB/dec at each zero. Suppose from the plot
you observe (example) poles at p1 ​ = a1 , p2 = a2 , … and zeros at z1 = b1 , …. Then:
​ ​ ​ ​ ​

(s + z1 )(s + z2 ) ⋯
G(s) = K
​ ​

(s + p1 )(s + p2 ) ⋯

​ ​

Find K from the 0 dB crossing condition: at ω = 25,


1
∣G(j25)∣ = 1 ⇒ K=
∣G0 (j25)∣

where G0 (s) is the rational part without the gain.


What to hand in: show the corner frequencies read from the plot, count poles/zeros, write
the rational form above, and compute K using the 0 dB crossing. (If the plot shows only
single poles/zeros at obvious decades, use those values.)

(b) Draw complete Bode (magnitude & phase) for ω = {0.5,1,5,10,25,40,100}


Method:
1. For each chosen frequency compute asymptotic magnitude (in dB) by summing
contributions from each pole/zero and the gain K .
2. Phase: for each first-order factor (s + a), phase is arctan(ω/a) (zero contributes
+phase, pole contributes −phase). Sum them plus constant phase due to integrators
or differentiators if present.

Template computation:

For each ωk : ​

[Link] 4/19
11/30/25, 6:27 PM Solve control system questions

Magnitude (dB): 20 log10 K ​ + ∑zeros 20 log10 ​ ​ ωk2 + zi2 −


​ ​

∑poles 20 log10
​ ​ ωk2 + p2j .
​ ​

Phase (deg): ∑zeros tan−1 (ωk /zi ) ⋅ (180/π) − ∑poles tan−1 (ωk /pj ) ⋅ (180/π).
​ ​ ​ ​ ​ ​

Write the numeric table after reading corner frequencies from the plot, evaluate those
expressions at the list of ω values, and plot.

MATLAB snippet (use this to compute numeric table & Bode):

matlab Copy code

% Define zeros and poles (fill with values read from your asymptotic plot)
zeros = [z1, z2]; % e.g. [1 10]
poles = [p1, p2, p3]; % e.g. [0.1 5 50]
K = ...; % compute from |G(j25)| = 1

s = tf('s');
G = K * prod(s + zeros) / prod(s + poles);
w = [0.5 1 5 10 25 40 100];
[mag,ph] = bode(G, w);
magdb = 20*log10(squeeze(mag));
phdeg = squeeze(ph);
T = table(w', magdb, phdeg, 'VariableNames', {'omega','magnitude_dB','phase_deg'}
bode(G, {0.1,200}) % full bode
grid on

 

(c) Compute gain crossover, phase crossover, gain & phase margins
Method (write this):
Gain-crossover frequency ωgc : frequency where ∣G(jω)∣
​ = 1 (0 dB). You know
ωgc = 25 from plot (given).

Phase-crossover frequency ωpc : frequency where ∠G(jω) = −180∘ . Find by solving


phase(ω) = −180° using the phase expression or MATLAB margin .


Gain margin: GM = 1/∣G(jωpc )∣ (in dB = 20 log10 GM ). If there is no crossing,
​ ​

GM is ∞ dB.
Phase margin: PM = 180∘ + ∠G(jωgc ). ​

MATLAB commands to compute exactly:

matlab Copy code

[Link] 5/19
11/30/25, 6:27 PM Solve control system questions

[GM, PM, wg, wp] = margin(G); % GM in absolute, PM in degrees, wg = gain cross fr


disp(['Gain margin (dB): ', num2str(20*log10(GM))])
disp(['Phase margin (deg): ', num2str(PM)])
disp(['w_gc: ', num2str(wg), ' rad/s; w_pc: ', num2str(wp), ' rad/s'])

 

Interpretation: If PM>0 and GM>1 (positive dB) the closed-loop system is stable for unity
feedback. If PM <= 0 or GM <= 1, closed-loop unstable or marginal.

(d) Comment on closed-loop stability


Write: use Nyquist/root-locus/Margin conclusions. If PM>0 and GM positive → stable. Also
mention expected damping from PM (rule-of-thumb: PM ≈ 30–60° ⇒ well-damped step
response).

Q2. Root locus sketches and stability (three separate G(s) cases)
General procedure (hand in this and a sketch for each):
numerator
1. Write open-loop L(s) = G(s) ignoring the gain K (i.e., L(s) = ).
denominator

For root locus we consider KG0 (s) where G0 (s) is normalized (no K).
​ ​

2. Poles are the roots of the denominator; zeros are roots of numerator.
3. Root-locus rules to apply (show your calculations on the sheet):
Number of branches = number of poles np . ​

Locus on real axis: between poles/zeros where number of real poles/zeros to the
right is odd.
(2q+1)180∘ ∑ poles−∑ zeros
Asymptotes: angles ϕa ​ = n p −n z
​ ​
, centroid
​ σa =

n p −n z

.​

d
Breakaway/break-in: solve derivative condition ds K(s) ​ = 0 where K(s) =
−1/G0 (s) on real axis.

Departure/arrival angles for complex poles/zeros: θ = 180∘ − ∑ ∠(s −


zeros) + ∑ ∠(s − other poles).
jw-crossings: substitute s = jω into characteristic 1 + KG0 (s) = 0 and solve ​

for K, ω (use Routh or angle criterion).


4. Stability: closed-loop stable if for chosen K all poles lie LHP.

Now do each sub-problem:

[Link] 6/19
11/30/25, 6:27 PM Solve control system questions

Q2(a) 

K(s + 9)
G(s) = , K ≤ 0 (note: − ∞ < K ≤ 0)
s(s + 1)(s2 + 10s + 25)

Observations:
Poles: s= 0, s = −1, s2 + 10s + 25 = 0 ⇒ s = −5 ± j0 (actually
discriminant 100 − 100 = 0 so double pole at s = −5). So poles at 0, -1, -5
(double).
Zero: s = −9.
Number of poles np= 4 (counting multiplicity), zeros nz = 1.
​ ​

Asymptote count = np − nz = 3. Centroid:


​ ​

∑p − ∑z (0) + (−1) + (−5) + (−5) − (−9) −11 + 9 −2


σa = = = = ≈−
3 3 3 3
​ ​ ​ ​ ​

(2q+1)180
Asymptote angles: ϕ = 3 = {60∘ , 180∘ , 300∘ } measured from positive real

axis.

Sketch / special points to compute:


Real-axis segments (test intervals): to the left of -9; between -9 and -5; between -5
and -1; between -1 and 0; right of 0. Evaluate parity rule to know where locus exists.
Breakaway from real axis likely between -1 and 0 or near -5 (solve dK/ds =0
numerically in MATLAB).

K sign note: Because the instruction range is K ≤ 0, the locus is traced for negative
gains; interpret results accordingly (mirror RL for negative K may go to zeros at +9?).
Mention angle criterion sign flip.

Conclude: Provide root-locus sketch showing branches from poles moving to the zero at
-9 and going to infinity along the three asymptotes (angles above). Comment on stability:
for which (negative) K is RL in LHP — use MATLAB rlocus to mark stable region.

MATLAB hints:

matlab Copy code

s = tf('s');
G0 = (s+9)/(s*(s+1)*(s^2+10*s+25));
rlocus(G0) % view real axis, asymptotes, break points
% For negative K use plot of rlocus(-G0) or simply explore K negative:
rlocus(-G0)

[Link] 7/19
11/30/25, 6:27 PM Solve control system questions

Q2(b) 

K(s + 1)
G(s) = , K≥0
s3 (s + 2)

Observations:
Poles: triple pole at s=0 (multiplicity 3) and a pole at s=-2 → 4 poles total.
Zero at s=-1.
np − nz = 3 asymptotes again. Centroid:
​ ​

0 + 0 + 0 + (−2) − (−1) −2 + 1 1
σa = = = − ≈ −0.3333.
3 3 3
​ ​ ​ ​

∘ ∘ ∘
Asymptote angles: same set: 60 , 180 , 300 .

Key features:
Multiple pole at origin → RL initially departs from origin with equal angular spacing;
expect two branches on imaginary axis for small K (possible instability). Carefully
compute departure angles from origin (use angle criterion).
Breakaway/break-in: solve derivative condition for the real axis segments (between -2
and 0 etc).

Stability comment: Because of high multiplicity at origin, small positive K may move poles
into RHP — check by Routh or numerical RL in MATLAB.

MATLAB commands:

matlab Copy code

s = tf('s');
G0 = (s+1)/(s^3*(s+2));
rlocus(G0)
% use rlocfind to find K where poles cross imaginary axis:
[k,poles] = rlocfind(G0) % interactively click

Q2(c)

K(s2 + s + 1)
G(s) = , K≥0
s(s + 2)(s + 10)

Observations:
Poles: 0, -2, -10 → three poles.

[Link] 8/19
11/30/25, 6:27 PM Solve control system questions
−1±j 3
Zeros: roots of s2

+ s + 1 which are s = 2
(complex conjugate zeros in LHP).

So there are two zeros (stable).


np − nz = 1 asymptote. Centroid:
​ ​

σa = ∑ p − ∑ z = (0 − 2 − 10) − (−1) = −12 + 1 = −11.


But since np− nz = 1 only one asymptote at 180° (i.e., along negative real axis) and
​ ​

it goes to −∞.
Root index: 3 poles → 3 branches; two will typically be attracted to the finite zeros;
one will go to infinity along the real negative axis.

Key points to compute:

Breakaway points on real axis between poles where RL exists.


Angle of departure from complex poles (none complex in this case), arrival to zeros.

Stability: For K≥0, root locus often stays LHP for small K; ensure no RHP crossings — test
with Routh or plot.

MATLAB:

matlab Copy code

s = tf('s');
G0 = (s^2+s+1)/(s*(s+2)*(s+10));
rlocus(G0)

Q3. Non-unity feedback system — root locus for K from 0→∞ and find
K for overshoot <5% and settling time <2.5s
Given: Non-unity feedback block (figure in PDF). The hint: rearrange to make characteristic
eqn 1 + K G(s) H(s) = 0. (Because figure is inside PDF, I give general method using
G(s)H(s).)

Method to satisfy specs (overshoot <5% and Ts (2%) ​ < 2.5 s)


Theory reminders:
For a dominant 2nd-order pole pair with damping ζ and natural frequency ωn : ​

Mp = e−πζ/

1−ζ 2 ​

. For Mp ​ < 0.05 (5%), solve for ζ . Compute ζ from:


− ln(Mp )
ζ= .

π 2 + (ln Mp )2

[Link] 9/19
11/30/25, 6:27 PM Solve control system questions

For Mp ​ = 0.05, ζ ≈ 0.69 (approx). For 5% this gives approx 0.69; for 2% it’s 

larger.
4 4 1.6
Settling time (2%): Ts ≈ < 2.5 ⇒ ωn > = .
2.5ζ
​ ​ ​ ​ ​

ζωn​ ζ
Procedure to find K:
1. From overshoot spec get minimum ζmin . For 5% we get ζ ​
≈ 0.69 (compute exactly
in MATLAB with formula above).
2. Choose ζ = required damping (≥ ζmin ). Then from settling time constraint find

required ωn ​
> 1.6/ζ .
3. Desired dominant pole location sd ​
1 − ζ 2.
= −ζωn ± jωn ​ ​ ​

4. Use the angle criterion of root locus: evaluate angle of G(s)H(s) at sd ; it must equal ​

(2k + 1)π . If it does (or choose ω_n to satisfy it), then find K from magnitude
criterion:

1
K=
∣G0 (sd )H(sd )∣

​ ​ ​

where G0 is the plant without K (or the open-loop product G(s)H(s) excluding K).

5. Practically: use MATLAB rlocus and rlocfind (interactive) or sisotool to pick a


point on RL with the desired damping line (plot a line of constant damping ζ : angle
from negative real axis = cos−1 (ζ)) and read off K.

MATLAB recipe: (generic — plug in the actual G(s)H(s) from the figure)

matlab Copy code

s = tf('s');
G0 = ...; % plant times H(s) without K
rlocus(G0)
zeta_desired = ...; % from Mp spec
% On the rlocus plot, use 'sgrid' to show lines of constant zeta
sgrid(zeta_desired)
% Use rlocfind to click on the desired intersection to get K
[K, poles] = rlocfind(G0)

What to hand in: show the derivation for ζ from Mp ​ < 5%, compute required ωn from ​

settling-time bound, then show the angle & magnitude criterion used to find K
(symbolically), and present the numeric K (from MATLAB).

[Link] 10/19
11/30/25, 6:27 PM Solve control system questions

Q4. Space station with two resonant modes — PD / rate feedback 

controller
Given: Two resonant modes (Mode1 and Mode2) make the open-loop marginally stable
(underdamped). A rate feedback PD compensator needed. Some parts require plots with
GC(s)=1 first, then with PD GC (s) ​ = 0.25(s + 4) in the feedback path.

Because the exact modal frequencies and transfer functions for Mode1/Mode2 are in the
figure in your PDF, I will give a fully general solution + MATLAB recipe to compute
numerically.

Model (general)
Let the two modes be approximated as two lightly-damped second-order transfer
functions (typical aerospace flex modes):

K1 K2
Gm (s) = + 2 .
​ ​

2
s2 + 2ζ1 ωn1 s + ωn1 s2 + 2ζ2 ωn2 s + ωn2
​ ​ ​

​ ​ ​ ​ ​ ​

Open-loop plant (for example) may be G(s) = Gm (s). Closed-loop with gain Kp inside
​ ​

forward path or feedback depending on figure; follow block diagram to form the closed-
loop characteristic eqn.

(a) Root locus for 0 ≤ Kp < ∞ (uncompensated GC=1)


Steps to produce by hand:
Write open-loop transfer function L(s) = Kp G(s) (if feedback is unity). Identify

poles (resonant pair likely near ±jωn1 and ±jωn2 shifted left by damping).
​ ​

Use root-locus rules to sketch where poles move as Kp increases. ​

Expect marginal stability at Kp=0 (purely imaginary poles). As Kp increases, poles


move left (become damped) if PD or rate feedback is present; but with only Kp they
may move toward RHP — check.

(b) Find K where system gives a damped output

Use angle criterion: pick desired pole location with small negative real part (sufficient
damping), then compute K using magnitude condition K = 1/∣G0 (sd )∣.
​ ​

Alternatively use rlocus and sgrid in MATLAB: choose intersection with desired ζ
line and read K.

(c) With PD feedback GC (s) ​ = 0.25(s + 4) in the feedback path


Build the overall loop transfer L(s) = Kp G(s)GC (s) (arrange per block diagram).
​ ​

Create the closed-loop TF as:

[Link] 11/19
11/30/25, 6:27 PM Solve control system questions

Kp G(s) 
T (s) =

1 + Kp G(s)GC (s)

​ ​

if controller is in feedback path (follow block diagram exactly).


Plot root locus of L(s) as Kp varies. PD adds a zero (at s=-4) and a gain factor 0.25

(scale).

MATLAB example template:

matlab Copy code

s = tf('s');
% Define modal components (replace with actual numbers from your figure)
Gm1 = K1/(s^2 + 2*zeta1*wn1*s + wn1^2);
Gm2 = K2/(s^2 + 2*zeta2*wn2*s + wn2^2);
G = Gm1 + Gm2;
Gc = 0.25*(s+4);

% Uncompensated RL (Kp is scalar gain)


rlocus(G) % if Kp multiplies G in forward path, use rlocus(G); otherwise adjust

% Compensated with controller in feedback path, if block diagram has Gc in feedbac


% compose appropriately. If series: use rlocus(G*Gc)
rlocus(G*Gc)
sgrid % show constant zeta lines

 

(d) Steady-state error better than 1%


For unity step input, steady-state error ess depends on type and static error constants.

For position control:


If loop has Type 1 (one integrator) then ess ​ = 0.
1
If Type 0, ess ​ = 1+Kp G(0)

(for unity feedback with DC gain). Compute
​ K so that
ess < 0.01.

Use DC gain GOL (0) (open-loop forward path evaluated at s=0). Solve:

1 99
ess = < 0.01 ⇒ K>
1 + K ⋅ GOL (0) GOL (0)
​ ​ ​

​ ​

Compute numerically using MATLAB for your specific G.

(e) Root sensitivity comment


Root sensitivity vs K: for low K, root-locus branches move slowly (dominated by plant
poles); near breakaway points or near zeros (or when poles become close to RHP)
root locations can change rapidly with K. PD (by adding zero) tends to reduce

[Link] 12/19
11/30/25, 6:27 PM Solve control system questions

sensitivity and move poles to more desirable locations; show a short numerical 

comparison of pole locations for low and high K on the root-locus plot (MATLAB
rlocus with markers at sample K values).

MATLAB for steady-state error and pole sensitivity:

matlab Copy code

% Compute DC gain:
dc_gain = dcgain(G*Gc); % or dcgain(G) depending where K multiplies
% Solve for K to meet e_ss < 0.01 for step input
required_K = (1/0.01 - 1)/dc_gain; % if e_ss = 1/(1+K*dc_gain)
% Check root movement at K small vs large:
Kvals = [0.1, 1, 10, required_K];
for i=1:length(Kvals)
CL = feedback(Kvals(i)*G*Gc, 1);
poles = pole(CL);
disp([Kvals(i), poles'])
end

Part II — MATLAB-based (I give exact code & step-by-step


approach to run in MATLAB; paste commands and capture
screenshots for submission)
I give precise MATLAB code you can paste and run to get exact numerical answers and
figures required for Part II.

Part II Q1. Inverted unstable plant (walk-assist model): choose K for


maximum achievable ζ of dominant poles and predict step response
General recipe (apply to figure’s specific plant in PDF):
1. Let open-loop plant be G(s) (as given in the PDF figure). Use MATLAB:

matlab Copy code

s = tf('s');
G = ... % fill from PDF
rlocus(G)
sgrid % shows zeta lines

[Link] 13/19
11/30/25, 6:27 PM Solve control system questions

% Choose point on rlocus that gives maximum achievable damping (largest zeta for w 

% Use rlocfind to click the point and obtain K


[K, poles] = rlocfind(G)
CL = feedback(K*G, 1);
step(CL); % predicted step response

2. Write down the selected K, show the plot with dominant poles, and compute
overshoot, settling time:

matlab Copy code

 S = stepinfo(CL) 

What to hand in: root-locus plot with chosen K annotated, step response screenshot, and
table with K , dominant pole locations, ζ, ω_n, rise time, settling time, overshoot (from
stepinfo ).

Part II Q2. Unity feedback system


K
G(s) =
(s + 4)(s + 8)(s2 + 10s + 100)

(a) Find K such that maximum overshoot Mp ​ = 10%


Procedure (exact):
1. Compute required damping ζ for Mp ​ = 0.10:

− ln(0.10)
ζ= ≈ 0.5912.
π 2 + (ln 0.10)2

1
2. On the root-locus of G0 (s) = find the closed-
(s + 4)(s + 8)(s2 + 10s + 100)
​ ​

loop pole pair that lies on the constant damping line ζ ≈ 0.5912. Use sgrid and
rlocfind to pick the point; rlocfind returns K and pole locations.

MATLAB commands:

matlab Copy code

s = tf('s');
G0 = 1/((s+4)*(s+8)*(s^2+10*s+100));
rlocus(G0)
zeta = 0.5912;
sgrid(zeta,[])

[Link] 14/19
11/30/25, 6:27 PM Solve control system questions

[K,poles] = rlocfind(G0) % click intersection on rlocus or use rlocfind programma 

CL = feedback(K*G0,1);
S = stepinfo(CL);
disp(['K = ', num2str(K)])
disp(S)

(b) Compute steady-state error for the case in (a)


For a unity step input and a Type 0 system (no integrators in G(s)), steady-state error:

1 1
ess = lim =
s→0 1 + G(s) 1 + KG0 (0)
​ ​ ​ ​

 
2
Compute G0 (0) ​ = 1/(4 ⋅ 8 ⋅ 100) = 1/3200 = 0.0003125 (because (s +
10s + 100) at s=0 is 100). So:
1
ess = .
1 + K ⋅ 0.0003125
​ ​

After computing K in (a), plug in to get numeric e_ss.

(c) Design a Lag compensator to improve steady-state error by factor 10 while keeping
MP same

Theory: A lag compensator increases low-frequency gain (improves steady-state error)


while minimally affecting phase near the dominant closed-loop poles. Compensator form:

s + zc
Glag (s) = , with pc = zc /α, α ≫ 1.

s + pc
​ ​ ​ ​

Design target: reduce e_ss by 10 ⇒ increase DC loop gain by factor 10 (i.e., add approx 20
dB of gain at low frequency). But ensure that at the frequency of dominant poles the
magnitude and phase are not significantly changed (so MP remains ≈ same). Typical steps:
1. Determine required DC gain increase ≈ 10.
2. Choose zero zc at a decade below dominant pole frequency ωd , choose pc
​ ​ ​
= zc /10

= 10); this places extra gain at low frequency but small effect at ωd .
(i.e., α ​

3. Implement Gnew (s) = Glag (s) ⋅ K ⋅ G0 (s). Use sisotool to fine-tune so MP


​ ​ ​

remains ~10%.

MATLAB sketch:

matlab Copy code

% Use K from part (a)


Gc_lag = (s + zc)/(s + zc/alpha); % choose zc, alpha

[Link] 15/19
11/30/25, 6:27 PM Solve control system questions

% Loop TF 

L = K * Gc_lag * G0;
rlocus(L)
% Use sisotool(L,1) to design, or tune zc/alpha so step(CL) shows MP~10%, and e_ss
CL = feedback(L,1);
S = stepinfo(CL); e_ss = 1/(1+dcgain(L));

What to hand in: Show calculation of ζ , show rlocus with sgrid, show rlocfind
determination of K, compute e_ss numerically, then show lag compensator design with
 
values of zc and pc and resulting step response & numerical e_ss (show step plot
​ ​

before/after).

Part II Q3. Pilot crane control (figure in PDF) — root locus and closed-
loop poles for K=0.2,2,20,100
General recipe (since the exact numeric plant is in PDF figure):
1. Extract plant transfer G(s) from the PDF (Figure 6). Suppose plant from figure is
N (s)
G(s) = D(s)
.

2. Plot root locus:

matlab Copy code

s = tf('s');
G0 = N(s)/D(s);
rlocus(G0)
p_values = [0.2, 2, 20, 100];
for K = p_values
CL = feedback(K*G0,1);
disp(['K=', num2str(K)])
disp(pole(CL)')
end

3. Copy the pole lists into the assignment and paste screenshots of the root locus with
pole markers.

What to hand in: root-locus plot, table of closed-loop poles at K values.

Part II Q4. For Q4 in Part I (space station) — obtain magnitude &


phase response before and after PD compensation and report margins
[Link] 16/19
11/30/25, 6:27 PM Solve control system questions

MATLAB steps (exact): 

matlab Copy code

% Define plant G(s) from Part I figure


G = ...;

% Uncompensated open-loop
[mag,ph,w] = bode(G, {0.01,1000});
[GM, PM, wgm, wpm] = margin(G);
disp(['Uncompensated GM (dB): ', num2str(20*log10(GM)), ' PM (deg): ', num2str(PM

% With PD in feedback: combine per block diagram (if series with G use G*Gc)
Gc = 0.25*(s+4);
Gcomp = G*Gc;
[GMc, PMc, wgm_c, wpm_c] = margin(Gcomp);
disp(['Compensated GM (dB): ', num2str(20*log10(GMc)), ' PM (deg): ', num2str(PM

% Bode plots
figure; bode(G, {0.01,1000}); title('Uncompensated Bode'); grid on;
figure; bode(Gcomp, {0.01,1000}); title('Compensated Bode'); grid on;

 

What to hand in: Bode magnitude and phase plots (screenshots) before and after
compensation; report numeric PM and GM values from margin .

Summary of deliverables & what you should paste into


your MATLAB / handwritten submission
1. Part I (handwritten A4 pages)
Q1: list corner frequencies & slopes (read from the plotted asymptote), write
G(s) template, compute K using ∣G(j25)∣ = 1, make magnitude & phase
table for the 7 frequencies, compute margins and conclude closed-loop stability.
Use the MATLAB snippet I provided to get exact numeric values to paste into
your handwritten pages.
Q2: For each subproblem (a,b,c) show pole/zero lists, compute asymptotes &
centroid, show breakaway condition symbolically and note where to solve
numerically (MATLAB code provided). Sketch root loci by hand using the rules;
include rlocus plots in the appendix.

[Link] 17/19
11/30/25, 6:27 PM Solve control system questions

Q3: Show derivation of ζ from overshoot spec and ω_n from settling-time spec. 

Use angle & magnitude criteria to get K; paste rlocfind numeric result.
Q4: Show modal TF (symbolic), root-locus sketches for GC=1 and with PD
compensator, compute value of K for steady-state error <1% using DC gain
formula; comment on sensitivity.
2. Part II (MATLAB results to include in PDF/Word)
Paste the exact MATLAB commands I gave for each question, run them, save the
Bode/Root-locus/Step-response screenshots, and include those figures in your
PDF/Word submission. Also paste numerical values (K, poles, stepinfo outputs,
gain/phase margins).

Quick numerical tips & common formulas (to copy into


your submission)
πζ
Overshoot → Mp = exp( − ).
1 − ζ2
​ ​

− ln(Mp )
Damping from MP → ζ = .

2
π2 + ln (Mp ) ​ ​

4
Settling time (2%) → Ts . ​
≈ ​

ζωn ​

Phase margin → PM = 180∘ + ∠G(jωgc ). ​

Gain margin (absolute) → GM = 1/∣G(jωpc )∣, in dB = 20 log10 (GM ). ​ ​

(2q+1)180∘
Root locus asymptote angles: ϕa = np −nz . ​

​ ​

∑p − ∑z
RL centroid: σa = .
np − nz
​ ​

​ ​

Final notes (important)


I intentionally gave exact MATLAB code for every numeric/figure step. For this option
(2) you asked me not to extract the PDF figures — so where the precise numbers
depend on those hidden figures, run the MATLAB snippets I provided to get the
exact numbers and screenshots for your submission.
If you want, I can now:
(A) Run the MATLAB-like numeric calculations here and produce numeric values
/ tables (I cannot run MATLAB in this environment, but I can compute numeric
algebra where feasible), or

[Link] 18/19
11/30/25, 6:27 PM Solve control system questions

(B) Extract the images from your PDF and use them to produce the numeric 

answers without you running MATLAB (this is Option 1 you rejected earlier).

You said you wanted the symbolic/generic complete solution — done. If you want me to
produce one fully worked numeric example (e.g., compute Part II Q2(a) completely and
numerically), say which question and I will compute numeric values symbolically here and
show the arithmetic steps. (I will not re-ask for the PDF images; only if you want me to
extract them I will switch to that mode.)

If everything above looks good, tell me if you want:

Run numeric for: <list of question numbers> — I’ll compute numeric answers

symbolically here where possible (note: I can’t run actual MATLAB but I can compute
arithmetic / algebra and give final numeric values and exact MATLAB outputs you can
expect).

Otherwise, you can start running the MATLAB code snippets I gave and paste any numeric

[Link] 19/19

You might also like