Package org.jblas

Class Eigen


  • public class Eigen
    extends java.lang.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.

    • Constructor Detail

      • Eigen

        public Eigen()
    • Method Detail

      • 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.
      • 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:
        java.lang.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:
        java.lang.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:
        java.lang.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:
        java.lang.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.
      • 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:
        java.lang.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:
        java.lang.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:
        java.lang.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:
        java.lang.IllegalArgumentException - if il > iu or il < 0 or iu > A.rows - 1