Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Change language to: English - Français - 日本語

Please note that the recommended version of Scilab is 6.1.1. This page might be outdated.
However, this page did not exist in the previous stable version.

Ajuda Scilab >> CACSD > trzeros

# trzeros

transmission zeros and normal rank

### Calling Sequence

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

### Arguments

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 and 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.

### Examples

```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```