クラス テンプレート JAMA::Eigenvalue< Real >

#include <jama_eig.h>

すべてのメンバ一覧

Public メソッド

 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)

Private メソッド

void tred2 ()
void tql2 ()
void orthes ()
void cdiv (Real xr, Real xi, Real yr, Real yi)
void hqr2 ()

Private 変数

int n
int issymmetric
TNT::Array1D< Real > d
TNT::Array1D< Real > e
TNT::Array2D< Real > V
TNT::Array2D< Real > H
TNT::Array1D< Real > ort
Real cdivr
Real cdivi


説明

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

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).

例:

eigenvalue.cpp, と pagerank.cpp.

jama_eig.h72 行で定義されています。


コンストラクタとデストラクタ

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


関数

template<class Real >
void JAMA::Eigenvalue< Real >::cdiv ( Real  xr,
Real  xi,
Real  yr,
Real  yi 
) [inline, private]

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.

引数:
D,: upon return, the matrix is filled with the block diagonal eigenvalue matrix.

jama_eig.h1010 行で定義されています。

参照先 JAMA::Eigenvalue< Real >::d, JAMA::Eigenvalue< Real >::e, と JAMA::Eigenvalue< Real >::n.

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

Return the imaginary parts of the eigenvalues in parameter e_.

引数:
e_,: new matrix with imaginary parts of the eigenvalues.

jama_eig.h971 行で定義されています。

参照先 JAMA::Eigenvalue< Real >::e.

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

Return the real parts of the eigenvalues

戻り値:
real(diag(D))

jama_eig.h961 行で定義されています。

参照先 JAMA::Eigenvalue< Real >::d.

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

Return the eigenvector matrix

戻り値:
V

jama_eig.h952 行で定義されています。

参照先 JAMA::Eigenvalue< Real >::V.

template<class Real >
void JAMA::Eigenvalue< Real >::hqr2 (  )  [inline, private]

template<class Real >
void JAMA::Eigenvalue< Real >::orthes (  )  [inline, private]

template<class Real >
void JAMA::Eigenvalue< Real >::tql2 (  )  [inline, private]

template<class Real >
void JAMA::Eigenvalue< Real >::tred2 (  )  [inline, private]


変数

template<class Real >
Real JAMA::Eigenvalue< Real >::cdivi [private]

jama_eig.h437 行で定義されています。

参照元 JAMA::Eigenvalue< Real >::cdiv(), と JAMA::Eigenvalue< Real >::hqr2().

template<class Real >
Real JAMA::Eigenvalue< Real >::cdivr [private]

jama_eig.h437 行で定義されています。

参照元 JAMA::Eigenvalue< Real >::cdiv(), と JAMA::Eigenvalue< Real >::hqr2().

template<class Real >
TNT::Array1D<Real> JAMA::Eigenvalue< Real >::d [private]

template<class Real >
TNT::Array1D<Real> JAMA::Eigenvalue< Real >::e [private]

template<class Real >
TNT::Array2D<Real> JAMA::Eigenvalue< Real >::H [private]

Array for internal storage of nonsymmetric Hessenberg form. internal storage of nonsymmetric Hessenberg form.

jama_eig.h92 行で定義されています。

参照元 JAMA::Eigenvalue< Real >::Eigenvalue(), JAMA::Eigenvalue< Real >::hqr2(), と JAMA::Eigenvalue< Real >::orthes().

template<class Real >
int JAMA::Eigenvalue< Real >::issymmetric [private]

jama_eig.h79 行で定義されています。

参照元 JAMA::Eigenvalue< Real >::Eigenvalue().

template<class Real >
int JAMA::Eigenvalue< Real >::n [private]

template<class Real >
TNT::Array1D<Real> JAMA::Eigenvalue< Real >::ort [private]

Working storage for nonsymmetric algorithm. working storage for nonsymmetric algorithm.

jama_eig.h98 行で定義されています。

参照元 JAMA::Eigenvalue< Real >::Eigenvalue(), と JAMA::Eigenvalue< Real >::orthes().

template<class Real >
TNT::Array2D<Real> JAMA::Eigenvalue< Real >::V [private]


このクラスの説明は次のファイルから生成されました:

TNTに対してThu Nov 13 00:45:18 2008に生成されました。  doxygen 1.5.7.1