Lines Matching full:matrix
25 * \tparam _MatrixType the type of the matrix of which we are computing the
26 * eigendecomposition; this is expected to be an instantiation of the Matrix
29 * The eigenvalues and eigenvectors of a matrix \f$ A \f$ are scalars
31 * \f$ D \f$ is a diagonal matrix with the eigenvalues on the diagonal, and
32 * \f$ V \f$ is a matrix with the eigenvectors as its columns, then \f$ A V =
33 * V D \f$. The matrix \f$ V \f$ is almost always invertible, in which case we
36 * The eigenvalues and eigenvectors of a matrix may be complex, even when the
37 * matrix is real. However, we can choose real matrices \f$ V \f$ and \f$ D
39 * matrix \f$ D \f$ is not required to be diagonal, but if it is allowed to
47 * a given matrix. Alternatively, you can use the
97 typedef Matrix<ComplexScalar, ColsAtCompileTime, 1, Options & ~RowMajor, MaxColsAtCompileTime, 1> EigenvalueType;
99 /** \brief Type for matrix of eigenvectors as returned by eigenvectors().
101 * This is a square matrix with entries of type #ComplexScalar.
104 typedef Matrix<ComplexScalar, RowsAtCompileTime, ColsAtCompileTime, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime> EigenvectorsType;
131 /** \brief Constructor; computes eigendecomposition of given matrix.
133 * \param[in] matrix Square matrix whose eigendecomposition is to be computed.
146 EigenSolver(const MatrixType& matrix, bool computeEigenvectors = true)
147 : m_eivec(matrix.rows(), matrix.cols()),
148 m_eivalues(matrix.cols()),
151 m_realSchur(matrix.cols()),
152 m_matT(matrix.rows(), matrix.cols()),
153 m_tmp(matrix.cols())
155 compute(matrix, computeEigenvectors);
158 /** \brief Returns the eigenvectors of given matrix.
160 * \returns %Matrix whose columns are the (possibly complex) eigenvectors.
167 * Column \f$ k \f$ of the returned matrix is an eigenvector corresponding
170 * matrix returned by this function is the matrix \f$ V \f$ in the
180 /** \brief Returns the pseudo-eigenvectors of given matrix.
182 * \returns Const reference to matrix whose columns are the pseudo-eigenvectors.
189 * The real matrix \f$ V \f$ returned by this function and the
190 * block-diagonal matrix \f$ D \f$ returned by pseudoEigenvalueMatrix()
205 /** \brief Returns the block-diagonal matrix in the pseudo-eigendecomposition.
207 * \returns A block-diagonal matrix.
213 * The matrix \f$ D \f$ returned by this function is real and
218 * The matrix \f$ D \f$ and the matrix \f$ V \f$ returned by
225 /** \brief Returns the eigenvalues of given matrix.
234 * so there are as many eigenvalues as rows in the matrix. The eigenvalues
249 /** \brief Computes eigendecomposition of given matrix.
251 * \param[in] matrix Square matrix whose eigendecomposition is to be computed.
257 * This function computes the eigenvalues of the real matrix \p matrix.
262 * The matrix is first reduced to real Schur form using the RealSchur
268 * (where \f$ n \f$ is the size of the matrix) if \p computeEigenvectors
276 EigenSolver& compute(const MatrixType& matrix, bool computeEigenvectors = true);
295 typedef Matrix<Scalar, ColsAtCompileTime, 1, Options & ~RowMajor, MaxColsAtCompileTime, 1> ColumnVectorType;
351 EigenSolver<MatrixType>& EigenSolver<MatrixType>::compute(const MatrixType& matrix, bool computeEigenvectors)
353 assert(matrix.cols() == matrix.rows());
356 m_realSchur.compute(matrix, computeEigenvectors);
364 m_eivalues.resize(matrix.cols());
366 while (i < matrix.cols())
368 if (i == matrix.cols() - 1 || m_matT.coeff(i+1, i) == Scalar(0))
490 // Last vector component imaginary so matrix is triangular
569 // Back transformation to get eigenvectors of original matrix