File: schur.man

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (111 lines) | stat: -rw-r--r-- 3,539 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
.TH schur G "April 1993" "Scilab Group" "Scilab Function"
.so ../sci.an
.SH NAME
schur - [ordered] Schur decomposition
.SH CALLING SEQUENCE
.nf
[U,T] = schur(A) 
[U,dim]=schur(A,flag)
[U,dim]=schur(A,myfunction)
.fi
.SH PARAMETERS
.TP 10
A
: real or complex matrix. For ordered forms \fVA\fR is
assumed real.
.TP
flag
: character string (\fV'c'\fR or \fV'd'\fR)
.TP
myfunction
: an ``external'' function (this parameter can also be a list or character string)
.TP
U
: orthogonal or unitary square matrix
.TP
T
: matrix
.TP
dim
: integer
.SH DESCRIPTION
Schur forms, ordered Schur forms
.SH Usual schur form
.Vb [U,T] = schur(A)
produces a Schur matrix \fVT\fR
and a unitary matrix \fVU\fR so that \fVA = U*T*U'\fR and \fVU'*U = eye(U)\fR.
By itself, schur(\fVA\fR) returns \fVT\fR.
If \fVA\fR is complex, the Complex Schur Form is returned in matrix \fVT\fR.
The Complex Schur Form is upper triangular with the eigenvalues
of \fVA\fR on the diagonal.
If \fVA\fR 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.
.SH Ordered stable form
.Vb [U,dim]=schur(A,'c')
returns an unitary matrix \fVU\fR which transforms \fVA\fR into schur form.
In addition, the dim first columns of \fVU\fR  make a basis of the 
eigenspace of \fVA\fR associated with eigenvalues with negative 
real parts (stable "continuous time" eigenspace).
.LP
.Vb [U,dim]=schur(A,'d')
returns an unitary matrix \fVU\fR which transforms \fVA\fR into schur form.
In addition, the \fVdim\fR first columns of \fVU\fR span a basis of the 
eigenspace of \fVA\fR associated with eigenvalues with magnitude
lower than 1 (stable "discrete time" eigenspace).
.SH General eigenspace
.Vb [U,dim]=schur(A,a_function)
returns an unitary matrix \fVU\fR which transforms \fVA\fR into schur form. 
In addition, the \fVdim\fR first columns of \fVU\fR span a basis of the 
eigenspace of \fVA\fR associated with the eigenvalues which are 
selected by the function \fVa_function\fR.
.LP
This function must be of the following type (here \fVa_function\fR is "\fVrule\fR"):
.nf
function [flag]=rule(x)

flag=...
.fi
\fVx\fR is a vector with three components which characterizes
either a real eigenvalue or a pair of complex conjugate
eigenvalues.
.LP
If \fVx(1)=1\fR, a real eigenvalue is considered and this
eigenvalue is \fVx(2)/x(3)\fR.
.LP
If \fVx(1)=2\fR, a pair of complex conjugate eigenvalues is
considered. The sum of these two eigenvalues (twice
the real part) is \fVx(2)\fR and the product (squared magnitude)
is \fVx(3)\fR.
.LP
On return, flag should be 1 if the real eigenvalue is 
selected or the pair of eigenvalues is selected and
0 otherwise.
.SH Example of function
.nf
        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
.fi
The function \fVdisc\fR selects the eigenvalues with magnitude lower
than a given scalar \fVro\fR. And for \fVro=1\fR the calling sequence
\fV[U,dim]=schur(A,'d')\fR and \fV[U,dim]=schur(A,disc)\fR are
equivalent.
.LP
Another useful example is \fV%choose\fR 
(see function code in \fVSCIDIR/macros/percent\fR)
.SH EXAMPLE
.nf
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
.fi
.SH SEE ALSO
gschur, ricc, pbig, psmall