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 matrixeigenvectors () const
 Access to the eigenvectors. More...
 
const vectoreigenvalues () 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...
 
quad_form (const vector &x) const
 evaluate the Quadratic form x^t * M * x. More...
 
inverse_quad_form (const vector &x) const
 evaluate the inverse Quadratic form x^t * M^-1 * x. More...
 
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: