# trzeros

伝送ゼロおよび通常ランク

## 呼出し手順

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

## パラメータ

Sl

  線形システム (`syslin` リスト)

nt

  複素数ベクトル

dt

  実数ベクトル

rk

  整数 (Slの通常ランク)

## 説明

出力引数の数を1としてコールされた場合,`trzeros(Sl)` は 線形システム`Sl`の伝送ゼロを返します.

`Sl` は多項式(しかし正方の)行列`D` を有することがあります.

出力引数の数を2としてコールされた場合,`trzeros` は `tr=nt./dt`の時の 線形システム`Sl`の伝送ゼロを返します;

(`dt` のいくつかの要素がゼロとなる可能性があることに注意してください)

出力引数の数を3としてコールされた場合, `rk` は `Sl`の通常ランクとなります.

伝達関数行列は状態空間表現に変換されます.

`Sl` が (正方) 多項式行列の場合, `trzeros` はその行列式の根を返します.

通常の状態空間システムの場合, `trzeros` は Emami-Naeni および Van Doorenの状態空間アルゴリズムを使用します.

`D` が可逆の場合, 伝送ゼロは逆システム`A - B*inv(D)*C`の "`A` 行列"の固有値となります;

`C*B` が可逆の場合,伝送ゼロは `N*A*M`の固有値となります. ただし,`M*N` は `eye(A)-B*inv(C*B)*C`のフルランク分解です;

多項式行列`D`を有するシステムの場合, ゼロはシステム行列の行列式の根として計算されます.

注意: 計算されるゼロが常に信頼できるとは限りません. 特にゼロが重根の場合は注意を要します.

## 例

    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

## 参照

- gspec
- kroneck