Class RealBackSolver

java.lang.Object
org.flag4j.linalg.solvers.exact.triangular.BackSolver<Matrix,Vector,double[]>
org.flag4j.linalg.solvers.exact.triangular.RealBackSolver
All Implemented Interfaces:
LinearMatrixSolver<Matrix,Vector>, LinearSolver<Matrix>

public class RealBackSolver extends BackSolver<Matrix,Vector,double[]>

This solver solves linear systems of equations where the coefficient matrix in an upper triangular real dense matrix and the constant vector is a real dense vector or matrix.

That is, solves a linear system of equations U*x=b or U*X=B where U is an upper triangular matrix.

  • Field Details

    • det

      protected double det
      For computing determinant of coefficient matrix during solve.
  • Constructor Details

    • RealBackSolver

      public RealBackSolver()
      Creates a solver for solving linear systems for upper triangular coefficient matrices. Note, by default no check will * be made to ensure the coefficient matrix is upper triangular. If you would like to enforce this, see * RealBackSolver(boolean).
    • RealBackSolver

      public RealBackSolver(boolean enforceTriU)
      Creates a solver for solving linear systems for upper triangular coefficient matrices.
      Parameters:
      enforceTriU - Flag indicating if an explicit check should be made that the coefficient matrix is upper triangular.
  • Method Details

    • getDet

      public double getDet()
      Gets the determinant computed during the last solve.
    • solve

      public Vector solve(Matrix U, Vector b)
      Solves the linear system of equations given by U*x=b where the coefficient matrix U is an upper triangular matrix.
      Parameters:
      U - Upper triangular coefficient matrix in the linear system. If enforceTriU was set to false when this solver instance was created and U is not actually upper triangular, it will be treated as if it were.
      b - Vector of constants in the linear system.
      Returns:
      The solution to x in the linear system A*x=b.
      Throws:
      SingularMatrixException - If the matrix U is singular (i.e. has a zero on the principle diagonal).
    • solve

      public Matrix solve(Matrix U, Matrix B)
      Solves the linear system of equations given by U*X=B where the coefficient matrix U is an upper triangular matrix.
      Parameters:
      U - Upper triangular coefficient matrix in the linear system. If enforceTriU was set to false when this solver instance was created and U is not actually upper triangular, it will be treated as if it were.
      B - Matrix of constants in the linear system.
      Returns:
      The solution to X in the linear system U*X=B.
      Throws:
      SingularMatrixException - If the matrix U is singular (i.e. has a zero on the principle diagonal).
    • solveIdentity

      public Matrix solveIdentity(Matrix U)
      Solves the linear system of equations given by U*X=I where the coefficient matrix U is an upper triangular matrix and I is the identity matrix of appropriate size. This essentially inverts the upper triangular matrix since U*U-1=I.
      Parameters:
      U - Upper triangular coefficient matrix in the linear system. If enforceTriU was set to false when this solver instance was created and U is not actually upper triangular, it will be treated as if it were.
      Returns:
      The solution to X in the linear system U*X=B.
      Throws:
      SingularMatrixException - If the matrix U is singular (i.e. has a zero on the principle diagonal).
    • solveLower

      public Matrix solveLower(Matrix U, Matrix L)
      Solves a special case of the linear system U*X=L for X where the coefficient matrix U is an upper triangular matrix and the constant matrix L is lower triangular.
      Parameters:
      U - Upper triangular coefficient matrix in the linear system. If enforceTriU was set to false when this solver instance was created and U is not actually upper triangular, it will be treated as if it were.
      L - Lower triangular constant matrix. This is not explicit checked. If L is not lower triangular, values above the principle diagonal will be ignored and the result will still be correctly computed.
      Returns:
      The result of solving the linear system U*X=L for the matrix X.