\PhpOffice\PhpSpreadsheet\Shared\JAMAEigenvalueDecomposition

Class to obtain eigenvalues and eigenvectors of a real matrix.

If A is symmetric, then A = VDV' 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 + imu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The columns of V represent the eigenvectors in the sense that AV = VD, 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 = VD*inverse(V) depends upon V.cond().

Summary

Methods
Properties
Constants
__construct()
getV()
getRealEigenvalues()
getImagEigenvalues()
getD()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
tred2()
tql2()
orthes()
cdiv()
hqr2()
$n
$d
$e
$V
$H
$ort
$cdivr
$cdivi
N/A

Properties

$n

$n : integer

Row and column dimension (square matrix).

Type

integer

$d

$d : array

Arrays for internal storage of eigenvalues.

Type

array

$e

$e : 

Type

$V

$V : array

Array for internal storage of eigenvectors.

Type

array

$H

$H : array

Array for internal storage of nonsymmetric Hessenberg form.

Type

array

$ort

$ort : array

Working storage for nonsymmetric algorithm.

Type

array

$cdivr

$cdivr : float

Used for complex scalar division.

Type

float

$cdivi

$cdivi : 

Type

Methods

__construct()

__construct(mixed  $Arg) 

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

Parameters

mixed $Arg

A Square matrix

getV()

getV() : \PhpOffice\PhpSpreadsheet\Shared\JAMA\Matrix

Return the eigenvector matrix.

Returns

\PhpOffice\PhpSpreadsheet\Shared\JAMA\Matrix —

V

getRealEigenvalues()

getRealEigenvalues() : array

Return the real parts of the eigenvalues.

Returns

array —

real(diag(D))

getImagEigenvalues()

getImagEigenvalues() : array

Return the imaginary parts of the eigenvalues.

Returns

array —

imag(diag(D))

getD()

getD() : \PhpOffice\PhpSpreadsheet\Shared\JAMA\Matrix

Return the block diagonal eigenvalue matrix.

Returns

\PhpOffice\PhpSpreadsheet\Shared\JAMA\Matrix —

D

tred2()

tred2() 

Symmetric Householder reduction to tridiagonal form.

tql2()

tql2() 

Symmetric tridiagonal QL algorithm.

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.

orthes()

orthes() 

Nonsymmetric reduction to Hessenberg form.

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.

cdiv()

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

Performs complex division.

Parameters

mixed $xr
mixed $xi
mixed $yr
mixed $yi

hqr2()

hqr2() 

Nonsymmetric reduction from Hessenberg to real Schur form.

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.