Class PseudoInverse

java.lang.Object
dev.nm.algebra.linear.matrix.doubles.matrixtype.dense.DenseMatrix
dev.nm.algebra.linear.matrix.doubles.operation.PseudoInverse
All Implemented Interfaces:
Matrix, MatrixAccess, MatrixRing, MatrixTable, Densifiable, AbelianGroup<Matrix>, Monoid<Matrix>, Ring<Matrix>, Table, DeepCopyable

public class PseudoInverse extends DenseMatrix
The Moore-Penrose pseudo-inverse of an m x n matrix A is A+. It is a generalization of the inverse matrix. This implementation uses the Singular Value decomposition to compute the pseudo-inverse. Specifically,

 A = U * D * V'
 A+ = V * D+ * U'
 
The properties are
  • A+ has the dimension of n x m.
  • A * A+ * A = A
  • A+ * A * A+ = A+
  • (A * A+)' = A * A+
  • (A+ * A)' = A+ * A
When A is invertible, its pseudo-inverse coincides with its inverse.
See Also:
  • Constructor Details

    • PseudoInverse

      public PseudoInverse(Matrix A, double epsilon)
      Construct the Moore-Penrose pseudo-inverse matrix of a matrix.
      Parameters:
      A - an m x n matrix
      epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0. This threshold truncates negligible singular values less than the smaller of ε and (t = machine ε * max(m,n) * max(D)).
      See Also:
    • PseudoInverse

      public PseudoInverse(Matrix A)
      Construct the Moore-Penrose pseudo-inverse matrix of A.
      Parameters:
      A - an m x n matrix