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

gov.sandia.cognition.math.matrix.decomposition.EigenDecomposition Maven / Gradle / Ivy

There is a newer version: 4.0.1
Show newest version
/*
 * File:                EigenDecomposition.java
 * Authors:             Kevin R. Dixon
 * Company:             Sandia National Laboratories
 * Project:             Cognitive Foundry
 *
 * Copyright February 21, 2006, Sandia Corporation.  Under the terms of Contract
 * DE-AC04-94AL85000, there is a non-exclusive license for use of this work by
 * or on behalf of the U.S. Government. Export of this program may require a
 * license from the United States Government. See CopyrightHistory.txt for
 * complete details.
 *
 */

package gov.sandia.cognition.math.matrix.decomposition;

import gov.sandia.cognition.annotation.CodeReview;
import gov.sandia.cognition.annotation.PublicationReference;
import gov.sandia.cognition.annotation.PublicationType;
import gov.sandia.cognition.math.ComplexNumber;
import gov.sandia.cognition.math.matrix.Matrix;

/**
 * Performs a right eigendecomposition for symmetric or asymmetric matrices
 *
 * @author Kevin R. Dixon
 * @since  1.0
 *
 */
@CodeReview(
    reviewer="Jonathan McClain",
    date="2006-05-16",
    changesNeeded=false,
    comments="Interface looks fine."
)
@PublicationReference(
    author="Wikipedia",
    title="Eigendecomposition of a matrix",
    type=PublicationType.WebPage,
    year=2010,
    url="http://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix"
)
public interface EigenDecomposition
{

    /**
     * Gets the complex-valued (potentially real and/or imaginary)
     * eigenvalue specified by the index "index"
     *
     * @param index
     *          zero-based eigenvalue index to return
     * @return ComplexNumber that specifies the eigenvalue
     */
    public ComplexNumber getEigenValue(
        int index );

    /**
     * Returns the array of complex-valued eigenvalues, the eigenvalues may be
     * sorted in descending order of the magnitude of the eigenvalue, or they
     * may be unsorted, depending on the specific implementation used
     *
     * @return array of complex-valued eigenvalues
     */
    public ComplexNumber[] getEigenValues();

    /**
     * Returns a matrix with the real parts of the right eigenvalues of the
     * underlying matrix 
     *
     * @return matrix containing the real parts of the right eivenvalues
     */
    public Matrix getEigenVectorsRealPart();

    /**
     * Returns a matrix with the imaginary parts of the right eigenvalues of
     * the underlying matrix 
     *
     * @return matrix containing the imaginary parts of the right eivenvalues
     */
    public Matrix getEigenVectorsImaginaryPart();

    /**
     * Computes the natural logarithm determinant from the collection of
     * eigenvalues
     *
     * @return natural logarithm of the determinant
     */
    public ComplexNumber getLogDeterminant();

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy