Electrical – Root locus for an open loop transfer function

controlMATLABpole-zeroplotroot locustransfer function

The function, rlocus(), in MATLAB is used for closed loop system roots for variation in gain K. However, I am curious if there is a similar function for variation in parameter of open loop function. I have tried using the pzmap() function and iterating to vary RL & IL. Unfortunately, it doesn't plot enough points on the graph. Are there any functions that will allow me to plot an open loop transfer function? I am trying to plot the transfer function below:

\$ T(s)= \frac{(RL+sIL)(3s^3+12s^2+12s+4)}{8s^4IL+s^3(28IL+8RL+3)+4s^2(7IL+7RL+3)+4s(2IL+7RL+3)+8RL+4}\$

Thank you for your help.

Best Answer

Ignoring the semantics of "root locus," you can certainly plot the roots of a polynomial as its coefficients change. The following script plots the set of poles of your system as \$RL\$ varies from 0 to 10000 with \$IL\$ fixed at 1:

IL = 1;
RLvec = linspace(0,10e3,1e5);
rts = zeros(1e5,4);
for k = 1:length(RLvec);
  RL = RLvec(k);
  D = [8*IL, 28*IL+8*RL+3, 4*(7*IL+7*RL+3), 4*(2*IL+7*RL+3), 8*RL+4];
  r = roots(D);
  rts(k,:) = r';
end;
figure
hold on;
for b = 1:4;
  plot(real(rts(:,b)),imag(rts(:,b)));
end;
xlim([-5,0]); grid on;

It executes for me in under 5 seconds.

Admittedly, it does not show how the roots move as both parameters change, but that task is complicated by having a two-dimensional domain and a two-(real)-dimensional range.