File: evans.cat

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (41 lines) | stat: -rw-r--r-- 1,386 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
evans            Scilab Group            Scilab Function              evans
NAME
   evans - Evans root locus
  
CALLING SEQUENCE
 evans(H [,kmax])
PARAMETERS
 H    : list (linear system syslin )
      
 kmax : real (maximum gain desired for the plot )
      
DESCRIPTION
   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.
  
EXAMPLE
 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
 xbasc();s=poly(0,'s');n=1+s;
 d=real(poly([-1 -2 -%i %i],'s'));
 evans(n,d,100);
 //
 xbasc();n=real(poly([0.1-%i 0.1+%i,-10],'s'));
 evans(n,d,80);
SEE ALSO
   kpure, krac2, locate