Root Locus
Table of Contents
$$\text{System} = {s^2 + s + 1 \over s^3 + 4s^2 + Ks + 1}$$
$$1 + KG(s) = 0$$
rlocus(G(s))
$$1+KG(s) = 0 \implies KG(s) = -1 = 1 \angle (2k+1) \pi, \quad k = 0, \pm1, \pm 2, \cdots$$
Poles of $G(s)$ are when $P(s) = 0$, $K = 0$
Zeros of $G(s)$ are when $Q(s) = 0$, as $K \rightarrow \infty, P(s) + \infty Q(s) = 0$
So closed loop poles travel from poles of $G(s)$ to zeros of $G(s)$
$$KG(s) = \frac{K}{s(s+1)(s+2)}$$
$$KG(s) \approx \frac{K}{s^3}$$
Given the system transfer function
$$G(s) = \beta\frac{(s-z_1)(s-z_2)\cdots}{(s-p_1)(s-p_2)\cdots} = \beta \frac{s^m - \left(\sum z_i \right)s^{m-1} + \cdots}{s^n - \left(\sum p_i \right)s^{n-1} + \cdots}, \quad \text{assume }\; n>m$$
For a large value of $s$, $G(s)$ approximately looks like having $n-m$ repeated poles at $\sigma_A$ on the real axis
Break-away is the point where loci leave the real axis.
Break-in is the point where loci enter the real axis.
The method is to maximize and minimizes the gain, $K$, using differential calculus.
$$G(s) = \frac{1}{(s+1)(s-2)}$$
s = tf('s');
G = (s + 7)/(s*(s + 5)*(s + 15)*(s + 20));
[y,tout] = step(G); % unstable
plot(tout,y), axis tight
xlabel('t'), title('Unstable step response')
pole(G)
k = 800;
Gcl = feedback(k*G,1,-1)
pole(Gcl)
[y,tout] = step(Gcl);
plot(tout,y,tout,ones(size(tout)),'k--'), axis tight, ylim([0,1.2])
pzmap(Gcl)
K = 350;
Gcl = feedback(K*G,1,-1);
pzmap(Gcl)
[y,tout] = step(Gcl);
plot(tout,y,tout,ones(size(tout)),'k--'),
axis tight, ylim([0,1.2]), xlabel('t'), title('Step response')
rlocus
in MATALB¶rlocus(G)
axis([-22,3,-20,20])
help rlocus
K = 0;
f = [1, 4, K, 1];
p = roots(f)
plot(real(p), imag(p), 'rx', 'linewidth', 2), hold on
ylim([-1, 1])
xlim([-4,1])
line([0 0], ylim, 'LineStyle', '--', 'Color', 'k');
line(xlim, [0 0], 'LineStyle', '--', 'Color', 'k');
K = 2;
f = [1, 4, K, 1];
p = roots(f);
plot(real(p), imag(p), 'rx', 'linewidth', 2);
ylim([-1, 1])
xlim([-4,1])
line([0 0], ylim, 'LineStyle', '--', 'Color', 'k');
line(xlim, [0 0], 'LineStyle', '--', 'Color', 'k');
f = [1, 4, 0, 1];
p = roots(f);
plot(real(p), imag(p), 'rx'), hold on
for K = 0 : 0.1 : 10
f = [1, 4, K, 1];
p = roots(f);
plot(real(p), imag(p), 'r.')
end
hold off
ylim([-1, 1])
xlim([-4,1])
axis equal
line([0 0], ylim, 'LineStyle', '--', 'Color', 'k');
line(xlim, [0 0], 'LineStyle', '--', 'Color', 'k');
G = tf([1, 0], [1, 4, 0, 1]);
pole(G)
zero(G)
pzmap(G)
ylim([-1, 1])
rlocus(G)
axis equal
xlim([-5,2])
G = tf([1, 3], [1, 1, -2]);
rlocus(G)
axis equal
G = tf([1], [1, 12, 64, 128, 0]);
rlocus(G)
axis equal
G = tf([1], [1, 6, 8]);
rlocus(G)
axis equal
G = tf([conv([1, -3],[1, -5])], [conv([1, 1], [1, 2])]);
rlocus(G)
axis equal
G = tf([1, 0], [1, 2, 2]);
rlocus(G)
axis equal
G = tf([1, 1], [conv([1, 2], [1, 4, 8])]);
rlocus(G)
axis equal
xlim([-4,0.5])
%%html
<center><iframe src="https://www.youtube.com/embed/CRvVDoQJjYI?rel=0"
width="560" height="315" frameborder="0" allowfullscreen></iframe></center>
%%html
<center><iframe src="https://www.youtube.com/embed/eTVddYCeiKI?rel=0"
width="560" height="315" frameborder="0" allowfullscreen></iframe></center>
%%html
<center><iframe src="https://www.youtube.com/embed/jb_FiP5tKig?rel=0"
width="560" height="315" frameborder="0" allowfullscreen></iframe></center>
%%html
<center><iframe src="https://www.youtube.com/embed/WLBszzT0jp4?rel=0"
width="560" height="315" frameborder="0" allowfullscreen></iframe></center>
%%html
<center><iframe src="https://www.youtube.com/embed/pG3_b7wuweQ?rel=0"
width="560" height="315" frameborder="0" allowfullscreen></iframe></center>
%%javascript
$.getScript('https://kmahelona.github.io/ipython_notebook_goodies/ipython_notebook_toc.js')