Public Member Functions | Private Types | Private Member Functions | Private Attributes
MatrixExponential< MatrixType > Class Template Reference

Class for computing the matrix exponential. More...

#include <MatrixExponential.h>

List of all members.

Public Member Functions

template<typename ResultType >
void compute (ResultType &result)
 Computes the matrix exponential.
 MatrixExponential (const MatrixType &M)
 Constructor.

Private Types

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.
 MatrixExponential (const MatrixExponential &)
MatrixExponentialoperator= (const MatrixExponential &)
void pade13 (const MatrixType &A)
 Compute the (13,13)-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.
float 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
 Even-degree terms in numerator of Padé approximant.
MatrixType m_V
 Odd-degree terms in numerator of Padé approximant.

Detailed Description

template<typename MatrixType>
class MatrixExponential< MatrixType >

Class for computing the matrix exponential.

Template Parameters:
MatrixTypetype of the argument of the exponential, expected to be an instantiation of the Matrix class template.

Definition at line 39 of file MatrixExponential.h.


Member Typedef Documentation

template<typename MatrixType>
typedef NumTraits<Scalar>::Real MatrixExponential< MatrixType >::RealScalar [private]

Definition at line 132 of file MatrixExponential.h.

template<typename MatrixType>
typedef internal::traits<MatrixType>::Scalar MatrixExponential< MatrixType >::Scalar [private]

Definition at line 131 of file MatrixExponential.h.


Constructor & Destructor Documentation

template<typename MatrixType >
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.

Parameters:
[in]Mmatrix whose exponential is to be computed.

Definition at line 160 of file MatrixExponential.h.

template<typename MatrixType>
MatrixExponential< MatrixType >::MatrixExponential ( const MatrixExponential< MatrixType > &  ) [private]

Member Function Documentation

template<typename MatrixType >
template<typename ResultType >
void MatrixExponential< MatrixType >::compute ( ResultType &  result)

Computes the matrix exponential.

Parameters:
[out]resultthe matrix exponential of M in the constructor.

Definition at line 175 of file MatrixExponential.h.

template<typename MatrixType >
void MatrixExponential< MatrixType >::computeUV ( double  ) [private]

Compute Padé approximant to the exponential.

Computes m_U, m_V and m_squarings such that $ (V+U)(V-U)^{-1} $ is a Padé of $ \exp(2^{-\mbox{squarings}}M) $ around $ M = 0 $. 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 266 of file MatrixExponential.h.

template<typename MatrixType >
void MatrixExponential< MatrixType >::computeUV ( float  ) [private]

Compute Padé approximant to the exponential.

See also:
computeUV(double);

Definition at line 251 of file MatrixExponential.h.

template<typename MatrixType>
MatrixExponential& MatrixExponential< MatrixType >::operator= ( const MatrixExponential< MatrixType > &  ) [private]
template<typename MatrixType >
EIGEN_STRONG_INLINE void MatrixExponential< MatrixType >::pade13 ( const MatrixType &  A) [private]

Compute the (13,13)-Padé approximant to the exponential.

After exit, $ (V+U)(V-U)^{-1} $ is the Padé approximant of $ \exp(A) $ around $ A = 0 $.

Parameters:
[in]AArgument of matrix exponential

Definition at line 233 of file MatrixExponential.h.

template<typename MatrixType >
EIGEN_STRONG_INLINE void MatrixExponential< MatrixType >::pade3 ( const MatrixType &  A) [private]

Compute the (3,3)-Padé approximant to the exponential.

After exit, $ (V+U)(V-U)^{-1} $ is the Padé approximant of $ \exp(A) $ around $ A = 0 $.

Parameters:
[in]AArgument of matrix exponential

Definition at line 186 of file MatrixExponential.h.

template<typename MatrixType >
EIGEN_STRONG_INLINE void MatrixExponential< MatrixType >::pade5 ( const MatrixType &  A) [private]

Compute the (5,5)-Padé approximant to the exponential.

After exit, $ (V+U)(V-U)^{-1} $ is the Padé approximant of $ \exp(A) $ around $ A = 0 $.

Parameters:
[in]AArgument of matrix exponential

Definition at line 196 of file MatrixExponential.h.

template<typename MatrixType >
EIGEN_STRONG_INLINE void MatrixExponential< MatrixType >::pade7 ( const MatrixType &  A) [private]

Compute the (7,7)-Padé approximant to the exponential.

After exit, $ (V+U)(V-U)^{-1} $ is the Padé approximant of $ \exp(A) $ around $ A = 0 $.

Parameters:
[in]AArgument of matrix exponential

Definition at line 207 of file MatrixExponential.h.

template<typename MatrixType >
EIGEN_STRONG_INLINE void MatrixExponential< MatrixType >::pade9 ( const MatrixType &  A) [private]

Compute the (9,9)-Padé approximant to the exponential.

After exit, $ (V+U)(V-U)^{-1} $ is the Padé approximant of $ \exp(A) $ around $ A = 0 $.

Parameters:
[in]AArgument of matrix exponential

Definition at line 219 of file MatrixExponential.h.


Member Data Documentation

template<typename MatrixType>
MatrixType MatrixExponential< MatrixType >::m_Id [private]

Identity matrix of the same size as m_M.

Definition at line 150 of file MatrixExponential.h.

template<typename MatrixType>
float MatrixExponential< MatrixType >::m_l1norm [private]

L1 norm of m_M.

Definition at line 156 of file MatrixExponential.h.

template<typename MatrixType>
internal::nested<MatrixType>::type MatrixExponential< MatrixType >::m_M [private]

Reference to matrix whose exponential is to be computed.

Definition at line 135 of file MatrixExponential.h.

template<typename MatrixType>
int MatrixExponential< MatrixType >::m_squarings [private]

Number of squarings required in the last step.

Definition at line 153 of file MatrixExponential.h.

template<typename MatrixType>
MatrixType MatrixExponential< MatrixType >::m_tmp1 [private]

Used for temporary storage.

Definition at line 144 of file MatrixExponential.h.

template<typename MatrixType>
MatrixType MatrixExponential< MatrixType >::m_tmp2 [private]

Used for temporary storage.

Definition at line 147 of file MatrixExponential.h.

template<typename MatrixType>
MatrixType MatrixExponential< MatrixType >::m_U [private]

Even-degree terms in numerator of Padé approximant.

Definition at line 138 of file MatrixExponential.h.

template<typename MatrixType>
MatrixType MatrixExponential< MatrixType >::m_V [private]

Odd-degree terms in numerator of Padé approximant.

Definition at line 141 of file MatrixExponential.h.


The documentation for this class was generated from the following file:


posest
Author(s): Kurt Konolige
autogenerated on Thu Jan 2 2014 12:12:17