Package org.jblas

Class Eigen

java.lang.Object
org.jblas.Eigen

public class Eigen extends Object

Eigenvalue and Eigenvector related functions.

Methods exist for working with symmetric matrices or general eigenvalues. The symmetric versions are usually much faster on symmetric matrices.

  • Field Details

    • dummyDouble

      private static final DoubleMatrix dummyDouble
    • dummyFloat

      private static final FloatMatrix dummyFloat
  • Constructor Details

    • Eigen

      public Eigen()
  • Method Details

    • symmetricEigenvalues

      public static DoubleMatrix symmetricEigenvalues(DoubleMatrix A)
      Compute the eigenvalues for a symmetric matrix.
    • symmetricEigenvectors

      public static DoubleMatrix[] symmetricEigenvectors(DoubleMatrix A)
      Computes the eigenvalues and eigenvectors for a symmetric matrix.
      Returns:
      an array of DoubleMatrix objects containing the eigenvectors stored as the columns of the first matrix, and the eigenvalues as diagonal elements of the second matrix.
    • eigenvalues

      public static ComplexDoubleMatrix eigenvalues(DoubleMatrix A)
      Computes the eigenvalues of a general matrix.
    • eigenvectors

      public static ComplexDoubleMatrix[] eigenvectors(DoubleMatrix A)
      Computes the eigenvalues and eigenvectors of a general matrix.
      Returns:
      an array of ComplexDoubleMatrix objects containing the eigenvectors stored as the columns of the first matrix, and the eigenvalues as the diagonal elements of the second matrix.
    • symmetricGeneralizedEigenvalues

      public static DoubleMatrix symmetricGeneralizedEigenvalues(DoubleMatrix A, DoubleMatrix B)
      Compute generalized eigenvalues of the problem A x = L B x.
      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      Returns:
      a vector of eigenvalues L.
    • symmetricGeneralizedEigenvectors

      public static DoubleMatrix[] symmetricGeneralizedEigenvectors(DoubleMatrix A, DoubleMatrix B)
      Solve a general problem A x = L B x.
      Parameters:
      A - symmetric matrix A
      B - symmetric matrix B
      Returns:
      an array of matrices of length two. The first one is an array of the eigenvectors X The second one is A vector containing the corresponding eigenvalues L.
    • symmetricGeneralizedEigenvalues

      public static DoubleMatrix symmetricGeneralizedEigenvalues(DoubleMatrix A, DoubleMatrix B, double vl, double vu)
      Computes selected eigenvalues of the real generalized symmetric-definite eigenproblem of the form A x = L B x or, equivalently, (A - L B)x = 0. Here A and B are assumed to be symmetric and B is also positive definite. The selection is based on the given range of values for the desired eigenvalues.

      The range is half open: (vl,vu].

      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      vl - lower bound of the smallest eigenvalue to return
      vu - upper bound of the largest eigenvalue to return
      Returns:
      a vector of eigenvalues L
      Throws:
      IllegalArgumentException - if vl > vu
      NoEigenResultException - if no eigevalues are found for the selected range: (vl,vu]
    • symmetricGeneralizedEigenvalues

      public static DoubleMatrix symmetricGeneralizedEigenvalues(DoubleMatrix A, DoubleMatrix B, int il, int iu)
      Computes selected eigenvalues of the real generalized symmetric-definite eigenproblem of the form A x = L B x or, equivalently, (A - L B)x = 0. Here A and B are assumed to be symmetric and B is also positive definite. The selection is based on the given range of indices for the desired eigenvalues.
      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      il - lower index (in ascending order) of the smallest eigenvalue to return (index is 0-based)
      iu - upper index (in ascending order) of the largest eigenvalue to return (index is 0-based)
      Returns:
      a vector of eigenvalues L
      Throws:
      IllegalArgumentException - if il > iu or il < 0 or iu > A.rows - 1
    • symmetricGeneralizedEigenvectors

      public static DoubleMatrix[] symmetricGeneralizedEigenvectors(DoubleMatrix A, DoubleMatrix B, double vl, double vu)
      Computes selected eigenvalues and their corresponding eigenvectors of the real generalized symmetric-definite eigenproblem of the form A x = L B x or, equivalently, (A - L B)x = 0. Here A and B are assumed to be symmetric and B is also positive definite. The selection is based on the given range of values for the desired eigenvalues. The range is half open: (vl,vu].
      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      vl - lower bound of the smallest eigenvalue to return
      vu - upper bound of the largest eigenvalue to return
      Returns:
      an array of matrices of length two. The first one is an array of the eigenvectors x. The second one is a vector containing the corresponding eigenvalues L.
      Throws:
      IllegalArgumentException - if vl > vu
      NoEigenResultException - if no eigevalues are found for the selected range: (vl,vu]
    • symmetricGeneralizedEigenvectors

      public static DoubleMatrix[] symmetricGeneralizedEigenvectors(DoubleMatrix A, DoubleMatrix B, int il, int iu)
      Computes selected eigenvalues and their corresponding eigenvectors of the real generalized symmetric-definite eigenproblem of the form A x = L B x or, equivalently, (A - L B)x = 0. Here A and B are assumed to be symmetric and B is also positive definite. The selection is based on the given range of values for the desired eigenvalues.
      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      il - lower index (in ascending order) of the smallest eigenvalue to return (index is 0-based)
      iu - upper index (in ascending order) of the largest eigenvalue to return (index is 0-based)
      Returns:
      an array of matrices of length two. The first one is an array of the eigenvectors x. The second one is a vector containing the corresponding eigenvalues L.
      Throws:
      IllegalArgumentException - if il > iu or il < 0 or iu > A.rows - 1
    • symmetricEigenvalues

      public static FloatMatrix symmetricEigenvalues(FloatMatrix A)
      Compute the eigenvalues for a symmetric matrix.
    • symmetricEigenvectors

      public static FloatMatrix[] symmetricEigenvectors(FloatMatrix A)
      Computes the eigenvalues and eigenvectors for a symmetric matrix.
      Returns:
      an array of FloatMatrix objects containing the eigenvectors stored as the columns of the first matrix, and the eigenvalues as diagonal elements of the second matrix.
    • eigenvalues

      public static ComplexFloatMatrix eigenvalues(FloatMatrix A)
      Computes the eigenvalues of a general matrix.
    • eigenvectors

      public static ComplexFloatMatrix[] eigenvectors(FloatMatrix A)
      Computes the eigenvalues and eigenvectors of a general matrix.
      Returns:
      an array of ComplexFloatMatrix objects containing the eigenvectors stored as the columns of the first matrix, and the eigenvalues as the diagonal elements of the second matrix.
    • symmetricGeneralizedEigenvalues

      public static FloatMatrix symmetricGeneralizedEigenvalues(FloatMatrix A, FloatMatrix B)
      Compute generalized eigenvalues of the problem A x = L B x.
      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      Returns:
      a vector of eigenvalues L.
    • symmetricGeneralizedEigenvectors

      public static FloatMatrix[] symmetricGeneralizedEigenvectors(FloatMatrix A, FloatMatrix B)
      Solve a general problem A x = L B x.
      Parameters:
      A - symmetric matrix A
      B - symmetric matrix B
      Returns:
      an array of matrices of length two. The first one is an array of the eigenvectors X The second one is A vector containing the corresponding eigenvalues L.
    • symmetricGeneralizedEigenvalues

      public static FloatMatrix symmetricGeneralizedEigenvalues(FloatMatrix A, FloatMatrix B, float vl, float vu)
      Computes selected eigenvalues of the real generalized symmetric-definite eigenproblem of the form A x = L B x or, equivalently, (A - L B)x = 0. Here A and B are assumed to be symmetric and B is also positive definite. The selection is based on the given range of values for the desired eigenvalues.

      The range is half open: (vl,vu].

      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      vl - lower bound of the smallest eigenvalue to return
      vu - upper bound of the largest eigenvalue to return
      Returns:
      a vector of eigenvalues L
      Throws:
      IllegalArgumentException - if vl > vu
      NoEigenResultException - if no eigevalues are found for the selected range: (vl,vu]
    • symmetricGeneralizedEigenvalues

      public static FloatMatrix symmetricGeneralizedEigenvalues(FloatMatrix A, FloatMatrix B, int il, int iu)
      Computes selected eigenvalues of the real generalized symmetric-definite eigenproblem of the form A x = L B x or, equivalently, (A - L B)x = 0. Here A and B are assumed to be symmetric and B is also positive definite. The selection is based on the given range of indices for the desired eigenvalues.
      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      il - lower index (in ascending order) of the smallest eigenvalue to return (index is 0-based)
      iu - upper index (in ascending order) of the largest eigenvalue to return (index is 0-based)
      Returns:
      a vector of eigenvalues L
      Throws:
      IllegalArgumentException - if il > iu or il < 0 or iu > A.rows - 1
    • symmetricGeneralizedEigenvectors

      public static FloatMatrix[] symmetricGeneralizedEigenvectors(FloatMatrix A, FloatMatrix B, float vl, float vu)
      Computes selected eigenvalues and their corresponding eigenvectors of the real generalized symmetric-definite eigenproblem of the form A x = L B x or, equivalently, (A - L B)x = 0. Here A and B are assumed to be symmetric and B is also positive definite. The selection is based on the given range of values for the desired eigenvalues. The range is half open: (vl,vu].
      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      vl - lower bound of the smallest eigenvalue to return
      vu - upper bound of the largest eigenvalue to return
      Returns:
      an array of matrices of length two. The first one is an array of the eigenvectors x. The second one is a vector containing the corresponding eigenvalues L.
      Throws:
      IllegalArgumentException - if vl > vu
      NoEigenResultException - if no eigevalues are found for the selected range: (vl,vu]
    • symmetricGeneralizedEigenvectors

      public static FloatMatrix[] symmetricGeneralizedEigenvectors(FloatMatrix A, FloatMatrix B, int il, int iu)
      Computes selected eigenvalues and their corresponding eigenvectors of the real generalized symmetric-definite eigenproblem of the form A x = L B x or, equivalently, (A - L B)x = 0. Here A and B are assumed to be symmetric and B is also positive definite. The selection is based on the given range of values for the desired eigenvalues.
      Parameters:
      A - symmetric Matrix A. Only the upper triangle will be considered.
      B - symmetric Matrix B. Only the upper triangle will be considered.
      il - lower index (in ascending order) of the smallest eigenvalue to return (index is 0-based)
      iu - upper index (in ascending order) of the largest eigenvalue to return (index is 0-based)
      Returns:
      an array of matrices of length two. The first one is an array of the eigenvectors x. The second one is a vector containing the corresponding eigenvalues L.
      Throws:
      IllegalArgumentException - if il > iu or il < 0 or iu > A.rows - 1