Documentation of 'mikera.matrixx.decompose.impl.qr.HouseholderQR' Java class
HouseholderQR
mikera.matrixx.decompose.impl.qr

Class HouseholderQR

  • All Implemented Interfaces:
    QRDecomposition


    public class HouseholderQR
    extends java.lang.Object
    implements QRDecomposition

    This variation of QR decomposition uses reflections to compute the Q matrix. Each reflection uses a householder operations, hence its name. To provide a meaningful solution the original matrix must have full rank. This is intended for processing of small to medium matrices.

    Both Q and R are stored in the same m by n matrix. Q is not stored directly, instead the u from Qk=(I-γ*u*uT) is stored. Decomposition requires about 2n*m2-2m2/3 flops.

    See the QR reflections algorithm described in:
    David S. Watkins, "Fundamentals of Matrix Computations" 2nd Edition, 2002

    For the most part this is a straight forward implementation. To improve performance on large matrices a column is written to an array and the order of some of the loops has been changed. This will degrade performance noticeably on small matrices. Since it is unlikely that the QR decomposition would be a bottle neck when small matrices are involved only one implementation is provided.

    • Constructor Detail

      • HouseholderQR

        public HouseholderQR(boolean compact)
    • Method Detail

      • getQR

        public AMatrix getQR()
        Returns a single matrix which contains the combined values of Q and R. This is possible since Q is symmetric and R is upper triangular.
        Returns:
        The combined Q R matrix.
      • getQ

        public AMatrix getQ()
        Returns:
        The Q matrix from the decomposition.
      • getR

        public AMatrix getR()
        Returns:
        The R matrix from the decomposition.
      • decompose

        public QRResult decompose(AMatrix A)

        In order to decompose the matrix 'A' it must have full rank. 'A' is a 'm' by 'n' matrix. It requires about 2n*m2-2m2/3 flops.

        The matrix provided here can be of different dimension than the one specified in the constructor. It just has to be smaller than or equal to it.

        Specified by:
        decompose in interface QRDecomposition
      • getGammas

        public double[] getGammas()

DMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.