Encapsulates the permutation and balance transformations on a nonsymmetric matrix before computing its eigenvalues. More...
#include <rw/lapack/bal.h>
Public Member Functions | |
RWBalanceTransform () | |
RWBalanceTransform (const RWBalanceTransform &) | |
unsigned | cols () const |
unsigned | highIndex () const |
RWGenMat< TypeT > | invTransform (const RWGenMat< TypeT > &x) const |
RWMathVec< TypeT > | invTransform (const RWMathVec< TypeT > &x) const |
unsigned | lowIndex () const |
RWBalanceTransform< TypeT > & | operator= (const RWBalanceTransform &) |
unsigned | rows () const |
RWGenMat< TypeT > | transform (const RWGenMat< TypeT > &x) const |
RWMathVec< TypeT > | transform (const RWMathVec< TypeT > &x) const |
A permutation and balance transformation is often performed on a nonsymmetric matrix before computing its eigenvalues. The permutation attempts to break the matrix into three independent blocks such that the first and last block are triangular, and the balance transformation is a diagonal scaling transformation that attempts to make the row and column norms close to each other. The class RWBalanceTransform encapsulates these two transformations.
The class RWBalanceTransform is not often required explicitly; most often it is used implicitly by the nonsymmetric eigenvalue decompositions and servers. If you do need to use this class explicitly, it is usually best to construct an object and extract the transform from the object.
RWBalanceTransform< TypeT >::RWBalanceTransform | ( | ) |
Constructs an empty transformation.
RWBalanceTransform< TypeT >::RWBalanceTransform | ( | const RWBalanceTransform< TypeT > & | ) |
Copies the transformation.
|
inline |
Returns the number of columns in the transformation matrix.
|
inline |
If a permutation breaks the matrix into three independent blocks, this function returns the index where the middle block ends. The part of the matrix below this block is triangular, so its eigenvalues need not be computed.
RWGenMat<TypeT> RWBalanceTransform< TypeT >::invTransform | ( | const RWGenMat< TypeT > & | x | ) | const |
Computes the inner product of the inverse transpose of the transform and x. This is typically used to transform left eigenvectors.
RWMathVec<TypeT> RWBalanceTransform< TypeT >::invTransform | ( | const RWMathVec< TypeT > & | x | ) | const |
Computes the inner product of the inverse transpose of the transform and x. This is typically used to transform left eigenvectors.
|
inline |
If a permutation breaks the matrix into three independent blocks, this function returns the index where the middle block begins. The part of the matrix above this block is triangular, so its eigenvalues need not be computed.
RWBalanceTransform<TypeT>& RWBalanceTransform< TypeT >::operator= | ( | const RWBalanceTransform< TypeT > & | ) |
Initializes the transformation.
|
inline |
Returns the number of rows in the transformation matrix.
RWGenMat<TypeT> RWBalanceTransform< TypeT >::transform | ( | const RWGenMat< TypeT > & | x | ) | const |
Computes the inner product of the transform and x. This is typically used to transform right eigenvectors.
RWMathVec<TypeT> RWBalanceTransform< TypeT >::transform | ( | const RWMathVec< TypeT > & | x | ) | const |
Computes the inner product of the transform and x. This is typically used to transform right eigenvectors.
Copyright © 2021 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved. |