Class ComplexForwardSolver

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

public class ComplexForwardSolver extends ForwardSolver<CMatrix,CVector,Complex128[]>
This solver solves linear systems of equations where the coefficient matrix in a lower triangular complex dense matrix and the constant vector/matrix is complex and dense.
  • Constructor Details

    • ComplexForwardSolver

      public ComplexForwardSolver()
      Creates a solver to solve a linear system where the coefficient matrix is lower triangular.
    • ComplexForwardSolver

      public ComplexForwardSolver(boolean isUnit)
      Creates a solver to solve a linear system where the coefficient matrix is lower triangular or unit lower triangular.
      Parameters:
      isUnit - Flag which indicates if the coefficient matrix is unit lower triangular or not.
      • If true, the coefficient matrix is expected to be unit lower triangular.
      • If false, the coefficient matrix is expected to be lower triangular.
    • ComplexForwardSolver

      public ComplexForwardSolver(boolean isUnit, boolean enforceLower)
      Creates a solver to solve a linear system where the coefficient matrix is lower triangular or unit lower triangular.
      Parameters:
      isUnit - Flag which indicates if the coefficient matrix is unit lower triangular or not.
      • If true, the coefficient matrix is expected to be unit lower triangular.
      • If false, the coefficient matrix is expected to be lower triangular.
      enforceLower - Flag indicating if an explicit check should be made that the coefficient matrix is lower triangular.
  • Method Details

    • getDet

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

      public CVector solve(CMatrix L, CVector b)
      Performs forward substitution for a unit lower triangular matrix L and a vector b. That is, solves the linear system L*x=b where L is a lower triangular matrix.
      Parameters:
      L - Unit lower triangular coefficient matrix. If L is not unit lower triangular, it will be treated as if it were.
      b - Constant vector.
      Returns:
      The result of solving the linear system L*x=b where L is a lower triangular matrix.
    • solve

      public CMatrix solve(CMatrix L, CMatrix B)
      Performs forward substitution for a unit lower triangular matrix L and a matrix B. That is, solves the linear system L*X=B where L is a lower triangular matrix.
      Parameters:
      L - Lower triangular coefficient matrix. If L is not lower triangular, it will be treated as if it were.
      B - Constant Matrix.
      Returns:
      The result of solving the linear system L*X=B where L is a lower triangular matrix. If the lower triangular matrix L is singular (i.e. has a zero on the principle diagonal).
      Throws:
      SingularMatrixException - If the matrix lower triangular L is singular (i.e. has a zero on the principle diagonal).
    • solveIdentity

      public CMatrix solveIdentity(CMatrix L)
      Performs forward substitution for a unit lower triangular matrix L and the identity matrix. That is, solves the linear system L*X=I where L is a lower triangular matrix and I is the appropriately sized identity matrix.
      Parameters:
      L - Lower triangular coefficient matrix. If L is not lower triangular, it will be treated as if it were.
      Returns:
      The result of solving the linear system L*X=B where L is a lower triangular matrix.
      Throws:
      SingularMatrixException - If the matrix lower triangular L is singular (i.e. has a zero on the principle diagonal).