File: trzeros.cat

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (63 lines) | stat: -rw-r--r-- 1,895 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

trzeros(1)                     Scilab Function                     trzeros(1)
NAME
  trzeros - transmission zeros and normal rank

CALLING SEQUENCE
  [tr]=trzeros(Sl)
  [nt,dt,rk]=trzeros(Sl)

PARAMETERS

  Sl   : linear system (syslin list)

  nt   : complex vectors

  dt   : real vector

  rk   : integer (normal rank of Sl)

DESCRIPTION
  Called with one output argument, trzeros(Sl) returns the transmission zeros
  of the linear system Sl.

  Sl may have a polynomial (but square) D matrix.

  Called with 2 output arguments, trzeros returns the transmission zeros of
  the linear system Sl as tr=nt./dt;

  (Note that some components of dt may be zeros)

  Called with 3 output arguments, rk  is the normal rank of Sl

  Transfer matrices are converted to state-space.

  If Sl is a (square) polynomial matrix trzeros returns the roots of its
  determinant.

  For usual state-space system trzeros uses the state-space algorithm of
  Emami-Naeni & Van Dooren.

  If D is invertible the transmission zeros are the eigenvalues of the "A
  matrix" of the inverse system : A - B*inv(D)*C;

  If C*B is invertible the transmission zeros are the eigenvalues of N*A*M
  where M*N is a full rank factorization of eye(A)-B*inv(C*B)*C;

  For systems with a polynomial D matrix zeros are calculated as the roots of
  the determinant of the system matrix.

  Caution: the computed zeros are not always reliable, in particular in case
  of repeated zeros.

EXAMPLE
  W1=ssrand(2,2,5);trzeros(W1)    //call trzeros
  roots(det(systmat(W1)))         //roots of det(system matrix)
  s=poly(0,'s');W=[1/(s+1);1/(s-2)];W2=(s-3)*W*W';[nt,dt,rk]=trzeros(W2);
  St=systmat(tf2ss(W2));[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(St);
  St1=Q*St*Z;rowf=(Qd(1)+Qd(2)+1):(Qd(1)+Qd(2)+Qd(3));
  colf=(Zd(1)+Zd(2)+1):(Zd(1)+Zd(2)+Zd(3));
  roots(St1(rowf,colf)), nt./dt     //By Kronecker form

SEE ALSO
  gspec, kroneck