TemplateJAMA::Eigenvalue class Reference

Main Page Namespace List Compound List File List Compound Members

# JAMA::Eigenvalue Class Template Reference

`#include <jama_eig.h>`

List of all members.

## Public Methods
| Eigenvalue (const TNT::Array2D< Real > &A)
void | getV (TNT::Array2D< Real > &V_)
void | getRealEigenvalues (TNT::Array1D< Real > &d_)
void | getImagEigenvalues (TNT::Array1D< Real > &e_)
void | getD (TNT::Array2D< Real > &D)

## Detailed Description

### template<class Real> class JAMA::Eigenvalue

Computes eigenvalues and eigenvectors of a real (non-complex) matrix.

If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. That is, the diagonal values of D are the eigenvalues, and V*V' = I, where I is the identity matrix. The columns of V represent the eigenvectors in the sense that A*V = V*D.

If A is not symmetric, then the eigenvalue matrix D is block diagonal with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, a + i*b, in 2-by-2 blocks, [a, b; -b, a]. That is, if the complex eigenvalues look like

              u + iv     .        .          .      .    .
                .      u - iv     .          .      .    .
                .        .      a + ib       .      .    .
                .        .        .        a - ib   .    .
                .        .        .          .      x    .
                .        .        .          .      .    y

then D looks like

                u        v        .          .      .    .
               -v        u        .          .      .    .
                .        .        a          b      .    .
                .        .       -b          a      .    .
                .        .        .          .      x    .
                .        .        .          .      .    y

This keeps V a real matrix in both symmetric and non-symmetric cases, and A*V = V*D.

The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*inverse(V) depends upon the condition number of V.

(Adapted from JAMA, a Java Matrix Library, developed by jointly by the Mathworks and NIST; see http://math.nist.gov/javanumerics/jama).

## Constructor & Destructor Documentation

template<class Real>
JAMA::Eigenvalue<Real>::Eigenvalue<Real> ( | const TNT::Array2D< Real > & A )`[inline]`

  | Check for symmetry, then construct the eigenvalue decomposition Parameters:
  A | Square real (non-complex) matrix

## Member Function Documentation

template<class Real>
void JAMA::Eigenvalue<Real>::getD ( | TNT::Array2D< Real > & D )`[inline]`

| Computes the block diagonal eigenvalue matrix. If the original matrix A is not symmetric, then the eigenvalue matrix D is block diagonal with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, a + i*b, in 2-by-2 blocks, [a, b; -b, a]. That is, if the complex eigenvalues look like
              u + iv     .        .          .      .    .
                .      u - iv     .          .      .    .
                .        .      a + ib       .      .    .
                .        .        .        a - ib   .    .
                .        .        .          .      x    .
                .        .        .          .      .    y
then D looks like
                u        v        .          .      .    .
               -v        u        .          .      .    .
                .        .        a          b      .    .
                .        .       -b          a      .    .
                .        .        .          .      x    .
                .        .        .          .      .    y
  This keeps V a real matrix in both symmetric and non-symmetric cases, and A*V = V*D. Parameters:
  D: | upon return, the matrix is filled with the block diagonal eigenvalue matrix.

template<class Real>
void JAMA::Eigenvalue<Real>::getImagEigenvalues ( | TNT::Array1D< Real > & e_ )`[inline]`

| Return the imaginary parts of the eigenvalues in parameter e_. arm e_: new matrix with imaginary parts of the eigenvalues.

template<class Real>
void JAMA::Eigenvalue<Real>::getRealEigenvalues ( | TNT::Array1D< Real > & d_ )`[inline]`

| Return the real parts of the eigenvalues Returns: real(diag(D))

template<class Real>
void JAMA::Eigenvalue<Real>::getV ( | TNT::Array2D< Real > & V_ )`[inline]`

| Return the eigenvector matrix Returns: V

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

- jama_eig.h