File: schur.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 (96 lines) | stat: -rw-r--r-- 3,348 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96

schur(G)                       Scilab Function                       schur(G)
NAME
  schur - [ordered] Schur decomposition

CALLING SEQUENCE
  [U,T] = schur(A)
  [U,dim]=schur(A,flag)
  [U,dim]=schur(A,myfunction)

PARAMETERS

  A         : real or complex matrix. For ordered forms A is assumed real.

  flag      : character string ('c' or 'd')

  myfunction
            : an ``external'' function (this parameter can also be a list or
            character string)

  U         : orthogonal or unitary square matrix

  T         : matrix

  dim       : integer

DESCRIPTION
  Schur forms, ordered Schur forms

Usual schur form
  [U,T] = schur(A) produces a Schur matrix T and a unitary matrix U so that A
  = U*T*U' and U'*U = eye(U).  By itself, schur(A) returns T.  If A is com-
  plex, the Complex Schur Form is returned in matrix T.  The Complex Schur
  Form is upper triangular with the eigenvalues of A on the diagonal.  If A
  is real, the Real Schur Form is returned.  The Real Schur Form has the real
  eigenvalues on the diagonal and the complex eigenvalues in 2-by-2 blocks on
  the diagonal.

Ordered stable form
  [T,dim]=schur(A,'c') returns an unitary matrix T which transforms A into
  schur form.  In addition, the dim first columns of T make a basis of the
  eigenspace of A associated with eigenvalues with negative real parts
  (stable "continuous time" eigenspace).

  [T,dim]=schur(A,'d') returns an unitary matrix T which transforms A into
  schur form.  In addition, the dim first columns of T span a basis of the
  eigenspace of A associated with eigenvalues with magnitude lower than 1
  (stable "discrete time" eigenspace).
General eigenspace
  [T,dim]=schur(A,a_function) returns an unitary matrix T which transforms A
  into schur form. In addition, the dim first columns of T span a basis of
  the eigenspace of A associated with the eigenvalues which are selected by
  the function a_function.

  This function must be of the following type (here a_function is "rule"):
  function [flag]=rule(x)

  flag=...
  x is a vector with three components which characterizes either a real
  eigenvalue or a pair of complex conjugate eigenvalues.

  If x(1)=1, a real eigenvalue is considered and this eigenvalue is
  x(2)/x(3).

  If x(1)=2, a pair of complex conjugate eigenvalues is considered. The sum
  of these two eigenvalues (twice the real part) is x(2) and the product
  (squared magnitude) is x(3).

  On return, flag should be 1 if the real eigenvalue is selected or the pair
  of eigenvalues is selected and 0 otherwise.

Example of function
          function [flag]=disc(x)
          ls =x(1);flag=0;
          select  ls
             case 1 then if abs(x(2)) < ro*abs(x(3)) then flag=1;end
             case 2 then if x(3) < ro*ro then flag=1;end
          end
  The function disc selects the eigenvalues with magnitude lower than a given
  scalar ro. And for ro=1 the calling sequence [T,dim]=schur(A,'d') and
  [T,dim]=schur(A,disc) are equivalent.

  Another useful example is %choose (see function code in
  SCIDIR/macros/percent)

EXAMPLE
  A=diag([-0.9,-2,2,0.9]);X=rand(A);A=inv(X)*A*X;
  [U,d]=schur(A,'c');
  A1=U'*A*U;
  spec(A1(1:d,1:d))      //stable cont. eigenvalues
  [U,d]=schur(A,'c');
  A1=U'*A*U;
  spec(A1(1:d,1:d))      //stable disc. eigenvalues

SEE ALSO
  gschur, ricc, pbig, psmall