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

\Structureto 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