Lines Matching full: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.
103 RealSchur(const MatrixType& matrix, bool computeU = true)
104 : m_matT(matrix.rows(),matrix.cols()),
105 m_matU(matrix.rows(),matrix.cols()),
106 m_workspaceVector(matrix.rows()),
107 m_hess(matrix.rows()),
112 compute(matrix, computeU);
115 /** \brief Returns the orthogonal matrix in the Schur decomposition.
117 * \returns A const reference to the matrix U.
121 * to compute the Schur decomposition of a matrix, and \p computeU was set
129 eigen_assert(m_matUisUptodate && "The matrix U has not been computed during the RealSchur decomposition.");
133 /** \brief Returns the quasi-triangular matrix in the Schur decomposition.
135 * \returns A const reference to the matrix T.
139 * to compute the Schur decomposition of a matrix.
149 /** \brief Computes Schur decomposition of given matrix.
151 * \param[in] matrix Square matrix whose Schur decomposition is to be computed.
155 * The Schur decomposition is computed by first reducing the matrix to
157 * matrix is then reduced to triangular form by performing Francis QR
168 RealSchur& compute(const MatrixType& matrix, bool computeU = true);
170 /** \brief Computes Schur decomposition of a Hessenberg matrix H = Z T Z^T
171 * \param[in] matrixH Matrix in Hessenberg form H
172 * \param[in] matrixQ orthogonal matrix Q that transform a matrix A to H : A = Q H Q^T
173 * \param computeU Computes the matriX U of the Schur vectors
176 * This routine assumes that the matrix is already reduced in Hessenberg form matrixH
178 * It computes the upper quasi-triangular matrix T of the Schur decomposition of H
179 * When computeU is true, this routine computes the matrix U such that
180 * A = U T U^T = (QZ) T (QZ)^T = Q H Q^T where A is the initial matrix
182 * NOTE Q is referenced if computeU is true; so, if the initial orthogonal matrix
183 * is not available, the user should give an identity matrix (Q.setIdentity())
202 * of the matrix.
219 * matrix. It is currently set to 40.
234 typedef Matrix<Scalar,3,1> Vector3s;
246 RealSchur<MatrixType>& RealSchur<MatrixType>::compute(const MatrixType& matrix, bool computeU)
248 eigen_assert(matrix.cols() == matrix.rows());
251 maxIters = m_maxIterationsPerRow * matrix.rows();
254 m_hess.compute(matrix);
275 // The matrix m_matT is divided in three parts.
281 Index totalIter = 0; // iteration count for whole matrix
370 // The eigenvalues of the 2x2 matrix [a b; c d] are
486 Matrix<Scalar, 2, 1> ess;
504 Matrix<Scalar, 2, 1> v = m_matT.template block<2,1>(iu-1, iu-2);
506 Matrix<Scalar, 1, 1> ess;