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)
roots(det(systmat(W1)))
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

SEE ALSO
gspec, kroneck