![]() |
Prusa Slicer 2.6.0
|
Performs a real QZ decomposition of a pair of square matrices. More...
#include <src/eigen/Eigen/src/Eigenvalues/RealQZ.h>
Inheritance diagram for Eigen::RealQZ< _MatrixType >:
Collaboration diagram for Eigen::RealQZ< _MatrixType >:Public Types | |
| enum | { RowsAtCompileTime = MatrixType::RowsAtCompileTime , ColsAtCompileTime = MatrixType::ColsAtCompileTime , Options = MatrixType::Options , MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime , MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime } |
| typedef _MatrixType | MatrixType |
| typedef MatrixType::Scalar | Scalar |
| typedef std::complex< typename NumTraits< Scalar >::Real > | ComplexScalar |
| typedef Eigen::Index | Index |
| typedef Matrix< ComplexScalar, ColsAtCompileTime, 1, Options &~RowMajor, MaxColsAtCompileTime, 1 > | EigenvalueType |
| typedef Matrix< Scalar, ColsAtCompileTime, 1, Options &~RowMajor, MaxColsAtCompileTime, 1 > | ColumnVectorType |
Public Member Functions | |
| RealQZ (Index size=RowsAtCompileTime==Dynamic ? 1 :RowsAtCompileTime) | |
| Default constructor. | |
| RealQZ (const MatrixType &A, const MatrixType &B, bool computeQZ=true) | |
| Constructor; computes real QZ decomposition of given matrices. | |
| const MatrixType & | matrixQ () const |
| Returns matrix Q in the QZ decomposition. | |
| const MatrixType & | matrixZ () const |
| Returns matrix Z in the QZ decomposition. | |
| const MatrixType & | matrixS () const |
| Returns matrix S in the QZ decomposition. | |
| const MatrixType & | matrixT () const |
| Returns matrix S in the QZ decomposition. | |
| RealQZ & | compute (const MatrixType &A, const MatrixType &B, bool computeQZ=true) |
| Computes QZ decomposition of given matrix. | |
| ComputationInfo | info () const |
| Reports whether previous computation was successful. | |
| Index | iterations () const |
| Returns number of performed QR-like iterations. | |
| RealQZ & | setMaxIterations (Index maxIters) |
Private Types | |
| typedef Matrix< Scalar, 3, 1 > | Vector3s |
| typedef Matrix< Scalar, 2, 1 > | Vector2s |
| typedef Matrix< Scalar, 2, 2 > | Matrix2s |
| typedef JacobiRotation< Scalar > | JRs |
Private Member Functions | |
| void | hessenbergTriangular () |
| void | computeNorms () |
| Index | findSmallSubdiagEntry (Index iu) |
| Index | findSmallDiagEntry (Index f, Index l) |
| void | splitOffTwoRows (Index i) |
| void | pushDownZero (Index z, Index f, Index l) |
| void | step (Index f, Index l, Index iter) |
Private Attributes | |
| MatrixType | m_S |
| MatrixType | m_T |
| MatrixType | m_Q |
| MatrixType | m_Z |
| Matrix< Scalar, Dynamic, 1 > | m_workspace |
| ComputationInfo | m_info |
| Index | m_maxIters |
| bool | m_isInitialized |
| bool | m_computeQZ |
| Scalar | m_normOfT |
| Scalar | m_normOfS |
| Index | m_global_iter |
Performs a real QZ decomposition of a pair of square matrices.
\eigenvalues_module
| _MatrixType | the type of the matrix of which we are computing the real QZ decomposition; this is expected to be an instantiation of the Matrix class template. |
Given a real square matrices A and B, this class computes the real QZ decomposition:
The eigenvalues of the pencil
Call the function compute() to compute the real QZ decomposition of a given pair of matrices. Alternatively, you can use the RealQZ(const MatrixType& B, const MatrixType& B, bool computeQZ) constructor which computes the real QZ decomposition at construction time. Once the decomposition is computed, you can use the matrixS(), matrixT(), matrixQ() and matrixZ() functions to retrieve the matrices S, T, Q and Z in the decomposition. If computeQZ==false, some time is saved by not computing matrices Q and Z.
Example:
Output:
| typedef Matrix<Scalar, ColsAtCompileTime, 1, Options & ~RowMajor, MaxColsAtCompileTime, 1> Eigen::RealQZ< _MatrixType >::ColumnVectorType |
| typedef std::complex<typename NumTraits<Scalar>::Real> Eigen::RealQZ< _MatrixType >::ComplexScalar |
| typedef Matrix<ComplexScalar, ColsAtCompileTime, 1, Options & ~RowMajor, MaxColsAtCompileTime, 1> Eigen::RealQZ< _MatrixType >::EigenvalueType |
| typedef Eigen::Index Eigen::RealQZ< _MatrixType >::Index |
|
private |
|
private |
| typedef _MatrixType Eigen::RealQZ< _MatrixType >::MatrixType |
| typedef MatrixType::Scalar Eigen::RealQZ< _MatrixType >::Scalar |
|
private |
|
private |
| anonymous enum |
| Enumerator | |
|---|---|
| RowsAtCompileTime | |
| ColsAtCompileTime | |
| Options | |
| MaxRowsAtCompileTime | |
| MaxColsAtCompileTime | |
|
inlineexplicit |
Default constructor.
| [in] | size | Positive integer, size of the matrix whose QZ decomposition will be computed. |
The default constructor is useful in cases in which the user intends to perform decompositions via compute(). The size parameter is only used as a hint. It is not an error to give a wrong size, but it may impair performance.
|
inline |
Constructor; computes real QZ decomposition of given matrices.
This constructor calls compute() to compute the QZ decomposition.
References Eigen::RealQZ< _MatrixType >::compute().
Here is the call graph for this function:| RealQZ< MatrixType > & Eigen::RealQZ< MatrixType >::compute | ( | const MatrixType & | A, |
| const MatrixType & | B, | ||
| bool | computeQZ = true |
||
| ) |
Computes QZ decomposition of given matrix.
*this References eigen_assert, Eigen::NoConvergence, Eigen::internal::real_2x2_jacobi_svd(), Eigen::Success, and Eigen::JacobiRotation< Scalar >::transpose().
Referenced by Eigen::RealQZ< _MatrixType >::RealQZ().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
private |
References Eigen::JacobiRotation< Scalar >::adjoint(), Eigen::HouseholderQR< _MatrixType >::householderQ(), Eigen::JacobiRotation< Scalar >::makeGivens(), and Eigen::HouseholderQR< _MatrixType >::matrixQR().
Here is the call graph for this function:
|
inline |
Reports whether previous computation was successful.
Success if computation was succesful, NoConvergence otherwise. References eigen_assert, Eigen::RealQZ< _MatrixType >::m_info, and Eigen::RealQZ< _MatrixType >::m_isInitialized.
Referenced by Eigen::GeneralizedEigenSolver< _MatrixType >::info().
Here is the caller graph for this function:
|
inline |
Returns number of performed QR-like iterations.
References eigen_assert, Eigen::RealQZ< _MatrixType >::m_global_iter, and Eigen::RealQZ< _MatrixType >::m_isInitialized.
|
inline |
Returns matrix Q in the QZ decomposition.
References eigen_assert, Eigen::RealQZ< _MatrixType >::m_computeQZ, Eigen::RealQZ< _MatrixType >::m_isInitialized, and Eigen::RealQZ< _MatrixType >::m_Q.
|
inline |
Returns matrix S in the QZ decomposition.
References eigen_assert, Eigen::RealQZ< _MatrixType >::m_isInitialized, and Eigen::RealQZ< _MatrixType >::m_S.
|
inline |
Returns matrix S in the QZ decomposition.
References eigen_assert, Eigen::RealQZ< _MatrixType >::m_isInitialized, and Eigen::RealQZ< _MatrixType >::m_T.
|
inline |
Returns matrix Z in the QZ decomposition.
References eigen_assert, Eigen::RealQZ< _MatrixType >::m_computeQZ, Eigen::RealQZ< _MatrixType >::m_isInitialized, and Eigen::RealQZ< _MatrixType >::m_Z.
|
inlineprivate |
References Eigen::JacobiRotation< Scalar >::adjoint(), and Eigen::JacobiRotation< Scalar >::makeGivens().
Here is the call graph for this function:
|
inline |
Sets the maximal number of iterations allowed to converge to one eigenvalue or decouple the problem.
References Eigen::RealQZ< _MatrixType >::m_maxIters.
Referenced by Eigen::GeneralizedEigenSolver< _MatrixType >::setMaxIterations().
Here is the caller graph for this function:
|
inlineprivate |
References Eigen::JacobiRotation< Scalar >::adjoint(), Eigen::JacobiRotation< Scalar >::makeGivens(), and sqrt().
Here is the call graph for this function:
|
inlineprivate |
References Eigen::JacobiRotation< Scalar >::adjoint(), Eigen::PlainObjectBase< Derived >::coeff(), Eigen::Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::coeffRef(), Eigen::PlainObjectBase< Derived >::data(), and Eigen::JacobiRotation< Scalar >::makeGivens().
Here is the call graph for this function:
|
private |
Referenced by Eigen::RealQZ< _MatrixType >::matrixQ(), and Eigen::RealQZ< _MatrixType >::matrixZ().
|
private |
Referenced by Eigen::RealQZ< _MatrixType >::iterations().
|
private |
Referenced by Eigen::RealQZ< _MatrixType >::info().
|
private |
|
private |
Referenced by Eigen::RealQZ< _MatrixType >::setMaxIterations().
|
private |
|
private |
|
private |
Referenced by Eigen::RealQZ< _MatrixType >::matrixQ().
|
private |
Referenced by Eigen::RealQZ< _MatrixType >::matrixS().
|
private |
Referenced by Eigen::RealQZ< _MatrixType >::matrixT().
|
private |
|
private |
Referenced by Eigen::RealQZ< _MatrixType >::matrixZ().