Class for computing the matrix exponential. More...
#include <MatrixExponential.h>
Public Member Functions | |
template<typename ResultType > | |
void | compute (ResultType &result) |
Computes the matrix exponential. | |
MatrixExponential (const MatrixType &M) | |
Constructor. | |
Private Types | |
typedef std::complex< RealScalar > | ComplexScalar |
typedef NumTraits< Scalar >::Real | RealScalar |
typedef internal::traits < MatrixType >::Scalar | Scalar |
Private Member Functions | |
void | computeUV (double) |
Compute Padé approximant to the exponential. | |
void | computeUV (float) |
Compute Padé approximant to the exponential. | |
void | computeUV (long double) |
Compute Padé approximant to the exponential. | |
MatrixExponential (const MatrixExponential &) | |
MatrixExponential & | operator= (const MatrixExponential &) |
void | pade13 (const MatrixType &A) |
Compute the (13,13)-Padé approximant to the exponential. | |
void | pade17 (const MatrixType &A) |
Compute the (17,17)-Padé approximant to the exponential. | |
void | pade3 (const MatrixType &A) |
Compute the (3,3)-Padé approximant to the exponential. | |
void | pade5 (const MatrixType &A) |
Compute the (5,5)-Padé approximant to the exponential. | |
void | pade7 (const MatrixType &A) |
Compute the (7,7)-Padé approximant to the exponential. | |
void | pade9 (const MatrixType &A) |
Compute the (9,9)-Padé approximant to the exponential. | |
Private Attributes | |
MatrixType | m_Id |
Identity matrix of the same size as m_M . | |
RealScalar | m_l1norm |
L1 norm of m_M. | |
internal::nested< MatrixType > ::type | m_M |
Reference to matrix whose exponential is to be computed. | |
int | m_squarings |
Number of squarings required in the last step. | |
MatrixType | m_tmp1 |
Used for temporary storage. | |
MatrixType | m_tmp2 |
Used for temporary storage. | |
MatrixType | m_U |
Odd-degree terms in numerator of Padé approximant. | |
MatrixType | m_V |
Even-degree terms in numerator of Padé approximant. |
Class for computing the matrix exponential.
MatrixType | type of the argument of the exponential, expected to be an instantiation of the Matrix class template. |
Definition at line 29 of file MatrixExponential.h.
typedef std::complex<RealScalar> Eigen::MatrixExponential< MatrixType >::ComplexScalar [private] |
Definition at line 140 of file MatrixExponential.h.
typedef NumTraits<Scalar>::Real Eigen::MatrixExponential< MatrixType >::RealScalar [private] |
Definition at line 139 of file MatrixExponential.h.
typedef internal::traits<MatrixType>::Scalar Eigen::MatrixExponential< MatrixType >::Scalar [private] |
Definition at line 138 of file MatrixExponential.h.
Eigen::MatrixExponential< MatrixType >::MatrixExponential | ( | const MatrixType & | M | ) |
Constructor.
The class stores a reference to M
, so it should not be changed (or destroyed) before compute() is called.
[in] | M | matrix whose exponential is to be computed. |
Definition at line 168 of file MatrixExponential.h.
Eigen::MatrixExponential< MatrixType >::MatrixExponential | ( | const MatrixExponential< MatrixType > & | ) | [private] |
void Eigen::MatrixExponential< MatrixType >::compute | ( | ResultType & | result | ) |
Computes the matrix exponential.
[out] | result | the matrix exponential of M in the constructor. |
Definition at line 183 of file MatrixExponential.h.
void Eigen::MatrixExponential< MatrixType >::computeUV | ( | double | ) | [private] |
Compute Padé approximant to the exponential.
Computes m_U
, m_V
and m_squarings
such that is a Padé of around . The degree of the Padé approximant and the value of squarings are chosen such that the approximation error is no more than the round-off error.
The argument of this function should correspond with the (real part of) the entries of m_M
. It is used to select the correct implementation using overloading.
Definition at line 307 of file MatrixExponential.h.
void Eigen::MatrixExponential< MatrixType >::computeUV | ( | float | ) | [private] |
Compute Padé approximant to the exponential.
Definition at line 289 of file MatrixExponential.h.
void Eigen::MatrixExponential< MatrixType >::computeUV | ( | long | double | ) | [private] |
Compute Padé approximant to the exponential.
Definition at line 329 of file MatrixExponential.h.
MatrixExponential& Eigen::MatrixExponential< MatrixType >::operator= | ( | const MatrixExponential< MatrixType > & | ) | [private] |
EIGEN_STRONG_INLINE void Eigen::MatrixExponential< MatrixType >::pade13 | ( | const MatrixType & | A | ) | [private] |
Compute the (13,13)-Padé approximant to the exponential.
After exit, is the Padé approximant of around .
[in] | A | Argument of matrix exponential |
Definition at line 247 of file MatrixExponential.h.
void Eigen::MatrixExponential< MatrixType >::pade17 | ( | const MatrixType & | A | ) | [private] |
Compute the (17,17)-Padé approximant to the exponential.
After exit, is the Padé approximant of around .
This function activates only if your long double is double-double or quadruple.
[in] | A | Argument of matrix exponential |
EIGEN_STRONG_INLINE void Eigen::MatrixExponential< MatrixType >::pade3 | ( | const MatrixType & | A | ) | [private] |
Compute the (3,3)-Padé approximant to the exponential.
After exit, is the Padé approximant of around .
[in] | A | Argument of matrix exponential |
Definition at line 200 of file MatrixExponential.h.
EIGEN_STRONG_INLINE void Eigen::MatrixExponential< MatrixType >::pade5 | ( | const MatrixType & | A | ) | [private] |
Compute the (5,5)-Padé approximant to the exponential.
After exit, is the Padé approximant of around .
[in] | A | Argument of matrix exponential |
Definition at line 210 of file MatrixExponential.h.
EIGEN_STRONG_INLINE void Eigen::MatrixExponential< MatrixType >::pade7 | ( | const MatrixType & | A | ) | [private] |
Compute the (7,7)-Padé approximant to the exponential.
After exit, is the Padé approximant of around .
[in] | A | Argument of matrix exponential |
Definition at line 221 of file MatrixExponential.h.
EIGEN_STRONG_INLINE void Eigen::MatrixExponential< MatrixType >::pade9 | ( | const MatrixType & | A | ) | [private] |
Compute the (9,9)-Padé approximant to the exponential.
After exit, is the Padé approximant of around .
[in] | A | Argument of matrix exponential |
Definition at line 233 of file MatrixExponential.h.
MatrixType Eigen::MatrixExponential< MatrixType >::m_Id [private] |
Identity matrix of the same size as m_M
.
Definition at line 158 of file MatrixExponential.h.
RealScalar Eigen::MatrixExponential< MatrixType >::m_l1norm [private] |
L1 norm of m_M.
Definition at line 164 of file MatrixExponential.h.
internal::nested<MatrixType>::type Eigen::MatrixExponential< MatrixType >::m_M [private] |
Reference to matrix whose exponential is to be computed.
Definition at line 143 of file MatrixExponential.h.
int Eigen::MatrixExponential< MatrixType >::m_squarings [private] |
Number of squarings required in the last step.
Definition at line 161 of file MatrixExponential.h.
MatrixType Eigen::MatrixExponential< MatrixType >::m_tmp1 [private] |
Used for temporary storage.
Definition at line 152 of file MatrixExponential.h.
MatrixType Eigen::MatrixExponential< MatrixType >::m_tmp2 [private] |
Used for temporary storage.
Definition at line 155 of file MatrixExponential.h.
MatrixType Eigen::MatrixExponential< MatrixType >::m_U [private] |
Odd-degree terms in numerator of Padé approximant.
Definition at line 146 of file MatrixExponential.h.
MatrixType Eigen::MatrixExponential< MatrixType >::m_V [private] |
Even-degree terms in numerator of Padé approximant.
Definition at line 149 of file MatrixExponential.h.