Class ComplexBackSolver

java.lang.Object
org.flag4j.linalg.solvers.exact.triangular.BackSolver<CMatrix,CVector,Complex128[]>
org.flag4j.linalg.solvers.exact.triangular.ComplexBackSolver
All Implemented Interfaces:
LinearMatrixSolver<CMatrix,CVector>, LinearSolver<CMatrix>

public class ComplexBackSolver extends BackSolver<CMatrix,CVector,Complex128[]>
This solver solves linear systems of the form \( Ux = b \) or \( UX = B \) where \( U \) is an upper triangular matrix. This system is solved in an exact sense.
See Also:
  • Field Details

    • det

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

    • ComplexBackSolver

      public ComplexBackSolver()
      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 ComplexBackSolver(boolean).
    • ComplexBackSolver

      public ComplexBackSolver(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

    • setCheckSingular

      public ComplexBackSolver setCheckSingular(boolean checkSingular)
      Sets a flag indicating if an explicit check should be made that the coefficient matrix is singular.
      Overrides:
      setCheckSingular in class BackSolver<CMatrix,CVector,Complex128[]>
      Parameters:
      checkSingular - Flag indicating if an explicit check should be made that the matrix is singular (or near singular).
      • If true, an explicit singularity check will be made.
      • If false, no check will be made.
      Returns:
      A reference to this back solver instance.
    • getDet

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

      public CVector solve(CMatrix U, CVector b)
      Solves the linear system of equations given by \( Ux = 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 \)invalid input: '<'/> in the linear system \( Ux = b \).
      Throws:
      SingularMatrixException - If the matrix U is singular (i.e. has a zero on the principle diagonal).
    • solve

      public CMatrix solve(CMatrix U, CMatrix B)
      Solves the linear system of equations given by \( UX = 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 \( UX = B \).
      Throws:
      SingularMatrixException - If the matrix U is singular (i.e. has a zero on the principle diagonal).
    • solveIdentity

      public CMatrix solveIdentity(CMatrix U)
      Solves the linear system of equations given by \( UX = 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 \( UU^{-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 \( UX = B \).
      Throws:
      SingularMatrixException - If the matrix U is singular (i.e. has a zero on the principle diagonal).
    • solveLower

      public CMatrix solveLower(CMatrix U, CMatrix L)
      Solves a special case of the linear system \( UX = 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 \( UX = L \) for the matrix \( X \).