Lines Matching refs:Matrix
23 * \brief Performs a real Schur decomposition of a square matrix
25 * \tparam _MatrixType the type of the matrix of which we are computing the
27 * Matrix class template.
29 * Given a real square matrix A, this class computes the real Schur
30 * decomposition: \f$ A = U T U^T \f$ where U is a real orthogonal matrix and
31 * T is a real quasi-triangular matrix. An orthogonal matrix is a matrix whose
33 * matrix is a block-triangular matrix whose diagonal consists of 1-by-1
35 * blocks on the diagonal of T are the same as the eigenvalues of the matrix
37 * the eigendecomposition of a matrix.
40 * given matrix. Alternatively, you can use the RealSchur(const MatrixType&, bool)
69 typedef Matrix<ComplexScalar, ColsAtCompileTime, 1, Options & ~RowMajor, MaxColsAtCompileTime, 1> EigenvalueType;
70 typedef Matrix<Scalar, ColsAtCompileTime, 1, Options & ~RowMajor, MaxColsAtCompileTime, 1> ColumnVectorType;
74 * \param [in] size Positive integer, size of the matrix whose Schur decomposition will be computed.
93 /** \brief Constructor; computes real Schur decomposition of given matrix.
95 * \param[in] matrix Square matrix whose Schur decomposition is to be computed.
104 explicit RealSchur(const EigenBase<InputType>& matrix, bool computeU = true)
105 : m_matT(matrix.rows(),matrix.cols()),
106 m_matU(matrix.rows(),matrix.cols()),
107 m_workspaceVector(matrix.rows()),
108 m_hess(matrix.rows()),
113 compute(matrix.derived(), computeU);
116 /** \brief Returns the orthogonal matrix in the Schur decomposition.
118 * \returns A const reference to the matrix U.
122 * to compute the Schur decomposition of a matrix, and \p computeU was set
130 eigen_assert(m_matUisUptodate && "The matrix U has not been computed during the RealSchur decomposition.");
134 /** \brief Returns the quasi-triangular matrix in the Schur decomposition.
136 * \returns A const reference to the matrix T.
140 * to compute the Schur decomposition of a matrix.
150 /** \brief Computes Schur decomposition of given matrix.
152 * \param[in] matrix Square matrix whose Schur decomposition is to be computed.
156 * The Schur decomposition is computed by first reducing the matrix to
158 * matrix is then reduced to triangular form by performing Francis QR
170 RealSchur& compute(const EigenBase<InputType>& matrix, bool computeU = true);
172 /** \brief Computes Schur decomposition of a Hessenberg matrix H = Z T Z^T
173 * \param[in] matrixH Matrix in Hessenberg form H
174 * \param[in] matrixQ orthogonal matrix Q that transform a matrix A to H : A = Q H Q^T
175 * \param computeU Computes the matriX U of the Schur vectors
178 * This routine assumes that the matrix is already reduced in Hessenberg form matrixH
180 * It computes the upper quasi-triangular matrix T of the Schur decomposition of H
181 * When computeU is true, this routine computes the matrix U such that
182 * A = U T U^T = (QZ) T (QZ)^T = Q H Q^T where A is the initial matrix
184 * NOTE Q is referenced if computeU is true; so, if the initial orthogonal matrix
185 * is not available, the user should give an identity matrix (Q.setIdentity())
204 * of the matrix.
221 * matrix. It is currently set to 40.
236 typedef Matrix<Scalar,3,1> Vector3s;
249 RealSchur<MatrixType>& RealSchur<MatrixType>::compute(const EigenBase<InputType>& matrix, bool computeU)
253 eigen_assert(matrix.cols() == matrix.rows());
256 maxIters = m_maxIterationsPerRow * matrix.rows();
258 Scalar scale = matrix.derived().cwiseAbs().maxCoeff();
261 m_matT.setZero(matrix.rows(),matrix.cols());
263 m_matU.setIdentity(matrix.rows(),matrix.cols());
271 m_hess.compute(matrix.derived()/scale);
296 // The matrix m_matT is divided in three parts.
302 Index totalIter = 0; // iteration count for whole matrix
389 // The eigenvalues of the 2x2 matrix [a b; c d] are
503 Matrix<Scalar, 2, 1> ess;
521 Matrix<Scalar, 2, 1> v = m_matT.template block<2,1>(iu-1, iu-2);
523 Matrix<Scalar, 1, 1> ess;