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

org.apache.commons.math.linear.EigenDecomposition Maven / Gradle / Ivy

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.commons.math.linear;


/**
 * An interface to classes that implement an algorithm to calculate the
 * eigen decomposition of a real matrix.
 * 

The eigen decomposition of matrix A is a set of two matrices: * V and D such that A = V × D × VT. * A, V and D are all m × m matrices.

*

This interface is similar in spirit to the EigenvalueDecomposition * class from the JAMA * library, with the following changes:

*
    *
  • a {@link #getVT() getVt} method has been added,
  • *
  • two {@link #getRealEigenvalue(int) getRealEigenvalue} and {@link #getImagEigenvalue(int) * getImagEigenvalue} methods to pick up a single eigenvalue have been added,
  • *
  • a {@link #getEigenvector(int) getEigenvector} method to pick up a single * eigenvector has been added,
  • *
  • a {@link #getDeterminant() getDeterminant} method has been added.
  • *
  • a {@link #getSolver() getSolver} method has been added.
  • *
* @see MathWorld * @see Wikipedia * @version $Revision: 997726 $ $Date: 2010-09-16 14:39:51 +0200 (jeu. 16 sept. 2010) $ * @since 2.0 */ public interface EigenDecomposition { /** * Returns the matrix V of the decomposition. *

V is an orthogonal matrix, i.e. its transpose is also its inverse.

*

The columns of V are the eigenvectors of the original matrix.

*

No assumption is made about the orientation of the system axes formed * by the columns of V (e.g. in a 3-dimension space, V can form a left- * or right-handed system).

* @return the V matrix */ RealMatrix getV(); /** * Returns the block diagonal matrix D of the decomposition. *

D is a block diagonal matrix.

*

Real eigenvalues are on the diagonal while complex values are on * 2x2 blocks { {real +imaginary}, {-imaginary, real} }.

* @return the D matrix * @see #getRealEigenvalues() * @see #getImagEigenvalues() */ RealMatrix getD(); /** * Returns the transpose of the matrix V of the decomposition. *

V is an orthogonal matrix, i.e. its transpose is also its inverse.

*

The columns of V are the eigenvectors of the original matrix.

*

No assumption is made about the orientation of the system axes formed * by the columns of V (e.g. in a 3-dimension space, V can form a left- * or right-handed system).

* @return the transpose of the V matrix */ RealMatrix getVT(); /** * Returns a copy of the real parts of the eigenvalues of the original matrix. * @return a copy of the real parts of the eigenvalues of the original matrix * @see #getD() * @see #getRealEigenvalue(int) * @see #getImagEigenvalues() */ double[] getRealEigenvalues(); /** * Returns the real part of the ith eigenvalue of the original matrix. * @param i index of the eigenvalue (counting from 0) * @return real part of the ith eigenvalue of the original matrix * @see #getD() * @see #getRealEigenvalues() * @see #getImagEigenvalue(int) */ double getRealEigenvalue(int i); /** * Returns a copy of the imaginary parts of the eigenvalues of the original matrix. * @return a copy of the imaginary parts of the eigenvalues of the original matrix * @see #getD() * @see #getImagEigenvalue(int) * @see #getRealEigenvalues() */ double[] getImagEigenvalues(); /** * Returns the imaginary part of the ith eigenvalue of the original matrix. * @param i index of the eigenvalue (counting from 0) * @return imaginary part of the ith eigenvalue of the original matrix * @see #getD() * @see #getImagEigenvalues() * @see #getRealEigenvalue(int) */ double getImagEigenvalue(int i); /** * Returns a copy of the ith eigenvector of the original matrix. * @param i index of the eigenvector (counting from 0) * @return copy of the ith eigenvector of the original matrix * @see #getD() */ RealVector getEigenvector(int i); /** * Return the determinant of the matrix * @return determinant of the matrix */ double getDeterminant(); /** * Get a solver for finding the A × X = B solution in exact linear sense. * @return a solver */ DecompositionSolver getSolver(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy