annotate liboctave/EIG.h @ 5307:4c8a2e4e0717

[project @ 2005-04-26 19:24:27 by jwe]
author jwe
date Tue, 26 Apr 2005 19:24:47 +0000
parents 23b37da9fd5b
children 143b556ce725
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
1 /*
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
2
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 2815
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
4
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
6
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
10 later version.
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
11
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
15 for more details.
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
16
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
5307
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 5275
diff changeset
19 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 5275
diff changeset
20 02110-1301, USA.
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
21
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
22 */
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
23
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
24 #if !defined (octave_EIG_h)
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
25 #define octave_EIG_h 1
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
26
3503
d14c483b3c12 [project @ 2000-02-01 04:06:07 by jwe]
jwe
parents: 2847
diff changeset
27 #include <iostream>
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
28
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
29 #include "dMatrix.h"
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
30 #include "CMatrix.h"
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
31 #include "CColVector.h"
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
32
1867
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
33 class
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
34 EIG
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
35 {
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
36 friend class Matrix;
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
37 friend class ComplexMatrix;
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
38
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
39 public:
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
40
1867
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
41 EIG (void)
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
42 : lambda (), v () { }
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
43
4725
fa612b2cbfe9 [project @ 2004-01-23 16:42:51 by jwe]
jwe
parents: 4192
diff changeset
44 EIG (const Matrix& a, bool calc_eigenvectors = true)
fa612b2cbfe9 [project @ 2004-01-23 16:42:51 by jwe]
jwe
parents: 4192
diff changeset
45 { init (a, calc_eigenvectors); }
1867
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
46
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5105
diff changeset
47 EIG (const Matrix& a, octave_idx_type& info, bool calc_eigenvectors = true)
4725
fa612b2cbfe9 [project @ 2004-01-23 16:42:51 by jwe]
jwe
parents: 4192
diff changeset
48 { info = init (a, calc_eigenvectors); }
1528
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
49
4725
fa612b2cbfe9 [project @ 2004-01-23 16:42:51 by jwe]
jwe
parents: 4192
diff changeset
50 EIG (const ComplexMatrix& a, bool calc_eigenvectors = true)
fa612b2cbfe9 [project @ 2004-01-23 16:42:51 by jwe]
jwe
parents: 4192
diff changeset
51 { init (a, calc_eigenvectors); }
1867
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
52
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5105
diff changeset
53 EIG (const ComplexMatrix& a, octave_idx_type& info, bool calc_eigenvectors = true)
4725
fa612b2cbfe9 [project @ 2004-01-23 16:42:51 by jwe]
jwe
parents: 4192
diff changeset
54 { info = init (a, calc_eigenvectors); }
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
55
1528
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
56 EIG (const EIG& a)
1867
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
57 : lambda (a.lambda), v (a.v) { }
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
58
1528
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
59 EIG& operator = (const EIG& a)
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
60 {
1867
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
61 if (this != &a)
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
62 {
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
63 lambda = a.lambda;
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
64 v = a.v;
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
65 }
1528
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
66 return *this;
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
67 }
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
68
1934
0e591d443ff0 [project @ 1996-02-12 03:25:10 by jwe]
jwe
parents: 1867
diff changeset
69 ~EIG (void) { }
0e591d443ff0 [project @ 1996-02-12 03:25:10 by jwe]
jwe
parents: 1867
diff changeset
70
1528
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
71 ComplexColumnVector eigenvalues (void) const { return lambda; }
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
72
dc527156c38c [project @ 1995-10-05 01:44:18 by jwe]
jwe
parents: 1315
diff changeset
73 ComplexMatrix eigenvectors (void) const { return v; }
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
74
3504
5eef8a2294bd [project @ 2000-02-01 10:06:51 by jwe]
jwe
parents: 3503
diff changeset
75 friend std::ostream& operator << (std::ostream& os, const EIG& a);
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
76
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
77 private:
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
78
1867
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
79 ComplexColumnVector lambda;
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
80 ComplexMatrix v;
52e7bca8ce33 [project @ 1996-02-04 11:19:32 by jwe]
jwe
parents: 1528
diff changeset
81
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5105
diff changeset
82 octave_idx_type init (const Matrix& a, bool calc_eigenvectors);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5105
diff changeset
83 octave_idx_type init (const ComplexMatrix& a, bool calc_eigenvectors);
2815
33486d9e2d00 [project @ 1997-03-14 08:24:46 by jwe]
jwe
parents: 1993
diff changeset
84
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5105
diff changeset
85 octave_idx_type symmetric_init (const Matrix& a, bool calc_eigenvectors);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5105
diff changeset
86 octave_idx_type hermitian_init (const ComplexMatrix& a, bool calc_eigenvectors);
462
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
87 };
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
88
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
89 #endif
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
90
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
91 /*
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
92 ;;; Local Variables: ***
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
93 ;;; mode: C++ ***
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
94 ;;; End: ***
07fabd96ac6a [project @ 1994-06-06 00:58:18 by jwe]
jwe
parents:
diff changeset
95 */