org.jutil.math.matrix
Class HouseholderQRDecomposition

java.lang.Object
  |
  +--org.jutil.math.matrix.HouseholderQRDecomposition
All Implemented Interfaces:
QRDecomposition

public class HouseholderQRDecomposition
extends java.lang.Object
implements QRDecomposition

This class represents a HouseHolder QR factorization of a matrix.


Specifications inherited from interface QRDecomposition
public invariant Q().getNbColumns() == R().getNbRows();

Field Summary
static java.lang.String CVS_REVISION
           
 
Constructor Summary
HouseholderQRDecomposition(Matrix R, Column[] vs)
          Initialize a new HouseholderQRDecomposition combination with the given R matrix and v vectors.
 
Method Summary
 Column getV(int i)
          Return the i-th v vector as computed by the Householder algorithm that computed this QR decomposition.
 Matrix Q()
          See superclass
 Matrix Qreduced()
          See superclass
 Column QreducedTimes(Column column)
          See superclass
 Column QreducedTransposeTimes(Column column)
          See superclass
 Column Qtimes(Column column)
          See superclass
 Column QtransposeTimes(Column column)
          See superclass
 Matrix R()
          See superclass
 Matrix Rreduced()
          See superclass
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CVS_REVISION

public static final java.lang.String CVS_REVISION
Constructor Detail

HouseholderQRDecomposition

public HouseholderQRDecomposition(Matrix R,
                                  Column[] vs)
Initialize a new HouseholderQRDecomposition combination with the given R matrix and v vectors.

Parameters:
R - The R matrix of the QR factorization
vs - An array of v vectors produce by the HouseHolder factorization The first vector of the algorithm is at position -, the last vector is at position vs.length - 1

Specifications:
public behavior
requires R != null;
requires R.isUpperTriangular();
requires vs != null;
requires vs.length == R.getNbRows();
requires ( \forall int i; i >= 0&&i < vs.length; (vs[i] != null)&&(vs[i].size() == R.getNbRows()-i));
ensures R().equals(R);
ensures ( \forall int i; i >= 1&&i <= vs.length; getV(i).equals(vs[i-1]));
Method Detail

R

public Matrix R()
See superclass
Specifications inherited from overridden method in interface QRDecomposition:
public behavior
ensures \result != null;
ensures \result .isUpperTriangular();

getV

public Column getV(int i)

Return the i-th v vector as computed by the Householder algorithm that computed this QR decomposition.

Parameters:
i -

The index of the requested v vector. Indices start from 1.


Q

public Matrix Q()
See superclass
Specifications inherited from overridden method in interface QRDecomposition:
public behavior
ensures \result != null;
ensures \result .getNbRows() == R().getNbRows();
ensures \result .getNbColumns() == R().getNbRows();

Qreduced

public Matrix Qreduced()
See superclass
Specifications inherited from overridden method in interface QRDecomposition:
public behavior
ensures \result .equals(Q().subMatrix(1,1,Q().getNbRows(),R().getNbColumns()));

Rreduced

public Matrix Rreduced()
See superclass
Specifications inherited from overridden method in interface QRDecomposition:
public behavior
ensures \result .equals(R().subMatrix(1,1,R().getNbColumns(),R().getNbColumns()));

Qtimes

public Column Qtimes(Column column)
See superclass
Specifications inherited from overridden method in interface QRDecomposition:
public behavior
requires column != null;
requires column.size() == Q().getNbColumns();
ensures \result .equals(Q().times(column));

QreducedTimes

public Column QreducedTimes(Column column)
See superclass
Specifications inherited from overridden method in interface QRDecomposition:
public behavior
requires column != null;
requires column.size() == Qreduced().getNbColumns();
ensures \result .equals(Qreduced().times(column));

QtransposeTimes

public Column QtransposeTimes(Column column)
See superclass
Specifications inherited from overridden method in interface QRDecomposition:
public behavior
requires column != null;
requires column.size() == Q().getNbRows();
ensures \result .equals(Q().returnTranspose().times(column));

QreducedTransposeTimes

public Column QreducedTransposeTimes(Column column)
See superclass
Specifications inherited from overridden method in interface QRDecomposition:
public behavior
requires column != null;
requires column.size() == Qreduced().getNbRows();
ensures \result .equals(Qreduced().returnTranspose().times(column));