org.jeometry.math.decomposition.EigenDecomposition Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jeometry-api Show documentation
Show all versions of jeometry-api Show documentation
Jeometry, a Mathematic and Geometry library for Java
package org.jeometry.math.decomposition;
import org.jeometry.Jeometry;
import org.jeometry.math.Matrix;
/**
* This interface describes an Eigen decomposition.
* Let A be a square matrix. According to the Eigen decomposition theorem, we can write:
* A = VDV-1
* Where:
*
* - V is a square matrix made of eigenvectors
*
- D is a diagonal matrix made of eigenvalues
*
* If V is not a square matrix, then it cannot have a matrix inverse and A does not have an eigen decomposition.
* In this case, if V is m×n (with m>n), then A can be written using a {@link SVDDecomposition Singular Values Decomposition}.
*
* If A is symmetric, then:
*
A = VDVT
* where D is diagonal and V is orthogonal (VVT = I).
*
* If A is not symmetric, then the eigenvalue matrix D is block diagonal
* with:
*
* - the real eigenvalues in 1-by-1 blocks
*
- any complex eigenvalues λ + i×μ in 2-by-2 blocks [λ, μ; -μ, λ]
*
*
* The columns of V represent the eigenvectors in the sense that:
* AV = VD
*
* The matrix V may be badly conditioned, or even singular, so the validity of the equation cannot be sure for all matrices.
* @author Julien Seinturier - COMEX S.A. - [email protected] - https://github.com/jorigin/jeometry
* @version {@value Jeometry#version} b{@value Jeometry#BUILD}
* @since 1.0.0
*/
public interface EigenDecomposition extends Decomposition {
/**
* The index of the eigenvectors V matrix within the {@link Decomposition#getComponents() decomposition components}.
*/
public static final int COMPONENT_V_INDEX = 0;
/**
* The index of the diagonal eigenvalues D matrix within the {@link Decomposition#getComponents() decomposition components}.
*/
public static final int COMPONENT_D_INDEX = 1;
/**
* Get the diagonal matrix of eigenvalues, denoted D
.
* @return the diagonal matrix of eigenvalues, denoted D
*/
public Matrix getD();
/**
* Get the matrix of eigenvectors, denoted V.
* @return the matrix of eigenvectors, denoted V
*/
public Matrix getV();
}