# contr

可制御性, 可制御部分空間, 階段化

## 呼び出しの手順

    n=contr(A,B [,tol])
                [n,U]=contr(A,B [,tol])
                [n,U,ind,V,Ac,Bc]=contr(A,B,[,tol])

## パラメータ

A, B

  実数行列

tol

  虚数パラメータ

n

  可制御部分空間の次元.

U

  `(A,B)`を正準形に変換する直交変換基底.

V

  制御空間の基底を変更する直交行列.

Ac

  ブロックヘッセ行列 `Ac=U'*A*U`

Bc

  is `U'*B*V`.

ind

  可制御インデックス (サブスペース `B, B+A*B,...=ind(1),ind(1)+ind(2),...`の次元) を有するp整数ベクトル

## 説明

`[n,[U]]=contr(A,B,[tol])` は `(A,B)` の可制御形式を与える. (`dx/dt = A x + B u` または `x(n+1) = A x(n) +b u(n)`). `U` の最初の `n` 列は、 可制御サブスペースの基底を構成する.

`V=U(:,1:n)`の場合, `V'*A*V` と `V'*B` は `(A,B)` の可制御部を与える.

`(Bc, Ac)` は階段化可制御形式である.

                       |B |sI-A      *  . . .  *      *       |
                       | 1|    11       .      .      .       |
                       |  |  A    sI-A    .    .      .       |
                       |  |   21      22    .  .      .       |
                       |  |        .     .     *      *       |
    [U'BV|sI - U'AU] = |0 |     0    .     .                  |
                       |  |            A     sI-A     *       |
                       |  |             p,p-1    pp           |
                       |  |                                   |
                       |0 |         0          0   sI-A       |
                       |  |                            p+1,p+1|

## 参照

Slicot ライブラリ (SCI/modules/cacsd/src/slicotのab01od参照).

## 例

    W=ssrand(2,3,5,list('co',3));  //cont. subspace has dim 3.
    A=W("A");B=W("B");
    [n,U]=contr(A,B);n
    A1=U'*A*U;
    spec(A1(n+1:$,n+1:$))  //uncontrollable modes
    spec(A+B*rand(3,5))

## 参照

- canon
- cont_mat
- unobs
- stabil
- st_ility