# ssrand

генератор случайной системы

## Последовательность вызова

                sl=ssrand(nout,nin,nstate)
                [sl,U]=ssrand(nout,nin,nstate,flag)

## Аргументы

nout

  целое число (число выходов)

nin

  целое число (число входов)

nstate

  целое число (размерность пространства состояний)

flag

  список, сделанный из одной символьной строки и одного или нескольких целых чисел

sl

  список (список `syslin`)

U

  квадратная невырожденная матрица размером `(nstate x nstate)`

## Описание

`sl=ssrand(nout,nin,nstate)` возвращает случайную строго корректную (`D=0`) систему пространства состояний размером `[nout,nint]`, представленную списком `syslin` и с `nstate` переменными состояния.

`[sl,U]=ssrand(nout,nin,nstate,flag)` возвращает тестовую линейную систему с заданными свойствами, определёнными флагом `flag`. `flag` может быть одним из следующих:

    flag=list('co',dim_cont_subs)
    flag=list('uo',dim_unobs_subs)
    flag=list('ncno',dim_cno,dim_ncno,dim_co,dim_nco)
    flag=list('st',dim_cont_subs,dim_stab_subs,dim_stab0)
    flag=list('dt',dim_inst_unob,dim_instb0,dim_unobs)
    flag=list('on',nr,ng,ng0,nv,rk)
    flag=list('ui',nw,nwu,nwui,nwuis,rk)

Полное описание `Sys` дано в коде функции `ssrand` (в `SCI/modules/cacsd/macros/`). Например, с `flag=list('co',dim_cont_subs)` возвращается неконтролируемая система, а `dim_cont_subs` - размерность контролируемого подпространства `Sys`. Символьные строки`'co','uo','ncno','st','dt','on','ui'` обозначают:

"controllable" - "контролируемая",

"unobservable",

"non-controllable-non-observable" - "неконтролируемая и ненаблюдаемая",

"stabilizable" - "стабилизируемая",

"detectable" - "обнаружимая",

"output-nulling" - "обнуление выхода",

"unknown-input" - "неизвестный вход".

## Примеры

    //flag=list('st',dim_cont_subs,dim_stab_subs,dim_stab0)
    //dim_cont_subs&lt;=dim_stab_subs&lt;=dim_stab0
    //пара (A,B) U-образная для:
    //    [*,*,*,*;     [*;
    //    [0,s,*,*;     [0;
    //A=  [0,0,i,*;   B=[0;
    //    [0,0,0,u]     [0]
    //
    // (A11,B1) контролируемая
    // s = стабильная матрица
    // i = нейтральная матрица
    // u = нестабильная матрица
    [Sl,U]=ssrand(2,3,8,list('st',2,5,5));
    w=ss2ss(Sl,inv(U)); //отменить случайное изменение базиса => формировать как выше
    [n,nc,u,sl]=st_ility(Sl);n,nc

## Смотрите также

- syslin