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

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

#include <vpdt_eigen_sym_matrix.h>

List of all members.

Public Types

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

Public Member Functions

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

Private Member Functions

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

Private Attributes

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

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 37 of file vpdt_eigen_sym_matrix.h.


Member Typedef Documentation

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 43 of file vpdt_eigen_sym_matrix.h.

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 41 of file vpdt_eigen_sym_matrix.h.


Constructor & Destructor Documentation

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 48 of file vpdt_eigen_sym_matrix.h.

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 57 of file vpdt_eigen_sym_matrix.h.

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 64 of file vpdt_eigen_sym_matrix.h.


Member Function Documentation

template<class T, unsigned int n = 0>
bool vpdt_eigen_sym_matrix< T, n >::are_evec_orthonormal ( ) const [inline, private]

return true if the eigenvectors are (approximately) orthonormal.

Definition at line 245 of file vpdt_eigen_sym_matrix.h.

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

compute the determinant.

Definition at line 229 of file vpdt_eigen_sym_matrix.h.

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

Return the dimension.

Definition at line 70 of file vpdt_eigen_sym_matrix.h.

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 76 of file vpdt_eigen_sym_matrix.h.

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 73 of file vpdt_eigen_sym_matrix.h.

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 138 of file vpdt_eigen_sym_matrix.h.

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 117 of file vpdt_eigen_sym_matrix.h.

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 179 of file vpdt_eigen_sym_matrix.h.

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 212 of file vpdt_eigen_sym_matrix.h.

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 107 of file vpdt_eigen_sym_matrix.h.

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 161 of file vpdt_eigen_sym_matrix.h.

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 197 of file vpdt_eigen_sym_matrix.h.

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 86 of file vpdt_eigen_sym_matrix.h.

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 79 of file vpdt_eigen_sym_matrix.h.

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 98 of file vpdt_eigen_sym_matrix.h.

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 89 of file vpdt_eigen_sym_matrix.h.


Member Data Documentation

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

the vector of eigenvalues.

Definition at line 242 of file vpdt_eigen_sym_matrix.h.

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

the matrix of eigenvectors.

Definition at line 240 of file vpdt_eigen_sym_matrix.h.


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