Partial specialization of MatrixFunction for complex matrices.
Definition at line 131 of file MatrixFunctions.
Public Member Functions | |
| MatrixFunction (const MatrixType &A, StemFunction f) | |
| Constructor. | |
| template<typename ResultType > | |
| void | compute (ResultType &result) |
| Compute the matrix function. | |
Private Types | |
| typedef internal::traits < MatrixType > | Traits |
| typedef MatrixType::Scalar | Scalar |
| typedef MatrixType::Index | Index |
| typedef NumTraits< Scalar >::Real | RealScalar |
| typedef internal::stem_function < Scalar >::type | StemFunction |
| typedef Matrix< Scalar, Traits::RowsAtCompileTime, 1 > | VectorType |
| typedef Matrix< Index, Traits::RowsAtCompileTime, 1 > | IntVectorType |
| typedef Matrix< Index, Dynamic, 1 > | DynamicIntVectorType |
| typedef std::list< Scalar > | Cluster |
| typedef std::list< Cluster > | ListOfClusters |
| typedef Matrix< Scalar, Dynamic, Dynamic, Options, RowsAtCompileTime, ColsAtCompileTime > | DynMatrixType |
Private Member Functions | |
| void | computeSchurDecomposition () |
| Store the Schur decomposition of m_A in m_T and m_U. | |
| void | partitionEigenvalues () |
| Partition eigenvalues in clusters of ei'vals close to each other. | |
| ListOfClusters::iterator | findCluster (Scalar key) |
| Find cluster in m_clusters containing some value. | |
| void | computeClusterSize () |
| Compute m_clusterSize and m_eivalToCluster using m_clusters. | |
| void | computeBlockStart () |
| Compute m_blockStart using m_clusterSize. | |
| void | constructPermutation () |
| Compute m_permutation using m_eivalToCluster and m_blockStart. | |
| void | permuteSchur () |
| Permute Schur decomposition in m_U and m_T according to m_permutation. | |
| void | swapEntriesInSchur (Index index) |
| Swap rows index and index+1 in Schur decomposition in m_U and m_T. | |
| void | computeBlockAtomic () |
| Compute block diagonal part of m_fT. | |
| Block< MatrixType > | block (MatrixType &A, Index i, Index j) |
| Return block of matrix according to blocking given by m_blockStart. | |
| void | computeOffDiagonal () |
| Compute part of m_fT above block diagonal. | |
| DynMatrixType | solveTriangularSylvester (const DynMatrixType &A, const DynMatrixType &B, const DynMatrixType &C) |
| Solve a triangular Sylvester equation AX + XB = C. | |
| MatrixFunction & | operator= (const MatrixFunction &) |
Static Private Member Functions | |
| static const RealScalar | separation () |
| Maximum distance allowed between eigenvalues to be considered "close". | |
Private Attributes | |
| internal::nested< MatrixType > ::type | m_A |
| Reference to argument of matrix function. | |
| StemFunction * | m_f |
| Stem function for matrix function under consideration. | |
| MatrixType | m_T |
| Triangular part of Schur decomposition. | |
| MatrixType | m_U |
| Unitary part of Schur decomposition. | |
| MatrixType | m_fT |
| Matrix function applied to m_T | |
| ListOfClusters | m_clusters |
| Partition of eigenvalues into clusters of ei'vals "close" to each other. | |
| DynamicIntVectorType | m_eivalToCluster |
| m_eivalToCluster[i] = j means i-th ei'val is in j-th cluster | |
| DynamicIntVectorType | m_clusterSize |
| Number of eigenvalues in each clusters. | |
| DynamicIntVectorType | m_blockStart |
| Row index at which block corresponding to i-th cluster starts. | |
| IntVectorType | m_permutation |
| Permutation which groups ei'vals in the same cluster together. | |
Static Private Attributes | |
| static const int | RowsAtCompileTime = Traits::RowsAtCompileTime |
| static const int | ColsAtCompileTime = Traits::ColsAtCompileTime |
| static const int | Options = MatrixType::Options |
typedef std::list<Scalar> Eigen::MatrixFunction< MatrixType, 1 >::Cluster [private] |
Definition at line 146 of file MatrixFunctions.
typedef Matrix<Index, Dynamic, 1> Eigen::MatrixFunction< MatrixType, 1 >::DynamicIntVectorType [private] |
Definition at line 145 of file MatrixFunctions.
typedef Matrix<Scalar, Dynamic, Dynamic, Options, RowsAtCompileTime, ColsAtCompileTime> Eigen::MatrixFunction< MatrixType, 1 >::DynMatrixType [private] |
Definition at line 148 of file MatrixFunctions.
typedef MatrixType::Index Eigen::MatrixFunction< MatrixType, 1 >::Index [private] |
Definition at line 137 of file MatrixFunctions.
typedef Matrix<Index, Traits::RowsAtCompileTime, 1> Eigen::MatrixFunction< MatrixType, 1 >::IntVectorType [private] |
Definition at line 144 of file MatrixFunctions.
typedef std::list<Cluster> Eigen::MatrixFunction< MatrixType, 1 >::ListOfClusters [private] |
Definition at line 147 of file MatrixFunctions.
typedef NumTraits<Scalar>::Real Eigen::MatrixFunction< MatrixType, 1 >::RealScalar [private] |
Definition at line 141 of file MatrixFunctions.
typedef MatrixType::Scalar Eigen::MatrixFunction< MatrixType, 1 >::Scalar [private] |
Definition at line 136 of file MatrixFunctions.
typedef internal::stem_function<Scalar>::type Eigen::MatrixFunction< MatrixType, 1 >::StemFunction [private] |
Definition at line 142 of file MatrixFunctions.
typedef internal::traits<MatrixType> Eigen::MatrixFunction< MatrixType, 1 >::Traits [private] |
Definition at line 135 of file MatrixFunctions.
typedef Matrix<Scalar, Traits::RowsAtCompileTime, 1> Eigen::MatrixFunction< MatrixType, 1 >::VectorType [private] |
Definition at line 143 of file MatrixFunctions.
| Eigen::MatrixFunction< MatrixType, 1 >::MatrixFunction | ( | const MatrixType & | A, |
| StemFunction | f | ||
| ) |
Constructor.
| [in] | A | argument of matrix function, should be a square matrix. |
| [in] | f | an entire function; f(x,n) should compute the n-th derivative of f at x. |
Definition at line 198 of file MatrixFunctions.
| Block< MatrixType > Eigen::MatrixFunction< MatrixType, 1 >::block | ( | MatrixType & | A, |
| Index | i, | ||
| Index | j | ||
| ) | [private] |
Return block of matrix according to blocking given by m_blockStart.
Definition at line 388 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::compute | ( | ResultType & | result | ) |
Compute the matrix function.
| [out] | result | the function f applied to A, as specified in the constructor. |
Definition at line 211 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::computeBlockAtomic | ( | ) | [private] |
Compute block diagonal part of m_fT.
This routine computes the matrix function m_f applied to the block diagonal part of m_T, with the blocking given by m_blockStart. The result is stored in m_fT. The off-diagonal parts of m_fT are set to zero.
Definition at line 376 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::computeBlockStart | ( | ) | [private] |
Compute m_blockStart using m_clusterSize.
Definition at line 317 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::computeClusterSize | ( | ) | [private] |
Compute m_clusterSize and m_eivalToCluster using m_clusters.
Definition at line 295 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::computeOffDiagonal | ( | ) | [private] |
Compute part of m_fT above block diagonal.
This routine assumes that the block diagonal part of m_fT (which equals m_f applied to m_T) has already been computed and computes the part above the block diagonal. The part below the diagonal is zero, because m_T is upper triangular.
Definition at line 401 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::computeSchurDecomposition | ( | ) | [private] |
Store the Schur decomposition of m_A in m_T and m_U.
Definition at line 226 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::constructPermutation | ( | ) | [private] |
Compute m_permutation using m_eivalToCluster and m_blockStart.
Definition at line 328 of file MatrixFunctions.
| MatrixFunction< MatrixType, 1 >::ListOfClusters::iterator Eigen::MatrixFunction< MatrixType, 1 >::findCluster | ( | Scalar | key | ) | [private] |
Find cluster in m_clusters containing some value.
| [in] | key | Value to find |
key, or m_clusters.end() if no cluster in m_clusters contains key. Definition at line 282 of file MatrixFunctions.
| MatrixFunction& Eigen::MatrixFunction< MatrixType, 1 >::operator= | ( | const MatrixFunction< MatrixType, 1 > & | ) | [private] |
| void Eigen::MatrixFunction< MatrixType, 1 >::partitionEigenvalues | ( | ) | [private] |
Partition eigenvalues in clusters of ei'vals close to each other.
This function computes m_clusters. This is a partition of the eigenvalues of m_T in clusters, such that # Any eigenvalue in a certain cluster is at most separation() away from another eigenvalue in the same cluster. # The distance between two eigenvalues in different clusters is more than separation(). The implementation follows Algorithm 4.1 in the paper of Davies and Higham.
Definition at line 245 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::permuteSchur | ( | ) | [private] |
Permute Schur decomposition in m_U and m_T according to m_permutation.
Definition at line 341 of file MatrixFunctions.
| static const RealScalar Eigen::MatrixFunction< MatrixType, 1 >::separation | ( | ) | [inline, static, private] |
Maximum distance allowed between eigenvalues to be considered "close".
This is morally a static const Scalar, but only integers can be static constant class members in C++. The separation constant is set to 0.1, a value taken from the paper by Davies and Higham.
Definition at line 187 of file MatrixFunctions.
| MatrixFunction< MatrixType, 1 >::DynMatrixType Eigen::MatrixFunction< MatrixType, 1 >::solveTriangularSylvester | ( | const DynMatrixType & | A, |
| const DynMatrixType & | B, | ||
| const DynMatrixType & | C | ||
| ) | [private] |
Solve a triangular Sylvester equation AX + XB = C.
| [in] | A | the matrix A; should be square and upper triangular |
| [in] | B | the matrix B; should be square and upper triangular |
| [in] | C | the matrix C; should have correct size. |
If A is m-by-m and B is n-by-n, then both C and X are m-by-n. The (i,j)-th component of the Sylvester equation is
This can be re-arranged to yield:
It is assumed that A and B are such that the numerator is never zero (otherwise the Sylvester equation does not have a unique solution). In that case, these equations can be evaluated in the order
and
.
Definition at line 443 of file MatrixFunctions.
| void Eigen::MatrixFunction< MatrixType, 1 >::swapEntriesInSchur | ( | Index | index | ) | [private] |
Swap rows index and index+1 in Schur decomposition in m_U and m_T.
Definition at line 359 of file MatrixFunctions.
const int Eigen::MatrixFunction< MatrixType, 1 >::ColsAtCompileTime = Traits::ColsAtCompileTime [static, private] |
Definition at line 139 of file MatrixFunctions.
internal::nested<MatrixType>::type Eigen::MatrixFunction< MatrixType, 1 >::m_A [private] |
Reference to argument of matrix function.
Definition at line 170 of file MatrixFunctions.
DynamicIntVectorType Eigen::MatrixFunction< MatrixType, 1 >::m_blockStart [private] |
Row index at which block corresponding to i-th cluster starts.
Definition at line 178 of file MatrixFunctions.
ListOfClusters Eigen::MatrixFunction< MatrixType, 1 >::m_clusters [private] |
Partition of eigenvalues into clusters of ei'vals "close" to each other.
Definition at line 175 of file MatrixFunctions.
DynamicIntVectorType Eigen::MatrixFunction< MatrixType, 1 >::m_clusterSize [private] |
Number of eigenvalues in each clusters.
Definition at line 177 of file MatrixFunctions.
DynamicIntVectorType Eigen::MatrixFunction< MatrixType, 1 >::m_eivalToCluster [private] |
m_eivalToCluster[i] = j means i-th ei'val is in j-th cluster
Definition at line 176 of file MatrixFunctions.
StemFunction* Eigen::MatrixFunction< MatrixType, 1 >::m_f [private] |
Stem function for matrix function under consideration.
Definition at line 171 of file MatrixFunctions.
MatrixType Eigen::MatrixFunction< MatrixType, 1 >::m_fT [private] |
Matrix function applied to m_T
Definition at line 174 of file MatrixFunctions.
IntVectorType Eigen::MatrixFunction< MatrixType, 1 >::m_permutation [private] |
Permutation which groups ei'vals in the same cluster together.
Definition at line 179 of file MatrixFunctions.
MatrixType Eigen::MatrixFunction< MatrixType, 1 >::m_T [private] |
Triangular part of Schur decomposition.
Definition at line 172 of file MatrixFunctions.
MatrixType Eigen::MatrixFunction< MatrixType, 1 >::m_U [private] |
Unitary part of Schur decomposition.
Definition at line 173 of file MatrixFunctions.
const int Eigen::MatrixFunction< MatrixType, 1 >::Options = MatrixType::Options [static, private] |
Definition at line 140 of file MatrixFunctions.
const int Eigen::MatrixFunction< MatrixType, 1 >::RowsAtCompileTime = Traits::RowsAtCompileTime [static, private] |
Definition at line 138 of file MatrixFunctions.
| Page generated by Doxygen 1.7.4 for MRPT 0.9.5 SVN:2717 at Sun Oct 16 16:08:03 PDT 2011 | Hosted on: |