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
|