File: equil1.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 (45 lines) | stat: -rw-r--r-- 984 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

equil1(1)                      Scilab Function                      equil1(1)
NAME
  equil1 - balancing (nonnegative) pair of matrices

CALLING SEQUENCE
  [T [,siz]]=equil1(P,Q [,tol])

PARAMETERS

  P, Q      : two non-negative symmetric matrices

  T         : nonsingular matrix

  siz       : vector of three integers

  tol       : threshold

DESCRIPTION
  equil1 computes t such that:

  P1=T*P*T'  and Q1=inv(T)'*Q*inv(T) are as follows:

  P1 = diag(S1,S2,0,0)  and Q1 = diag(S1,0,S3,0) with S1,S2,S3 positive and
  diagonal matrices with respective dimensions siz=[n1,n2,n3]

  tol is a threshold for rank determination in SVD

EXAMPLE
  S1=rand(2,2);S1=S1*S1';
  S2=rand(2,2);S2=S2*S2';
  S3=rand(2,2);S3=S3*S3';
  P=sysdiag(S1,S2,zeros(4,4));
  Q=sysdiag(S1,zeros(2,2),S3,zeros(2,2));
  X=rand(8,8);
  P=X*P*X';Q=inv(X)'*Q*inv(X);
  [T,siz]=equil1(P,Q);
  P1=clean(T*P*T')
  Q1=clean(inv(T)'*Q*inv(T))

SEE ALSO
  balreal, minreal, equil, hankelsv

AUTHOR
  S. Steer 1987