org.apache.commons.math.linear
Class QRDecompositionImpl

java.lang.Object
  extended by org.apache.commons.math.linear.QRDecompositionImpl
All Implemented Interfaces:
QRDecomposition

public class QRDecompositionImpl
extends java.lang.Object
implements QRDecomposition

Calculates the QR-decomposition of a matrix.

The QR-decomposition of a matrix A consists of two matrices Q and R that satisfy: A = QR, Q is orthogonal (QTQ = I), and R is upper triangular. If A is m×n, Q is m×m and R m×n.

This class compute the decomposition using Householder reflectors.

For efficiency purposes, the decomposition in packed form is transposed. This allows inner loop to iterate inside rows, which is much more cache-efficient in Java.

Since:
1.2
Version:
$Revision: 990655 $ $Date: 2010-08-29 23:49:40 +0200 (dim. 29 août 2010) $
See Also:
MathWorld, Wikipedia

Nested Class Summary
private static class QRDecompositionImpl.Solver
          Specialized solver.
 
Field Summary
private  RealMatrix cachedH
          Cached value of H.
private  RealMatrix cachedQ
          Cached value of Q.
private  RealMatrix cachedQT
          Cached value of QT.
private  RealMatrix cachedR
          Cached value of R.
private  double[][] qrt
          A packed TRANSPOSED representation of the QR decomposition.
private  double[] rDiag
          The diagonal elements of R.
 
Constructor Summary
QRDecompositionImpl(RealMatrix matrix)
          Calculates the QR-decomposition of the given matrix.
 
Method Summary
 RealMatrix getH()
          Returns the Householder reflector vectors.
 RealMatrix getQ()
          Returns the matrix Q of the decomposition.
 RealMatrix getQT()
          Returns the transpose of the matrix Q of the decomposition.
 RealMatrix getR()
          Returns the matrix R of the decomposition.
 DecompositionSolver getSolver()
          Get a solver for finding the A × X = B solution in least square sense.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

qrt

private double[][] qrt
A packed TRANSPOSED representation of the QR decomposition.

The elements BELOW the diagonal are the elements of the UPPER triangular matrix R, and the rows ABOVE the diagonal are the Householder reflector vectors from which an explicit form of Q can be recomputed if desired.


rDiag

private double[] rDiag
The diagonal elements of R.


cachedQ

private RealMatrix cachedQ
Cached value of Q.


cachedQT

private RealMatrix cachedQT
Cached value of QT.


cachedR

private RealMatrix cachedR
Cached value of R.


cachedH

private RealMatrix cachedH
Cached value of H.

Constructor Detail

QRDecompositionImpl

public QRDecompositionImpl(RealMatrix matrix)
Calculates the QR-decomposition of the given matrix.

Parameters:
matrix - The matrix to decompose.
Method Detail

getR

public RealMatrix getR()
Returns the matrix R of the decomposition.

R is an upper-triangular matrix

Specified by:
getR in interface QRDecomposition
Returns:
the R matrix

getQ

public RealMatrix getQ()
Returns the matrix Q of the decomposition.

Q is an orthogonal matrix

Specified by:
getQ in interface QRDecomposition
Returns:
the Q matrix

getQT

public RealMatrix getQT()
Returns the transpose of the matrix Q of the decomposition.

Q is an orthogonal matrix

Specified by:
getQT in interface QRDecomposition
Returns:
the Q matrix

getH

public RealMatrix getH()
Returns the Householder reflector vectors.

H is a lower trapezoidal matrix whose columns represent each successive Householder reflector vector. This matrix is used to compute Q.

Specified by:
getH in interface QRDecomposition
Returns:
a matrix containing the Householder reflector vectors

getSolver

public DecompositionSolver getSolver()
Get a solver for finding the A × X = B solution in least square sense.

Specified by:
getSolver in interface QRDecomposition
Returns:
a solver


Copyright (c) 2003-2011 Apache Software Foundation