E nvironment for Deve L oping K DD-Applications Supported by I ndex-Structures

## de.lmu.ifi.dbs.elki.math.linearalgebra Class EigenvalueDecomposition

```java.lang.Object
de.lmu.ifi.dbs.elki.math.linearalgebra.EigenvalueDecomposition
```
All Implemented Interfaces:
Serializable

`public class EigenvalueDecompositionextends Objectimplements Serializable`

Eigenvalues and eigenvectors of a real matrix.

If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. I.e. A = V.times(D.timesTranspose(V)) and V.timesTranspose(V) equals the identity matrix.

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, lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The columns of V represent the eigenvectors in the sense that A*V = V*D, i.e. A.times(V) equals V.times(D). The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*inverse(V) depends upon V.cond().

Serialized Form

Field Summary
`private  double` `cdivi`

`private  double` `cdivr`

`private  double[]` `d`
Arrays for internal storage of eigenvalues.
`private  double[]` `e`
Arrays for internal storage of eigenvalues.
`private  double[][]` `H`
Array for internal storage of nonsymmetric Hessenberg form.
`private  boolean` `issymmetric`
Symmetry flag.
`private  int` `n`
Row and column dimension (square matrix).
`private  double[]` `ort`
Working storage for nonsymmetric algorithm.
`private static long` `serialVersionUID`
Serial version
`private  double[][]` `V`
Array for internal storage of eigenvectors.

Constructor Summary
`EigenvalueDecomposition(Matrix Arg)`
Check for symmetry, then construct the eigenvalue decomposition

Method Summary
`private  void` ```cdiv(double xr, double xi, double yr, double yi)```

` Matrix` `getD()`
Return the block diagonal eigenvalue matrix
` double[]` `getImagEigenvalues()`
Return the imaginary parts of the eigenvalues
` double[]` `getRealEigenvalues()`
Return the real parts of the eigenvalues
` Matrix` `getV()`
Return the eigenvector matrix
`private  void` `hqr2()`

`private  void` `orthes()`

`private  void` `tql2()`

`private  void` `tred2()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### serialVersionUID

`private static final long serialVersionUID`
Serial version

Constant Field Values

### n

`private int n`
Row and column dimension (square matrix).

### issymmetric

`private boolean issymmetric`
Symmetry flag.

### d

`private double[] d`
Arrays for internal storage of eigenvalues.

### e

`private double[] e`
Arrays for internal storage of eigenvalues.

### V

`private double[][] V`
Array for internal storage of eigenvectors.

### H

`private double[][] H`
Array for internal storage of nonsymmetric Hessenberg form.

### ort

`private double[] ort`
Working storage for nonsymmetric algorithm.

### cdivr

`private transient double cdivr`

### cdivi

`private transient double cdivi`
Constructor Detail

### EigenvalueDecomposition

`public EigenvalueDecomposition(Matrix Arg)`
Check for symmetry, then construct the eigenvalue decomposition

Parameters:
`Arg` - Square matrix
Method Detail

### tred2

`private void tred2()`

### tql2

`private void tql2()`

### orthes

`private void orthes()`

### cdiv

```private void cdiv(double xr,
double xi,
double yr,
double yi)```

### hqr2

`private void hqr2()`

### getV

`public Matrix getV()`
Return the eigenvector matrix

Returns:
V

### getRealEigenvalues

`public double[] getRealEigenvalues()`
Return the real parts of the eigenvalues

Returns:
real(diag(D))

### getImagEigenvalues

`public double[] getImagEigenvalues()`
Return the imaginary parts of the eigenvalues

Returns:
imag(diag(D))

### getD

`public Matrix getD()`
Return the block diagonal eigenvalue matrix

Returns:
D

 Release 0.3 (2010-03-31_1612)