package

JAMA Class to obtain 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.times(V.transpose())) and V.times(V.transpose()) 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().

author | Paul Meagher
license | PHP v3.0
version | 1.1

### Methods

## Constructor: Check for symmetry, then construct the eigenvalue decomposition

    __construct(\A $Arg) : \Structure

access | public

### Parameters

#### $Arg

`\A`

Square matrix

### Returns

`\Structure`to access D and V.

## Return the block diagonal eigenvalue matrix

    getD() : \D

access | public

### Returns

`\D`

## Return the imaginary parts of the eigenvalues

    getImagEigenvalues() : \imag(diag(D))

access | public

### Returns

`\imag(diag(D))`

## Return the real parts of the eigenvalues

    getRealEigenvalues() : \real(diag(D))

access | public

### Returns

`\real(diag(D))`

## Return the eigenvector matrix

    getV() : \V

access | public

### Returns

`\V`

## Performs complex division.

    cdiv($xr, $xi, $yr, $yi)

access | private

### Parameters

#### $xr

#### $xi

#### $yr

#### $yi

## Nonsymmetric reduction from Hessenberg to real Schur form.

    hqr2()

Code is derived from the Algol procedure hqr2, by Martin and Wilkinson, Handbook for Auto. Comp., Vol.ii-Linear Algebra, and the corresponding Fortran subroutine in EISPACK.

access | private

## Nonsymmetric reduction to Hessenberg form.

    orthes()

This is derived from the Algol procedures orthes and ortran, by Martin and Wilkinson, Handbook for Auto. Comp., Vol.ii-Linear Algebra, and the corresponding Fortran subroutines in EISPACK.

access | private

## Symmetric tridiagonal QL algorithm.

    tql2()

This is derived from the Algol procedures tql2, by Bowdler, Martin, Reinsch, and Wilkinson, Handbook for Auto. Comp., Vol.ii-Linear Algebra, and the corresponding Fortran subroutine in EISPACK.

access | private

## Symmetric Householder reduction to tridiagonal form.

    tred2()

access | private

### Properties

##

    $H : array

##

    $V : array

##

    $cdivi

##

    $cdivr : float

##

    $d : array

##

    $e

##

    $issymmetric : int

##

    $n : int

##

    $ort : array