org.jeometry.math.decomposition.SVDDecomposition 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 a Singular Values Decomposition (SVD).
*
* Let A be a real matrix that has a matrix of {@link EigenDecomposition Eigen vectors} P that is not invertible
* (no {@link EigenDecomposition Eigen decomposition} can be computed).
*
* If A is an m × n real matrix with m > n, then A can be written using a so-called singular value decomposition of the form
* A = USVT
*
* where:
*
* - U is a m × m matrix with orthogonal columns (UTU = I)
*
- S is a m × n diagonal matrix made of the singular values
*
- V is a n × n matrix with orthogonal columns (VTV = I)
*
*
*
* source: Wolfram math
* @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 SVDDecomposition extends Decomposition {
/**
* The index of the U matrix within the {@link Decomposition#getComponents() decomposition components}.
*/
public static final int COMPONENT_U_INDEX = 0;
/**
* The index of the S matrix within the {@link Decomposition#getComponents() decomposition components}.
*/
public static final int COMPONENT_S_INDEX = 1;
/**
* The index of the V matrix within the {@link Decomposition#getComponents() decomposition components}.
*/
public static final int COMPONENT_V_INDEX = 2;
/**
* Get the U matrix that is a m × m matrix with orthogonal columns (UTU = I).
* @return the U matrix
* @see #getS()
* @see #getV()
*/
public Matrix getU();
/**
* Get the S matrix that is is a m × n diagonal matrix made of singular values.
* @return the S matrix
* @see #getU()
* @see #getV()
*/
public Matrix getS();
/**
* Get the V matrix that is a n × n matrix with orthogonal columns (VTV = I).
* @return the V matrix
* @see #getU()
* @see #getS()
*/
public Matrix getV();
}