no.uib.cipr.matrix
Class UpperSymmDenseMatrix

java.lang.Object
  extended by no.uib.cipr.matrix.AbstractMatrix
      extended by no.uib.cipr.matrix.UpperSymmDenseMatrix
All Implemented Interfaces:
java.lang.Iterable<MatrixEntry>, Matrix
Direct Known Subclasses:
UpperSPDDenseMatrix

public class UpperSymmDenseMatrix
extends AbstractMatrix

Upper symmetrix dense matrix. It has the same storage layout as the DenseMatrix, but only refers to elements above or on the main diagonal. The remaining elements are never accessed nor changed, and is known only by symmetry.


Nested Class Summary
 
Nested classes/interfaces inherited from interface no.uib.cipr.matrix.Matrix
Matrix.Norm
 
Field Summary
 
Fields inherited from class no.uib.cipr.matrix.AbstractMatrix
numColumns, numRows
 
Constructor Summary
UpperSymmDenseMatrix(int n)
          Constructor for UpperSymmDenseMatrix
UpperSymmDenseMatrix(Matrix A)
          Constructor for UpperSymmDenseMatrix
UpperSymmDenseMatrix(Matrix A, boolean deep)
          Constructor for UpperSymmDenseMatrix
 
Method Summary
 void add(int row, int column, double value)
          A(row,column) += value
 UpperSymmDenseMatrix copy()
          Creates a deep copy of the matrix
 double get(int row, int column)
          Returns A(row,column)
 double[] getData()
          Returns the matrix contents.
 Matrix multAdd(double alpha, Matrix B, Matrix C)
          C = alpha*A*B + C
 Vector multAdd(double alpha, Vector x, Vector y)
          y = alpha*A*x + y
 Matrix rank1(double alpha, Matrix C)
          A = alpha*C*CT + A.
 Matrix rank1(double alpha, Vector x, Vector y)
          A = alpha*x*yT + A.
 Matrix rank2(double alpha, Matrix B, Matrix C)
          A = alpha*B*CT + alpha*C*BT + A.
 Matrix rank2(double alpha, Vector x, Vector y)
          A = alpha*x*yT + alpha*y*xT + A.
 void set(int row, int column, double value)
          A(row,column) = value
 Matrix set(Matrix B)
          A=B.
 Matrix solve(Matrix B, Matrix X)
          X = A\B.
 Vector solve(Vector b, Vector x)
          x = A\b.
 Matrix transAmultAdd(double alpha, Matrix B, Matrix C)
          C = alpha*AT*B + C
 Vector transMultAdd(double alpha, Vector x, Vector y)
          y = alpha*AT*x + y
 Matrix transpose()
          Transposes the matrix in-place.
 Matrix transRank1(double alpha, Matrix C)
          A = alpha*CT*C + A The matrices must be square and of the same size
 Matrix transRank2(double alpha, Matrix B, Matrix C)
          A = alpha*BT*C + alpha*CT*B + A.
 Matrix transSolve(Matrix B, Matrix X)
          X = AT\B.
 Vector transSolve(Vector b, Vector x)
          x = AT\b.
 Matrix zero()
          Zeros all the entries in the matrix, while preserving any underlying structure.
 
Methods inherited from class no.uib.cipr.matrix.AbstractMatrix
add, add, check, checkMultAdd, checkMultAdd, checkRank1, checkRank1, checkRank2, checkRank2, checkSize, checkSolve, checkSolve, checkTransABmultAdd, checkTransAmultAdd, checkTransBmultAdd, checkTransMultAdd, checkTranspose, checkTranspose, checkTransRank1, checkTransRank2, isSquare, iterator, max, max, mult, mult, mult, mult, multAdd, multAdd, norm, norm1, normF, normInf, numColumns, numRows, rank1, rank1, rank1, rank1, rank2, rank2, scale, set, toString, transABmult, transABmult, transABmultAdd, transABmultAdd, transAmult, transAmult, transAmultAdd, transBmult, transBmult, transBmultAdd, transBmultAdd, transMult, transMult, transMultAdd, transpose, transRank1, transRank2
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

UpperSymmDenseMatrix

public UpperSymmDenseMatrix(int n)
Constructor for UpperSymmDenseMatrix

Parameters:
n - Size of the matrix. Since the matrix must be square, this equals both the number of rows and columns

UpperSymmDenseMatrix

public UpperSymmDenseMatrix(Matrix A)
Constructor for UpperSymmDenseMatrix

Parameters:
A - Matrix to copy. It must be a square matrix, and only the upper triangular part is copied

UpperSymmDenseMatrix

public UpperSymmDenseMatrix(Matrix A,
                            boolean deep)
Constructor for UpperSymmDenseMatrix

Parameters:
A - Matrix to copy. It must be a square matrix, and only the upper triangular part is copied
deep - If false, a shallow copy is made. In that case, A must be a dense matrix
Method Detail

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

public UpperSymmDenseMatrix 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

multAdd

public Matrix multAdd(double alpha,
                      Matrix B,
                      Matrix C)
Description copied from interface: Matrix
C = alpha*A*B + C

Specified by:
multAdd in interface Matrix
Overrides:
multAdd in class AbstractMatrix
B - Matrix such that B.numRows() == A.numColumns() and B.numColumns() == C.numColumns()
C - Matrix such that C.numRows() == A.numRows() and B.numColumns() == C.numColumns()
Returns:
C

transAmultAdd

public Matrix transAmultAdd(double alpha,
                            Matrix B,
                            Matrix C)
Description copied from interface: Matrix
C = alpha*AT*B + C

Specified by:
transAmultAdd in interface Matrix
Overrides:
transAmultAdd in class AbstractMatrix
B - Matrix such that B.numRows() == A.numRows() and B.numColumns() == C.numColumns()
C - Matrix such that C.numRows() == A.numColumns() and B.numColumns() == C.numColumns()
Returns:
C

rank1

public Matrix rank1(double alpha,
                    Vector x,
                    Vector y)
Description copied from interface: Matrix
A = alpha*x*yT + A. The matrix must be square, and the vectors of the same length

Specified by:
rank1 in interface Matrix
Overrides:
rank1 in class AbstractMatrix
Returns:
A

rank2

public Matrix rank2(double alpha,
                    Vector x,
                    Vector y)
Description copied from interface: Matrix
A = alpha*x*yT + alpha*y*xT + A. The matrix must be square, and the vectors of the same length

Specified by:
rank2 in interface Matrix
Overrides:
rank2 in class AbstractMatrix
Returns:
A

multAdd

public Vector multAdd(double alpha,
                      Vector x,
                      Vector y)
Description copied from interface: Matrix
y = alpha*A*x + y

Specified by:
multAdd in interface Matrix
Overrides:
multAdd in class AbstractMatrix
x - Vector of size A.numColumns()
y - Vector of size A.numRows()
Returns:
y

transMultAdd

public Vector transMultAdd(double alpha,
                           Vector x,
                           Vector y)
Description copied from interface: Matrix
y = alpha*AT*x + y

Specified by:
transMultAdd in interface Matrix
Overrides:
transMultAdd in class AbstractMatrix
x - Vector of size A.numRows()
y - Vector of size A.numColumns()
Returns:
y

rank1

public Matrix rank1(double alpha,
                    Matrix C)
Description copied from interface: Matrix
A = alpha*C*CT + A. The matrices must be square and of the same size

Specified by:
rank1 in interface Matrix
Overrides:
rank1 in class AbstractMatrix
Returns:
A

transRank1

public Matrix transRank1(double alpha,
                         Matrix C)
Description copied from interface: Matrix
A = alpha*CT*C + A The matrices must be square and of the same size

Specified by:
transRank1 in interface Matrix
Overrides:
transRank1 in class AbstractMatrix
Returns:
A

rank2

public Matrix rank2(double alpha,
                    Matrix B,
                    Matrix C)
Description copied from interface: Matrix
A = alpha*B*CT + alpha*C*BT + A. This matrix must be square

Specified by:
rank2 in interface Matrix
Overrides:
rank2 in class AbstractMatrix
B - Matrix with the same number of rows as A and the same number of columns as C
C - Matrix with the same number of rows as A and the same number of columns as B
Returns:
A

transRank2

public Matrix transRank2(double alpha,
                         Matrix B,
                         Matrix C)
Description copied from interface: Matrix
A = alpha*BT*C + alpha*CT*B + A. This matrix must be square

Specified by:
transRank2 in interface Matrix
Overrides:
transRank2 in class AbstractMatrix
B - Matrix with the same number of rows as C and the same number of columns as A
C - Matrix with the same number of rows as B and the same number of columns as A
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

getData

public double[] getData()
Returns the matrix contents. Ordering depends on the underlying storage assumptions


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

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