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 a complex linear system of equations where the coefficient matrix is lower triangular. That is, solves the systems \( Lx = b \) or \( LX = B \) where \( L \) is a lower triangular matrix. This is accomplished using a simple forward substitution.
See Also:
  • 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 \( Lx = b \) for \( x \) where \( L \) is lower triangular.
      Parameters:
      L - Lower triangular coefficient matrix \( L \). L is assumed to be lower triangular and only entries at and below the principle diagonal will be accessed.
      b - Constant vector \( b \).
      Returns:
      The result of solving the linear system \( Lx = b \) where \( L \) is a lower triangular.
      Throws:
      SingularMatrixException - If L is singular (i.e. has at least one zero on the principle diagonal).
    • 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 \( LX = B \) for \( X \) where \( L \) is lower triangular.
      Parameters:
      L - Lower triangular coefficient matrix \( L \). L is assumed to be lower triangular and only entries at and below the principle diagonal will be accessed.
      B - The constant matrix in the linear system.
      b - Constant matrix \( B \).
      Returns:
      The result of solving the linear system \( LX = B \) where \( L \) is a lower triangular.
      Throws:
      SingularMatrixException - If L is singular (i.e. has at least one zero on the principle diagonal).
    • solve

      public CMatrix solve(CMatrix L, PermutationMatrix P)
      Solves a linear system \( LX = P \) for \( X \) where \( L \) is a lower triangular matrix and \( P \) is a permutation matrix.
      Specified by:
      solve in class ForwardSolver<CMatrix,CVector,Complex128[]>
      Parameters:
      L - Lower triangular coefficient matrix \( L \).
      P - Constant permutation matrix \( P \).
      Returns:
      The solution to \( X \) in the linear system \( LX = P \).
    • 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 \( LX = I \) where \( L \) is a lower triangular matrix and \( I \) is the appropriately sized identity matrix.
      Parameters:
      L - Lower triangular coefficient matrix, \( L \). If L is not lower triangular, it will be treated as if it were and only data in the lower triangular portion will be accessed.
      Returns:
      The result of solving the linear system \( LX = B \) where \( L \) is a lower triangular matrix.
      Throws:
      SingularMatrixException - If the matrix lower triangular L is singular (i.e. has at least one zero on the principle diagonal).