All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jeometry.math.decomposition.EigenDecomposition Maven / Gradle / Ivy

There is a newer version: 1.0.5
Show newest version
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(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy