evans — Evans root locus
evans(H [,kmax])
Gives the Evans root locus for a linear system in state-space or
transfer form H(s) (syslin
list). This is the locus of the
roots of 1+k*H(s)=1+k*N(s)/D(s)
, in the complex plane. For a
selected sample of gains k <= kmax
, the imaginary part of
the roots of D(s)+k*N(s)
is plotted vs the real part.
To obtain the gain at a given point of the locus you can simply execute
the following instruction :
k=-1/real(horner(h,[1,%i]*locate(1)))
and click the desired
point on the root locus. If the coordinates of the selected point are in
the real 2 x 1 vector P=locate(1)
this k
solves
the equation k*N(w) + D(w) =0
with
w=P(1)+%i*P(2)=[1,%i]*P
.
H=syslin('c',352*poly(-5,'s')/poly([0,0,2000,200,25,1],'s','c')); evans(H,100) P=3.0548543 - 8.8491842*%i; //P=selected point k=-1/real(horner(H,P)); Ns=H('num');Ds=H('den'); roots(Ds+k*Ns) //contains P as particular root // Another one clf();s=poly(0,'s');n=1+s; d=real(poly([-1 -2 -%i %i],'s')); evans(n,d,100); // clf();n=real(poly([0.1-%i 0.1+%i,-10],'s')); evans(n,d,80);