Class SolvePseudoInverseQrp_DDRM

All Implemented Interfaces:
LinearSolver<DMatrixRMaj,DMatrixRMaj>, LinearSolverDense<DMatrixRMaj>

public class SolvePseudoInverseQrp_DDRM extends BaseLinearSolverQrp_DDRM

A pseudo inverse solver for a generic QR column pivot decomposition algorithm. See BaseLinearSolverQrp_DDRM for technical details on the algorithm.

  • Constructor Details

    • SolvePseudoInverseQrp_DDRM

      public SolvePseudoInverseQrp_DDRM(QRPDecomposition_F64<DMatrixRMaj> decomposition, boolean norm2Solution)
      Configure and provide decomposition
      Parameters:
      decomposition - Decomposition used.
      norm2Solution - If true the basic solution will be returned, false the minimal 2-norm solution.
  • Method Details

    • setA

      public boolean setA(DMatrixRMaj A)
      Description copied from interface: LinearSolver

      Specifies the A matrix in the linear equation. A reference might be saved and it might also be modified depending on the implementation. If it is modified then LinearSolver.modifiesA() will return true.

      If this value returns true that does not guarantee a valid solution was generated. This is because some decompositions don't detect singular matrices.

      Specified by:
      setA in interface LinearSolver<DMatrixRMaj,DMatrixRMaj>
      Overrides:
      setA in class BaseLinearSolverQrp_DDRM
      Parameters:
      A - The 'A' matrix in the linear equation. Might be modified or save the reference.
      Returns:
      true if it can be processed.
    • solve

      public void solve(DMatrixRMaj B, DMatrixRMaj X)
      Description copied from interface: LinearSolver

      Solves for X in the linear system, A*X=B.

      In some implementations 'B' and 'X' can be the same instance of a variable. Call LinearSolver.modifiesB() to determine if 'B' is modified.

      Parameters:
      B - A matrix ℜ m × p. Might be modified.
      X - A matrix ℜ n × p, where the solution is written to. Modified.
    • modifiesA

      public boolean modifiesA()
      Description copied from interface: LinearSolver
      Returns true if the passed in matrix to LinearSolver.setA(Matrix) is modified.
      Returns:
      true if A is modified in setA().
    • modifiesB

      public boolean modifiesB()
      Description copied from interface: LinearSolver
      Returns true if the passed in 'B' matrix to LinearSolver.solve(Matrix, Matrix) is modified.
      Returns:
      true if B is modified in solve(B,X).