Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
vpdt_eigen_sym_matrix< T, n > Class Template Reference

A symmetric matrix represented in eigenvalue decomposition. More...

#include <vpdt_eigen_sym_matrix.h>

Public Types

typedef vpdt_field_default< T, n >::type vector
 the data type used for vectors. More...
 
typedef vpdt_field_traits< vector >::matrix_type matrix
 the data type used for matrices. More...
 

Public Member Functions

 vpdt_eigen_sym_matrix (unsigned int var_dim=n)
 Constructor. More...
 
 vpdt_eigen_sym_matrix (const matrix &evec, const vector &eval)
 Constructor - from eigenvectors and eigenvalues. More...
 
 vpdt_eigen_sym_matrix (const matrix &m)
 Constructor - from symmetric matrix. More...
 
unsigned int dimension () const
 Return the dimension. More...
 
const matrix & eigenvectors () const
 Access to the eigenvectors. More...
 
const vector & eigenvalues () const
 Access to the eigenvalues. More...
 
void set_eigenvectors (const matrix &m)
 Set the eigenvectors. More...
 
void set_eigenvalues (const vector &v)
 set the eigenvalues. More...
 
void set_size (unsigned int dim)
 Set the size (if variable) and reset to default. More...
 
void set_matrix (const matrix &m)
 set the eigenvectors and eigen values by decomposing m. More...
 
vpdt_eigen_sym_matrix< T, n > & operator *= (const T &val)
 multiply the matrix by a scalar. More...
 
void form_matrix (matrix &m) const
 Reform the matrix. More...
 
void form_inverse (matrix &m) const
 compute the matrix inverse. More...
 
void product (const vector &x, vector &y) const
 evaluate y = M * x. More...
 
void inverse_product (const vector &x, vector &y) const
 evaluate y = M^-1 * x. More...
 
T quad_form (const vector &x) const
 evaluate the Quadratic form x^t * M * x. More...
 
T inverse_quad_form (const vector &x) const
 evaluate the inverse Quadratic form x^t * M^-1 * x. More...
 
T determinant () const
 compute the determinant. More...
 

Private Member Functions

bool are_evec_orthonormal () const
 return true if the eigenvectors are (approximately) orthonormal. More...
 

Private Attributes

matrix eigen_vec_
 the matrix of eigenvectors. More...
 
vector eigen_val_
 the vector of eigenvalues. More...
 

Detailed Description

template<class T, unsigned int n = 0>
class vpdt_eigen_sym_matrix< T, n >

A symmetric matrix represented in eigenvalue decomposition.

Definition at line 40 of file vpdt_eigen_sym_matrix.h.

Member Typedef Documentation

◆ matrix

template<class T, unsigned int n = 0>
typedef vpdt_field_traits<vector>::matrix_type vpdt_eigen_sym_matrix< T, n >::matrix

the data type used for matrices.

Definition at line 46 of file vpdt_eigen_sym_matrix.h.

◆ vector

template<class T, unsigned int n = 0>
typedef vpdt_field_default<T,n>::type vpdt_eigen_sym_matrix< T, n >::vector

the data type used for vectors.

Definition at line 44 of file vpdt_eigen_sym_matrix.h.

Constructor & Destructor Documentation

◆ vpdt_eigen_sym_matrix() [1/3]

template<class T, unsigned int n = 0>
vpdt_eigen_sym_matrix< T, n >::vpdt_eigen_sym_matrix ( unsigned int  var_dim = n)
inline

Constructor.

Optionally initialize the dimension for when n==0. Otherwise var_dim is ignored

Definition at line 51 of file vpdt_eigen_sym_matrix.h.

◆ vpdt_eigen_sym_matrix() [2/3]

template<class T, unsigned int n = 0>
vpdt_eigen_sym_matrix< T, n >::vpdt_eigen_sym_matrix ( const matrix &  evec,
const vector &  eval 
)
inline

Constructor - from eigenvectors and eigenvalues.

Definition at line 60 of file vpdt_eigen_sym_matrix.h.

◆ vpdt_eigen_sym_matrix() [3/3]

template<class T, unsigned int n = 0>
vpdt_eigen_sym_matrix< T, n >::vpdt_eigen_sym_matrix ( const matrix &  m)
inline

Constructor - from symmetric matrix.

Definition at line 67 of file vpdt_eigen_sym_matrix.h.

Member Function Documentation

◆ are_evec_orthonormal()

template<class T, unsigned int n = 0>
bool vpdt_eigen_sym_matrix< T, n >::are_evec_orthonormal ( ) const
inlineprivate

return true if the eigenvectors are (approximately) orthonormal.

Definition at line 248 of file vpdt_eigen_sym_matrix.h.

◆ determinant()

template<class T, unsigned int n = 0>
T vpdt_eigen_sym_matrix< T, n >::determinant ( ) const
inline

compute the determinant.

Definition at line 232 of file vpdt_eigen_sym_matrix.h.

◆ dimension()

template<class T, unsigned int n = 0>
unsigned int vpdt_eigen_sym_matrix< T, n >::dimension ( ) const
inline

Return the dimension.

Definition at line 73 of file vpdt_eigen_sym_matrix.h.

◆ eigenvalues()

template<class T, unsigned int n = 0>
const vector& vpdt_eigen_sym_matrix< T, n >::eigenvalues ( ) const
inline

Access to the eigenvalues.

Definition at line 79 of file vpdt_eigen_sym_matrix.h.

◆ eigenvectors()

template<class T, unsigned int n = 0>
const matrix& vpdt_eigen_sym_matrix< T, n >::eigenvectors ( ) const
inline

Access to the eigenvectors.

Definition at line 76 of file vpdt_eigen_sym_matrix.h.

◆ form_inverse()

template<class T, unsigned int n = 0>
void vpdt_eigen_sym_matrix< T, n >::form_inverse ( matrix &  m) const
inline

compute the matrix inverse.

m = eigen_vec_ * inverse(diag(eigen_val_)) * eigen_vec_.transpose()

Definition at line 141 of file vpdt_eigen_sym_matrix.h.

◆ form_matrix()

template<class T, unsigned int n = 0>
void vpdt_eigen_sym_matrix< T, n >::form_matrix ( matrix &  m) const
inline

Reform the matrix.

m = eigen_vec_ * diag(eigen_val_) * eigen_vec_.transpose()

Definition at line 120 of file vpdt_eigen_sym_matrix.h.

◆ inverse_product()

template<class T, unsigned int n = 0>
void vpdt_eigen_sym_matrix< T, n >::inverse_product ( const vector &  x,
vector &  y 
) const
inline

evaluate y = M^-1 * x.

Definition at line 182 of file vpdt_eigen_sym_matrix.h.

◆ inverse_quad_form()

template<class T, unsigned int n = 0>
T vpdt_eigen_sym_matrix< T, n >::inverse_quad_form ( const vector &  x) const
inline

evaluate the inverse Quadratic form x^t * M^-1 * x.

Definition at line 215 of file vpdt_eigen_sym_matrix.h.

◆ operator *=()

template<class T, unsigned int n = 0>
vpdt_eigen_sym_matrix<T,n>& vpdt_eigen_sym_matrix< T, n >::operator *= ( const T &  val)
inline

multiply the matrix by a scalar.

Definition at line 110 of file vpdt_eigen_sym_matrix.h.

◆ product()

template<class T, unsigned int n = 0>
void vpdt_eigen_sym_matrix< T, n >::product ( const vector &  x,
vector &  y 
) const
inline

evaluate y = M * x.

Definition at line 164 of file vpdt_eigen_sym_matrix.h.

◆ quad_form()

template<class T, unsigned int n = 0>
T vpdt_eigen_sym_matrix< T, n >::quad_form ( const vector &  x) const
inline

evaluate the Quadratic form x^t * M * x.

Definition at line 200 of file vpdt_eigen_sym_matrix.h.

◆ set_eigenvalues()

template<class T, unsigned int n = 0>
void vpdt_eigen_sym_matrix< T, n >::set_eigenvalues ( const vector &  v)
inline

set the eigenvalues.

Definition at line 89 of file vpdt_eigen_sym_matrix.h.

◆ set_eigenvectors()

template<class T, unsigned int n = 0>
void vpdt_eigen_sym_matrix< T, n >::set_eigenvectors ( const matrix &  m)
inline

Set the eigenvectors.

Definition at line 82 of file vpdt_eigen_sym_matrix.h.

◆ set_matrix()

template<class T, unsigned int n = 0>
void vpdt_eigen_sym_matrix< T, n >::set_matrix ( const matrix &  m)
inline

set the eigenvectors and eigen values by decomposing m.

Definition at line 101 of file vpdt_eigen_sym_matrix.h.

◆ set_size()

template<class T, unsigned int n = 0>
void vpdt_eigen_sym_matrix< T, n >::set_size ( unsigned int  dim)
inline

Set the size (if variable) and reset to default.

Definition at line 92 of file vpdt_eigen_sym_matrix.h.

Member Data Documentation

◆ eigen_val_

template<class T, unsigned int n = 0>
vector vpdt_eigen_sym_matrix< T, n >::eigen_val_
private

the vector of eigenvalues.

Definition at line 245 of file vpdt_eigen_sym_matrix.h.

◆ eigen_vec_

template<class T, unsigned int n = 0>
matrix vpdt_eigen_sym_matrix< T, n >::eigen_vec_
private

the matrix of eigenvectors.

Definition at line 243 of file vpdt_eigen_sym_matrix.h.


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