aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Eigen/src/Eigenvalues/GeneralizedEigenSolver.h26
-rw-r--r--doc/snippets/GeneralizedEigenSolver.cpp7
2 files changed, 15 insertions, 18 deletions
diff --git a/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h b/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h
index 8734bb276..0075880fe 100644
--- a/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h
+++ b/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h
@@ -18,7 +18,7 @@ namespace Eigen {
/** \eigenvalues_module \ingroup Eigenvalues_Module
*
*
- * \class EigenSolver
+ * \class GeneralizedEigenSolver
*
* \brief Computes the generalized eigenvalues and eigenvectors of a pair of general matrices
*
@@ -48,8 +48,9 @@ namespace Eigen {
* eigenvectors are computed, they can be retrieved with the eigenvalues() and
* eigenvectors() functions.
*
- * The documentation for GeneralizedEigenSolver(const MatrixType&, const MatrixType&, bool) contains an
- * example of the typical use of this class.
+ * Here is an usage example of this class:
+ * Example: \include GeneralizedEigenSolver.cpp
+ * Output: \verbinclude GeneralizedEigenSolver.out
*
* \sa MatrixBase::eigenvalues(), class ComplexEigenSolver, class SelfAdjointEigenSolver
*/
@@ -142,9 +143,6 @@ template<typename _MatrixType> class GeneralizedEigenSolver
* This constructor calls compute() to compute the generalized eigenvalues
* and eigenvectors.
*
- * Example: \include GeneralizedEigenSolver_GeneralizedEigenSolver_MatrixType.cpp
- * Output: \verbinclude GeneralizedEigenSolver_GeneralizedEigenSolver_MatrixType.out
- *
* \sa compute()
*/
GeneralizedEigenSolver(const MatrixType& A, const MatrixType& B, bool computeEigenvectors = true)
@@ -160,7 +158,7 @@ template<typename _MatrixType> class GeneralizedEigenSolver
compute(A, B, computeEigenvectors);
}
- /** \brief Returns the computed generalized eigenvectors.
+ /* \brief Returns the computed generalized eigenvectors.
*
* \returns %Matrix whose columns are the (possibly complex) eigenvectors.
*
@@ -175,12 +173,9 @@ template<typename _MatrixType> class GeneralizedEigenSolver
* matrix returned by this function is the matrix \f$ V \f$ in the
* generalized eigendecomposition \f$ A = B V D V^{-1} \f$, if it exists.
*
- * Example: \include GeneralizedEigenSolver_eigenvectors.cpp
- * Output: \verbinclude GeneralizedEigenSolver_eigenvectors.out
- *
* \sa eigenvalues()
*/
- //EigenvectorsType eigenvectors() const;
+// EigenvectorsType eigenvectors() const;
/** \brief Returns an expression of the computed generalized eigenvalues.
*
@@ -198,9 +193,6 @@ template<typename _MatrixType> class GeneralizedEigenSolver
* so there are as many eigenvalues as rows in the matrix. The eigenvalues
* are not sorted in any particular order.
*
- * Example: \include GeneralizedEigenSolver_eigenvalues.cpp
- * Output: \verbinclude GeneralizedEigenSolver_eigenvalues.out
- *
* \sa alphas(), betas(), eigenvectors()
*/
EigenvalueType eigenvalues() const
@@ -253,9 +245,6 @@ template<typename _MatrixType> class GeneralizedEigenSolver
* generalized Schur decomposition.
*
* This method reuses of the allocated data in the GeneralizedEigenSolver object.
- *
- * Example: \include GeneralizedEigenSolver_compute.cpp
- * Output: \verbinclude GeneralizedEigenSolver_compute.out
*/
GeneralizedEigenSolver& compute(const MatrixType& A, const MatrixType& B, bool computeEigenvectors = true);
@@ -310,6 +299,8 @@ GeneralizedEigenSolver<MatrixType>::compute(const MatrixType& A, const MatrixTyp
if (m_realQZ.info() == Success)
{
m_matS = m_realQZ.matrixS();
+ if (computeEigenvectors)
+ m_eivec = m_realQZ.matrixZ().transpose();
// Compute eigenvalues from matS
m_alphas.resize(A.cols());
@@ -343,7 +334,6 @@ GeneralizedEigenSolver<MatrixType>::compute(const MatrixType& A, const MatrixTyp
return *this;
}
-
} // end namespace Eigen
#endif // EIGEN_GENERALIZEDEIGENSOLVER_H
diff --git a/doc/snippets/GeneralizedEigenSolver.cpp b/doc/snippets/GeneralizedEigenSolver.cpp
new file mode 100644
index 000000000..2acda45fa
--- /dev/null
+++ b/doc/snippets/GeneralizedEigenSolver.cpp
@@ -0,0 +1,7 @@
+GeneralizedEigenSolver<MatrixXf> ges;
+MatrixXf A = MatrixXf::Random(4,4);
+MatrixXf B = MatrixXf::Random(4,4);
+ges.compute(A, B);
+cout << "The (complex) numerators of the generalzied eigenvalues are: " << ges.alphas().transpose() << endl;
+cout << "The (real) denominatore of the generalzied eigenvalues are: " << ges.betas().transpose() << endl;
+cout << "The (complex) generalzied eigenvalues are (alphas./beta): " << ges.eigenvalues().transpose() << endl;