Lines Matching full:matrix
28 * \brief Performs a complex Schur decomposition of a real or complex square matrix
30 * \tparam _MatrixType the type of the matrix of which we are
32 * instantiation of the Matrix class template.
34 * Given a real or complex square matrix A, this class computes the
36 * complex matrix, and T is a complex upper triangular matrix. The
37 * diagonal of the matrix T corresponds to the eigenvalues of the
38 * matrix A.
41 * a given matrix. Alternatively, you can use the
78 * This is a square matrix with entries of type #ComplexScalar.
81 …typedef Matrix<ComplexScalar, RowsAtCompileTime, ColsAtCompileTime, Options, MaxRowsAtCompileTime,…
85 …* \param [in] size Positive integer, size of the matrix whose Schur decomposition will be compute…
103 /** \brief Constructor; computes Schur decomposition of given matrix.
105 * \param[in] matrix Square matrix whose Schur decomposition is to be computed.
112 ComplexSchur(const MatrixType& matrix, bool computeU = true)
113 : m_matT(matrix.rows(),matrix.cols()),
114 m_matU(matrix.rows(),matrix.cols()),
115 m_hess(matrix.rows()),
120 compute(matrix, computeU);
123 /** \brief Returns the unitary matrix in the Schur decomposition.
125 * \returns A const reference to the matrix U.
128 * ComplexSchur(const MatrixType& matrix, bool computeU) or the
129 * member function compute(const MatrixType& matrix, bool computeU)
131 * matrix, and that \p computeU was set to true (the default
140 …eigen_assert(m_matUisUptodate && "The matrix U has not been computed during the ComplexSchur decom… in matrixU()
144 /** \brief Returns the triangular matrix in the Schur decomposition.
146 * \returns A const reference to the matrix T.
149 * ComplexSchur(const MatrixType& matrix, bool computeU) or the
150 * member function compute(const MatrixType& matrix, bool computeU)
152 * matrix.
154 * Note that this function returns a plain square matrix. If you want to reference
167 /** \brief Computes Schur decomposition of given matrix.
169 * \param[in] matrix Square matrix whose Schur decomposition is to be computed.
175 * matrix to Hessenberg form using the class
176 * HessenbergDecomposition. The Hessenberg matrix is then reduced
189 ComplexSchur& compute(const MatrixType& matrix, bool computeU = true);
191 /** \brief Compute Schur decomposition from a given Hessenberg matrix
192 * \param[in] matrixH Matrix in Hessenberg form H
193 * \param[in] matrixQ orthogonal matrix Q that transform a matrix A to H : A = Q H Q^T
194 * \param computeU Computes the matriX U of the Schur vectors
197 * This routine assumes that the matrix is already reduced in Hessenberg form matrixH
199 * It computes the upper quasi-triangular matrix T of the Schur decomposition of H
200 * When computeU is true, this routine computes the matrix U such that
201 * A = U T U^T = (QZ) T (QZ)^T = Q H Q^T where A is the initial matrix
203 * NOTE Q is referenced if computeU is true; so, if the initial orthogonal matrix
204 * is not available, the user should give an identity matrix (Q.setIdentity())
224 * of the matrix.
241 * matrix. It is currently set to 30.
290 Matrix<ComplexScalar,2,2> t = m_matT.template block<2,2>(iu-1,iu-1);
316 ComplexSchur<MatrixType>& ComplexSchur<MatrixType>::compute(const MatrixType& matrix, bool computeU)
319 eigen_assert(matrix.cols() == matrix.rows());
321 if(matrix.cols() == 1)
323 m_matT = matrix.template cast<ComplexScalar>();
331 …schur_reduce_to_hessenberg<MatrixType, NumTraits<Scalar>::IsComplex>::run(*this, matrix, computeU);
348 /* Reduce given matrix to Hessenberg form */
353 static void run(ComplexSchur<MatrixType>& _this, const MatrixType& matrix, bool computeU)
355 _this.m_hess.compute(matrix);
364 static void run(ComplexSchur<MatrixType>& _this, const MatrixType& matrix, bool computeU)
369 _this.m_hess.compute(matrix);
382 // Reduce the Hessenberg matrix m_matT to triangular form by QR iteration.
390 // The matrix m_matT is divided in three parts.
397 Index totalIter = 0; // number of iterations for whole matrix
409 // if iu is zero then we are done; the whole matrix is triangularized