#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 |
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).
jama_eig.h の 72 行で定義されています。
| JAMA::Eigenvalue< Real >::Eigenvalue | ( | const TNT::Array2D< Real > & | A | ) | [inline] |
Check for symmetry, then construct the eigenvalue decomposition
| A | Square real (non-complex) matrix |
jama_eig.h の 903 行で定義されています。
参照先 JAMA::Eigenvalue< Real >::d, TNT::Array2D< T >::dim2(), JAMA::Eigenvalue< Real >::e, JAMA::Eigenvalue< Real >::H, JAMA::Eigenvalue< Real >::hqr2(), JAMA::Eigenvalue< Real >::issymmetric, JAMA::Eigenvalue< Real >::n, JAMA::Eigenvalue< Real >::ort, JAMA::Eigenvalue< Real >::orthes(), JAMA::Eigenvalue< Real >::tql2(), JAMA::Eigenvalue< Real >::tred2(), と JAMA::Eigenvalue< Real >::V.
| void JAMA::Eigenvalue< Real >::cdiv | ( | Real | xr, | |
| Real | xi, | |||
| Real | yr, | |||
| Real | yi | |||
| ) | [inline, private] |
| 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.h の 1010 行で定義されています。
参照先 JAMA::Eigenvalue< Real >::d, JAMA::Eigenvalue< Real >::e, と JAMA::Eigenvalue< Real >::n.
| 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.h の 971 行で定義されています。
| void JAMA::Eigenvalue< Real >::getRealEigenvalues | ( | TNT::Array1D< Real > & | d_ | ) | [inline] |
| void JAMA::Eigenvalue< Real >::getV | ( | TNT::Array2D< Real > & | V_ | ) | [inline] |
| void JAMA::Eigenvalue< Real >::hqr2 | ( | ) | [inline, private] |
| void JAMA::Eigenvalue< Real >::orthes | ( | ) | [inline, private] |
| void JAMA::Eigenvalue< Real >::tql2 | ( | ) | [inline, private] |
| void JAMA::Eigenvalue< Real >::tred2 | ( | ) | [inline, private] |
Real JAMA::Eigenvalue< Real >::cdivi [private] |
jama_eig.h の 437 行で定義されています。
参照元 JAMA::Eigenvalue< Real >::cdiv(), と JAMA::Eigenvalue< Real >::hqr2().
Real JAMA::Eigenvalue< Real >::cdivr [private] |
jama_eig.h の 437 行で定義されています。
参照元 JAMA::Eigenvalue< Real >::cdiv(), と JAMA::Eigenvalue< Real >::hqr2().
TNT::Array1D<Real> JAMA::Eigenvalue< Real >::d [private] |
Arrays for internal storage of eigenvalues.
jama_eig.h の 83 行で定義されています。
参照元 JAMA::Eigenvalue< Real >::cdiv(), JAMA::Eigenvalue< Real >::Eigenvalue(), JAMA::Eigenvalue< Real >::getD(), JAMA::Eigenvalue< Real >::getRealEigenvalues(), JAMA::Eigenvalue< Real >::hqr2(), JAMA::Eigenvalue< Real >::tql2(), と JAMA::Eigenvalue< Real >::tred2().
TNT::Array1D<Real> JAMA::Eigenvalue< Real >::e [private] |
TNT::Array2D<Real> JAMA::Eigenvalue< Real >::H [private] |
Array for internal storage of nonsymmetric Hessenberg form. internal storage of nonsymmetric Hessenberg form.
jama_eig.h の 92 行で定義されています。
参照元 JAMA::Eigenvalue< Real >::Eigenvalue(), JAMA::Eigenvalue< Real >::hqr2(), と JAMA::Eigenvalue< Real >::orthes().
int JAMA::Eigenvalue< Real >::issymmetric [private] |
int JAMA::Eigenvalue< Real >::n [private] |
Row and column dimension (square matrix).
jama_eig.h の 77 行で定義されています。
参照元 JAMA::Eigenvalue< Real >::Eigenvalue(), JAMA::Eigenvalue< Real >::getD(), JAMA::Eigenvalue< Real >::hqr2(), JAMA::Eigenvalue< Real >::orthes(), JAMA::Eigenvalue< Real >::tql2(), と JAMA::Eigenvalue< Real >::tred2().
TNT::Array1D<Real> JAMA::Eigenvalue< Real >::ort [private] |
Working storage for nonsymmetric algorithm. working storage for nonsymmetric algorithm.
jama_eig.h の 98 行で定義されています。
参照元 JAMA::Eigenvalue< Real >::Eigenvalue(), と JAMA::Eigenvalue< Real >::orthes().
TNT::Array2D<Real> JAMA::Eigenvalue< Real >::V [private] |
Array for internal storage of eigenvectors.
jama_eig.h の 87 行で定義されています。
参照元 JAMA::Eigenvalue< Real >::Eigenvalue(), JAMA::Eigenvalue< Real >::getV(), JAMA::Eigenvalue< Real >::hqr2(), JAMA::Eigenvalue< Real >::orthes(), JAMA::Eigenvalue< Real >::tql2(), と JAMA::Eigenvalue< Real >::tred2().
1.5.7.1