\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 : int

Row and column dimension (square matrix).

Type

int

$d

$d : array

Arrays for internal storage of eigenvalues.

Type

array

$e

$e

$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

Methods

__construct()

__construct(mixed  $Arg) : mixed

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

Parameters

mixed $Arg

A Square matrix

Returns

mixed —

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() : void

Symmetric Householder reduction to tridiagonal form.

tql2()

tql2() : void

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() : void

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) : void

Performs complex division.

Parameters

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

hqr2()

hqr2() : void

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.