org.jutil.math.matrix
Interface QRDecomposition

All Known Implementing Classes:
HouseholderQRDecomposition

public interface QRDecomposition

This class represents a QR factorization of a matrix. The methods Qtimes and QtranposeTimes are provide because the matrix Q itself isn't interesting most of the times, and isn't required explicitly to calculate Q * x and transpose(Q) * x.


Class Specifications
public invariant Q().getNbColumns() == R().getNbRows();

Field Summary
static java.lang.String CVS_REVISION
           
 
Method Summary
abstract  Matrix Q()
          Return the Q matrix of this QR factorization.
abstract  Matrix Qreduced()
          Return the reduced Q matrix.
abstract  Column QreducedTimes(Column column)
          Return Qreduced().times(column)
abstract  Column QreducedTransposeTimes(Column column)
          Return Qreduced().returnTranspose().times(column)
abstract  Column Qtimes(Column column)
          Return Q().times(column)
abstract  Column QtransposeTimes(Column column)
          Return Q().returnTranspose().times(column)
abstract  Matrix R()
          Return the R matrix of this QR factorization.
abstract  Matrix Rreduced()
          Return the reduced R matrix.
 

Field Detail

CVS_REVISION

public static final java.lang.String CVS_REVISION
Method Detail

Q

public abstract Matrix Q()
Return the Q matrix of this QR factorization.

Specifications:
public behavior
ensures \result != null;
ensures \result .getNbRows() == R().getNbRows();
ensures \result .getNbColumns() == R().getNbRows();

R

public abstract Matrix R()
Return the R matrix of this QR factorization.

Specifications:
public behavior
ensures \result != null;
ensures \result .isUpperTriangular();

Qreduced

public abstract Matrix Qreduced()
Return the reduced Q matrix.

Specifications:
public behavior
ensures \result .equals(Q().subMatrix(1,1,Q().getNbRows(),R().getNbColumns()));

Rreduced

public abstract Matrix Rreduced()
Return the reduced R matrix.

Specifications:
public behavior
ensures \result .equals(R().subMatrix(1,1,R().getNbColumns(),R().getNbColumns()));

Qtimes

public abstract Column Qtimes(Column column)
Return Q().times(column)

Parameters:
column - The vector with which Q() must be multiplied

Specifications:
public behavior
requires column != null;
requires column.size() == Q().getNbColumns();
ensures \result .equals(Q().times(column));

QreducedTimes

public abstract Column QreducedTimes(Column column)
Return Qreduced().times(column)

Parameters:
column - The vector with which Qreduced must be multiplied

Specifications:
public behavior
requires column != null;
requires column.size() == Qreduced().getNbColumns();
ensures \result .equals(Qreduced().times(column));

QtransposeTimes

public abstract Column QtransposeTimes(Column column)
Return Q().returnTranspose().times(column)

Parameters:
column - The vector with which Q must be multiplied

Specifications:
public behavior
requires column != null;
requires column.size() == Q().getNbRows();
ensures \result .equals(Q().returnTranspose().times(column));

QreducedTransposeTimes

public abstract Column QreducedTransposeTimes(Column column)
Return Qreduced().returnTranspose().times(column)

Parameters:
column - The vector with which Q must be multiplied

Specifications:
public behavior
requires column != null;
requires column.size() == Qreduced().getNbRows();
ensures \result .equals(Qreduced().returnTranspose().times(column));