File: Real-Nonsymmetric-Matrices.html

package info (click to toggle)
gsl-ref-html 1.10-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,496 kB
  • ctags: 2,955
  • sloc: makefile: 33
file content (163 lines) | stat: -rw-r--r-- 9,372 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<html lang="en">
<head>
<title>Real Nonsymmetric Matrices - GNU Scientific Library -- Reference Manual</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="GNU Scientific Library -- Reference Manual">
<meta name="generator" content="makeinfo 4.8">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Eigensystems.html" title="Eigensystems">
<link rel="prev" href="Complex-Hermitian-Matrices.html" title="Complex Hermitian Matrices">
<link rel="next" href="Real-Generalized-Symmetric_002dDefinite-Eigensystems.html" title="Real Generalized Symmetric-Definite Eigensystems">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 The GSL Team.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'' and ``Free Software
Needs Free Documentation'', the Front-Cover text being ``A GNU Manual'',
and with the Back-Cover Text being (a) (see below).  A copy of the
license is included in the section entitled ``GNU Free Documentation
License''.

(a) The Back-Cover Text is: ``You have freedom to copy and modify this
GNU Manual, like GNU software.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
</head>
<body>
<div class="node">
<p>
<a name="Real-Nonsymmetric-Matrices"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="Real-Generalized-Symmetric_002dDefinite-Eigensystems.html">Real Generalized Symmetric-Definite Eigensystems</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Complex-Hermitian-Matrices.html">Complex Hermitian Matrices</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Eigensystems.html">Eigensystems</a>
<hr>
</div>

<h3 class="section">14.3 Real Nonsymmetric Matrices</h3>

<p><a name="index-nonsymmetric-matrix_002c-real_002c-eigensystem-1347"></a><a name="index-real-nonsymmetric-matrix_002c-eigensystem-1348"></a>
The solution of the real nonsymmetric eigensystem problem for a
matrix A involves computing the Schur decomposition

<pre class="example">     A = Z T Z^T
</pre>
   <p>where Z is an orthogonal matrix of Schur vectors and T,
the Schur form, is quasi upper triangular with diagonal
1-by-1 blocks which are real eigenvalues of A, and
diagonal 2-by-2 blocks whose eigenvalues are complex
conjugate eigenvalues of A. The algorithm used is the double
shift Francis method.

<div class="defun">
&mdash; Function: gsl_eigen_nonsymm_workspace * <b>gsl_eigen_nonsymm_alloc</b> (<var>const size_t n</var>)<var><a name="index-gsl_005feigen_005fnonsymm_005falloc-1349"></a></var><br>
<blockquote><p>This function allocates a workspace for computing eigenvalues of
<var>n</var>-by-<var>n</var> real nonsymmetric matrices. The size of the workspace
is O(2n). 
</p></blockquote></div>

<div class="defun">
&mdash; Function: void <b>gsl_eigen_nonsymm_free</b> (<var>gsl_eigen_nonsymm_workspace * w</var>)<var><a name="index-gsl_005feigen_005fnonsymm_005ffree-1350"></a></var><br>
<blockquote><p>This function frees the memory associated with the workspace <var>w</var>. 
</p></blockquote></div>

<div class="defun">
&mdash; Function: void <b>gsl_eigen_nonsymm_params</b> (<var>const int compute_t, const int balance, gsl_eigen_nonsymm_workspace * w</var>)<var><a name="index-gsl_005feigen_005fnonsymm_005fparams-1351"></a></var><br>
<blockquote><p>This function sets some parameters which determine how the eigenvalue
problem is solved in subsequent calls to <code>gsl_eigen_nonsymm</code>.

        <p>If <var>compute_t</var> is set to 1, the full Schur form T will be
computed by <code>gsl_eigen_nonsymm</code>. If it is set to 0,
T will not be computed (this is the default setting). Computing
the full Schur form T requires approximately 1.5-2 times the
number of flops.

        <p>If <var>balance</var> is set to 1, a balancing transformation is applied
to the matrix prior to computing eigenvalues. This transformation is
designed to make the rows and columns of the matrix have comparable
norms, and can result in more accurate eigenvalues for matrices
whose entries vary widely in magnitude. See <a href="Balancing.html">Balancing</a> for more
information. Note that the balancing transformation does not preserve
the orthogonality of the Schur vectors, so if you wish to compute the
Schur vectors with <code>gsl_eigen_nonsymm_Z</code> you will obtain the Schur
vectors of the balanced matrix instead of the original matrix. The
relationship will be

     <pre class="example">          T = Q^t D^(-1) A D Q
</pre>
        <p class="noindent">where <var>Q</var> is the matrix of Schur vectors for the balanced matrix, and
<var>D</var> is the balancing transformation. Then <code>gsl_eigen_nonsymm_Z</code>
will compute a matrix <var>Z</var> which satisfies

     <pre class="example">          T = Z^(-1) A Z
</pre>
        <p class="noindent">with Z = D Q. Note that <var>Z</var> will not be orthogonal. For
this reason, balancing is not performed by default. 
</p></blockquote></div>

<div class="defun">
&mdash; Function: int <b>gsl_eigen_nonsymm</b> (<var>gsl_matrix * A, gsl_vector_complex * eval, gsl_eigen_nonsymm_workspace * w</var>)<var><a name="index-gsl_005feigen_005fnonsymm-1352"></a></var><br>
<blockquote><p>This function computes the eigenvalues of the real nonsymmetric matrix
<var>A</var> and stores them in the vector <var>eval</var>. If T is
desired, it is stored in the upper portion of <var>A</var> on output. 
Otherwise, on output, the diagonal of <var>A</var> will contain the
1-by-1 real eigenvalues and 2-by-2
complex conjugate eigenvalue systems, and the rest of <var>A</var> is
destroyed. In rare cases, this function may fail to find all
eigenvalues. If this happens, an error code is returned
and the number of converged eigenvalues is stored in <code>w-&gt;n_evals</code>. 
The converged eigenvalues are stored in the beginning of <var>eval</var>. 
</p></blockquote></div>

<div class="defun">
&mdash; Function: int <b>gsl_eigen_nonsymm_Z</b> (<var>gsl_matrix * A, gsl_vector_complex * eval, gsl_matrix * Z, gsl_eigen_nonsymm_workspace * w</var>)<var><a name="index-gsl_005feigen_005fnonsymm_005fZ-1353"></a></var><br>
<blockquote><p>This function is identical to <code>gsl_eigen_nonsymm</code> except it also
computes the Schur vectors and stores them into <var>Z</var>. 
</p></blockquote></div>

<div class="defun">
&mdash; Function: gsl_eigen_nonsymmv_workspace * <b>gsl_eigen_nonsymmv_alloc</b> (<var>const size_t n</var>)<var><a name="index-gsl_005feigen_005fnonsymmv_005falloc-1354"></a></var><br>
<blockquote><p>This function allocates a workspace for computing eigenvalues and
eigenvectors of <var>n</var>-by-<var>n</var> real nonsymmetric matrices. The
size of the workspace is O(5n). 
</p></blockquote></div>

<div class="defun">
&mdash; Function: void <b>gsl_eigen_nonsymmv_free</b> (<var>gsl_eigen_nonsymmv_workspace * w</var>)<var><a name="index-gsl_005feigen_005fnonsymmv_005ffree-1355"></a></var><br>
<blockquote><p>This function frees the memory associated with the workspace <var>w</var>. 
</p></blockquote></div>

<div class="defun">
&mdash; Function: int <b>gsl_eigen_nonsymmv</b> (<var>gsl_matrix * A, gsl_vector_complex * eval, gsl_matrix_complex * evec, gsl_eigen_nonsymmv_workspace * w</var>)<var><a name="index-gsl_005feigen_005fnonsymmv-1356"></a></var><br>
<blockquote><p>This function computes eigenvalues and right eigenvectors of the
<var>n</var>-by-<var>n</var> real nonsymmetric matrix <var>A</var>. It first calls
<code>gsl_eigen_nonsymm</code> to compute the eigenvalues, Schur form T, and
Schur vectors. Then it finds eigenvectors of T and backtransforms
them using the Schur vectors. The Schur vectors are destroyed in the
process, but can be saved by using <code>gsl_eigen_nonsymmv_Z</code>. The
computed eigenvectors are normalized to have unit magnitude. On
output, the upper portion of <var>A</var> contains the Schur form
T. If <code>gsl_eigen_nonsymm</code> fails, no eigenvectors are
computed, and an error code is returned. 
</p></blockquote></div>

<div class="defun">
&mdash; Function: int <b>gsl_eigen_nonsymmv_Z</b> (<var>gsl_matrix * A, gsl_vector_complex * eval, gsl_matrix_complex * evec, gsl_matrix * Z, gsl_eigen_nonsymmv_workspace * w</var>)<var><a name="index-gsl_005feigen_005fnonsymmv_005fZ-1357"></a></var><br>
<blockquote><p>This function is identical to <code>gsl_eigen_nonsymmv</code> except it also saves
the Schur vectors into <var>Z</var>. 
</p></blockquote></div>

<hr>The GNU Scientific Library - a free numerical library licensed under the GNU GPL<br>Back to the <a href="/software/gsl/">GNU Scientific Library Homepage</a></body></html>