Class SymmTridiagMatrix

java.lang.Object
no.uib.cipr.matrix.AbstractMatrix
no.uib.cipr.matrix.SymmTridiagMatrix
All Implemented Interfaces:
Iterable<MatrixEntry>, Matrix
Direct Known Subclasses:
SPDTridiagMatrix

public class SymmTridiagMatrix extends AbstractMatrix
Symmetrical tridiagonal matrix. Storage as for TridiagMatrix, but only one off-diagonal array is stored.
  • Constructor Details

    • SymmTridiagMatrix

      public SymmTridiagMatrix(double[] diag, double[] offDiag, int n)
      Constructor for SymmTridiagMatrix
      Parameters:
      diag - Main diagonal
      offDiag - Offdiagonals, both upper and lower
      n - Size of the matrix. The main diagonal must be at least as long as n, and the off diagonal part must be at least as long as n-1
    • SymmTridiagMatrix

      public SymmTridiagMatrix(double[] diag, double[] offDiag)
      Constructor for SymmTridiagMatrix
      Parameters:
      diag - Main diagonal
      offDiag - Offdiagonals. Must be one shorter than diag
    • SymmTridiagMatrix

      public SymmTridiagMatrix(int n)
      Constructor for SymmTridiagMatrix
      Parameters:
      n - Size of the matrix. Since the matrix must be square, this equals both the number of rows and columns. n cannot be zero
    • SymmTridiagMatrix

      public SymmTridiagMatrix(Matrix A)
      Constructor for SymmTridiagMatrix
      Parameters:
      A - Matrix to copy contents from. Only main and the superdiagonal is copied over
    • SymmTridiagMatrix

      public SymmTridiagMatrix(Matrix A, boolean deep)
      Constructor for SymmTridiagMatrix
      Parameters:
      A - Matrix to copy contents from. Only main and the superdiagonal is copied over. It must be square and cannot have any zero dimension lengths
      deep - True for a deep copy. For shallow copies A must be a SymmTridiagMatrix
  • Method Details

    • getDiagonal

      public double[] getDiagonal()
      Returns the diagonal entries. Length equal n
    • getOffDiagonal

      public double[] getOffDiagonal()
      Returns the off diagonal entries. Length equal n-1
    • 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
      Overrides:
      add in class AbstractMatrix
    • get

      public double get(int row, int column)
      Description copied from interface: Matrix
      Returns A(row,column)
      Specified by:
      get in interface Matrix
      Overrides:
      get in class AbstractMatrix
    • 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
      Overrides:
      set in class AbstractMatrix
    • copy

      public SymmTridiagMatrix copy()
      Description copied from interface: Matrix
      Creates a deep copy of the matrix
      Specified by:
      copy in interface Matrix
      Overrides:
      copy in class AbstractMatrix
      Returns:
      A
    • zero

      public SymmTridiagMatrix 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
      Overrides:
      zero in class AbstractMatrix
      Returns:
      A
    • 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
    • transpose

      public Matrix transpose()
      Description copied from interface: Matrix
      Transposes the matrix in-place. In most cases, the matrix must be square for this to work.
      Specified by:
      transpose in interface Matrix
      Overrides:
      transpose in class AbstractMatrix
      Returns:
      This matrix
    • iterator

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