gtild チルダ処理

## 呼び出し手順

    Gt=gtild(G)
                Gt=gtild(G,flag)

## パラメータ

G

  多項式または線形システムのどちらか (`syslin` リスト) または有理行列

Gt

  Gと同じ

flag

  文字列: `'c'` または `'d'` のどちらか (オプションのパラメータ).

## 説明

`G` は多項式行列 (または多項式), `Gt=gtild(G,'c')` は多項式行列 `Gt(s)=G(-s)'`を返します.

`G` が多項式行列 (または多項式)の場合, `Gt=gtild(G,'d')` は多項式行列 `Gt=G(1/z)*z^n` を返します. ただし, n は `G` の最大次数です.

`syslin`リストにより状態空間で表される 連続時間システムの場合, `Gt = gtild(G,'c')` は`G(-s)'`の 状態空間表現を返します. すなわち, `Gt` の `ABCD` 行列は, `A',-C', B', D'` となります. `G` がプロパーでない場合 (`D= D(s)`) , `Gt` の `D` 行列は `D(-s)'` となります.

`syslin`リストにより状態空間で表される 離散時間システムの場合, `Gt = gtild(G,'d')` は`G(-1/z)'` の状態空間表現, すなわち, (プロパーでない場合もある) `-z*C*inv(z*A-B)*C + D(1/z)` の状態空間表現, を返します.

有理行列の場合, `Gt = gtild(G,'c')` は 誘致行列 `Gt(s)=G(-s)` を返し, `Gt = gtild(G,'d')` は有理行列 `Gt(z)= G(1/z)'` を返します.

パラメータ `flag` は, 多項式引数を指定して`gtild`がコール される場合に必要です.

## 例

    // 連続時間
    s=poly(0,'s');G=[s,s^3;2+s^3,s^2-5]
    Gt=gtild(G,'c')
    Gt-horner(G,-s)'   //連続時間解釈
    Gt=gtild(G,'d');
    Gt-horner(G,1/s)'*s^3  //離散時間解釈
    G=ssrand(2,2,3);Gt=gtild(G);   //状態空間 (G はデフォルトで連続時間系)
    clean((horner(ss2tf(G),-s))'-ss2tf(Gt))   //確認
    // 離散時間
    z=poly(0,'z');
    Gss=ssrand(2,2,3);Gss('dt')='d'; //離散時間
    Gss(5)=[1,2;0,1];   //定数D行列を指定
    G=ss2tf(Gss);Gt1=horner(G,1/z)';
    Gt=gtild(Gss);
    Gt2=clean(ss2tf(Gt)); clean(Gt1-Gt2)  //確認
    // プロパーでないシステム
    z=poly(0,'z');
    Gss=ssrand(2,2,3);Gss(7)='d'; //離散時間
    Gss(5)=[z,z^2;1+z,3];    //D(z) は多項式
    G=ss2tf(Gss);Gt1=horner(G,1/z)';  //伝達形式で計算
    Gt=gtild(Gss);    //状態空間形式で計算
    Gt2=clean(ss2tf(Gt));clean(Gt1-Gt2)  //確認

## 参照

- syslin
- horner
- factors