File: contr.cat

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (50 lines) | stat: -rw-r--r-- 1,424 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

CONTR(G)                       Scilab Function                       CONTR(G)
NAME
  contr - controllability, controllable subspace

CALLING SEQUENCE
  [n [,U]]=contr(A,B [,tol])
  [A1,B1,U,ind]=contr(A,B [,tol])

PARAMETERS

  A, B  : real matrices

  tol   : may be the constant rtol or the 2 vector [rtol atol]

  rtol      :tolerance used when evaluating ranks (QR factorizations).

  atol      :absolute tolerance (the B matrix is assumed to be 0 if
            norm(B)<atol)

  n         :  dimension of controllable subspace.

  U         : orthogonal change of basis which puts (A,B) in canonical form.

  A1        : block Hessenberg matrix

  B1        : is U'*B.

  ind       : vector associated with controllability indices (dimensions of
            subspaces B, B+A*B,...=ind(1),ind(1)+ind(2),...)

DESCRIPTION
  [n,[U]]=contr(A,B,[tol]) gives the controllable form of an (A,B)
  pair.(dx/dt = A x + B u or x(n+1) = A x(n) +b u(n)).  The n first columns
  of U make a basis for the controllable subspace.

  If V=U(:,1:n), then V'*A*V and  V'*B give the controllable part of the
  (A,B) pair.

  [A1,B1,U,ind]=contr(A,B) returns the Hessenberg controllable form of (A,B).

EXAMPLE
  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))
SEE ALSO
  canon, cont_mat, unobs, stabil