Class UnitUpperTriangBandMatrix

All Implemented Interfaces:
Iterable<MatrixEntry>, Matrix

public class UnitUpperTriangBandMatrix extends UpperTriangBandMatrix
Unit upper triangular banded matrix. The same storage as LowerTriangBandMatrix, but the main diagonal is assumed to be all ones. It is still allocated, however.
  • Constructor Details

    • UnitUpperTriangBandMatrix

      public UnitUpperTriangBandMatrix(int n, int kd)
      Constructor for UnitUpperTriangBandMatrix
      Parameters:
      n - Size of the matrix. Since the matrix must be square, this equals both the number of rows and columns
      kd - Number of bands above the main diagonal (superdiagonals)
    • UnitUpperTriangBandMatrix

      public UnitUpperTriangBandMatrix(Matrix A, int kd)
      Constructor for UnitUpperTriangBandMatrix
      Parameters:
      A - Matrix to copy contents from. Only the parts of A that lie within the allocated band are copied over, the rest is ignored (including main diagonal entries)
      kd - Number of bands above the main diagonal (superdiagonals)
    • UnitUpperTriangBandMatrix

      public UnitUpperTriangBandMatrix(Matrix A, int kd, boolean deep)
      Constructor for UnitUpperTriangBandMatrix
      Parameters:
      A - Matrix to copy contents from. Only the parts of A that lie within the allocated band are copied over, the rest is ignored (including main diagonal entries)
      kd - Number of bands above the main diagonal (superdiagonals)
      deep - True for a deep copy. For shallow copies, A must be a banded matrix
  • Method Details

    • add

      public void add(int row, int column, double value)
      Description copied from interface: Matrix
      A(row,column) += value
      Specified by:
      add in interface Matrix
    • get

      public double get(int row, int column)
      Description copied from interface: Matrix
      Returns A(row,column)
      Specified by:
      get in interface Matrix
    • set

      public void set(int row, int column, double value)
      Description copied from interface: Matrix
      A(row,column) = value
      Specified by:
      set in interface Matrix
    • copy

      Description copied from interface: Matrix
      Creates a deep copy of the matrix
      Specified by:
      copy in interface Matrix
      Overrides:
      copy in class UpperTriangBandMatrix
      Returns:
      A
    • zero

      public Matrix zero()
      Description copied from interface: Matrix
      Zeros all the entries in the matrix, while preserving any underlying structure. Useful for general, unstructured matrices.
      Specified by:
      zero in interface Matrix
      Returns:
      A
    • mult

      public Vector mult(double alpha, Vector x, Vector y)
      Description copied from interface: Matrix
      y = alpha*A*x
      Specified by:
      mult in interface Matrix
      Overrides:
      mult in class AbstractMatrix
      Parameters:
      x - Vector of size A.numColumns()
      y - Vector of size A.numRows()
      Returns:
      y
    • transMult

      public Vector transMult(double alpha, Vector x, Vector y)
      Description copied from interface: Matrix
      y = alpha*AT*x
      Specified by:
      transMult in interface Matrix
      Overrides:
      transMult in class AbstractMatrix
      Parameters:
      x - Vector of size A.numRows()
      y - Vector of size A.numColumns()
      Returns:
      y
    • solve

      public Matrix solve(Matrix B, Matrix X)
      Description copied from interface: Matrix
      X = A\B. Not all matrices support this operation, those that do not throw UnsupportedOperationException. Note that it is often more efficient to use a matrix decomposition and its associated solver
      Specified by:
      solve in interface Matrix
      Overrides:
      solve in class AbstractMatrix
      Parameters:
      B - Matrix with the same number of rows as A, and the same number of columns as X
      X - Matrix with a number of rows equal A.numColumns(), and the same number of columns as B
      Returns:
      X
    • solve

      public Vector solve(Vector b, Vector x)
      Description copied from interface: Matrix
      x = A\b. Not all matrices support this operation, those that do not throw UnsupportedOperationException. Note that it is often more efficient to use a matrix decomposition and its associated solver
      Specified by:
      solve in interface Matrix
      Overrides:
      solve in class AbstractMatrix
      Parameters:
      b - Vector of size A.numRows()
      x - Vector of size A.numColumns()
      Returns:
      x
    • transSolve

      public Matrix transSolve(Matrix B, Matrix X)
      Description copied from interface: Matrix
      X = AT\B. Not all matrices support this operation, those that do not throw UnsupportedOperationException. Note that it is often more efficient to use a matrix decomposition and its associated transpose solver
      Specified by:
      transSolve in interface Matrix
      Overrides:
      transSolve in class AbstractMatrix
      Parameters:
      B - Matrix with a number of rows equal A.numColumns(), and the same number of columns as X
      X - Matrix with the same number of rows as A, and the same number of columns as B
      Returns:
      X
    • transSolve

      public Vector transSolve(Vector b, Vector x)
      Description copied from interface: Matrix
      x = AT\b. Not all matrices support this operation, those that do not throw UnsupportedOperationException. Note that it is often more efficient to use a matrix decomposition and its associated solver
      Specified by:
      transSolve in interface Matrix
      Overrides:
      transSolve in class AbstractMatrix
      Parameters:
      b - Vector of size A.numColumns()
      x - Vector of size A.numRows()
      Returns:
      x
    • getData

      public double[] getData()
      Returns the matrix contents
    • numSubDiagonals

      public int numSubDiagonals()
      Returns the number of lower diagonals
    • numSuperDiagonals

      public int numSuperDiagonals()
      Returns the number of upper diagonals
    • set

      public Matrix set(Matrix B)
      Description copied from interface: Matrix
      A=B. The matrices must be of the same size
      Specified by:
      set in interface Matrix
      Overrides:
      set in class AbstractMatrix
      Returns:
      A
    • iterator

      public Iterator<MatrixEntry> iterator()
      Specified by:
      iterator in interface Iterable<MatrixEntry>
      Overrides:
      iterator in class AbstractMatrix