org.apache.commons.math3.linear

## Class BiDiagonalTransformer

- java.lang.Object
- - org.apache.commons.math3.linear.BiDiagonalTransformer

-      class BiDiagonalTransformer
      extends Object

  Class transforming any matrix to bi-diagonal shape.

  Any m × n matrix A can be written as the product of three matrices: A = U × B × VT with U an m × m orthogonal matrix, B an m × n bi-diagonal matrix (lower diagonal if m < n, upper diagonal otherwise), and V an n × n orthogonal matrix.

  Transformation to bi-diagonal shape is often not a goal by itself, but it is an intermediate step in more general decomposition algorithms like `Singular Value Decomposition`. This class is therefore intended for internal use by the library and is not public. As a consequence of this explicitly limited scope, many methods directly returns references to internal arrays, not copies.

  Since:
    2.0
  Version:
    $Id: BiDiagonalTransformer.java 1416643 2012-12-03 19:37:14Z tn $

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private RealMatrix` | `cachedB` Cached value of B.
    `private RealMatrix` | `cachedU` Cached value of U.
    `private RealMatrix` | `cachedV` Cached value of V.
    `private double[][]` | `householderVectors` Householder vectors.
    `private double[]` | `main` Main diagonal.
    `private double[]` | `secondary` Secondary diagonal.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BiDiagonalTransformer(RealMatrix matrix)` Build the transformation to bi-diagonal shape of a matrix.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `RealMatrix` | `getB()` Returns the bi-diagonal matrix B of the transform.
    `(package private) double[][]` | `getHouseholderVectorsRef()` Get the Householder vectors of the transform.
    `(package private) double[]` | `getMainDiagonalRef()` Get the main diagonal elements of the matrix B of the transform.
    `(package private) double[]` | `getSecondaryDiagonalRef()` Get the secondary diagonal elements of the matrix B of the transform.
    `RealMatrix` | `getU()` Returns the matrix U of the transform.
    `RealMatrix` | `getV()` Returns the matrix V of the transform.
    `(package private) boolean` | `isUpperBiDiagonal()` Check if the matrix is transformed to upper bi-diagonal.
    `private void` | `transformToLowerBiDiagonal()` Transform original matrix to lower bi-diagonal form.
    `private void` | `transformToUpperBiDiagonal()` Transform original matrix to upper bi-diagonal form.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### householderVectors

          private final double[][] householderVectors

      Householder vectors.

    - #### main

          private final double[] main

      Main diagonal.

    - #### secondary

          private final double[] secondary

      Secondary diagonal.

    - #### cachedU

          private RealMatrix cachedU

      Cached value of U.

    - #### cachedB

          private RealMatrix cachedB

      Cached value of B.

    - #### cachedV

          private RealMatrix cachedV

      Cached value of V.

  - ### Constructor Detail

    - #### BiDiagonalTransformer

          public BiDiagonalTransformer(RealMatrix matrix)

      Build the transformation to bi-diagonal shape of a matrix.
      Parameters:
        `matrix` - the matrix to transform.

  - ### Method Detail

    - #### getU

          public RealMatrix getU()

      Returns the matrix U of the transform.

      U is an orthogonal matrix, i.e. its transpose is also its inverse.

      Returns:
        the U matrix

    - #### getB

          public RealMatrix getB()

      Returns the bi-diagonal matrix B of the transform.
      Returns:
        the B matrix

    - #### getV

          public RealMatrix getV()

      Returns the matrix V of the transform.

      V is an orthogonal matrix, i.e. its transpose is also its inverse.

      Returns:
        the V matrix

    - #### getHouseholderVectorsRef

          double[][] getHouseholderVectorsRef()

      Get the Householder vectors of the transform.

      Note that since this class is only intended for internal use, it returns directly a reference to its internal arrays, not a copy.

      Returns:
        the main diagonal elements of the B matrix

    - #### getMainDiagonalRef

          double[] getMainDiagonalRef()

      Get the main diagonal elements of the matrix B of the transform.

      Note that since this class is only intended for internal use, it returns directly a reference to its internal arrays, not a copy.

      Returns:
        the main diagonal elements of the B matrix

    - #### getSecondaryDiagonalRef

          double[] getSecondaryDiagonalRef()

      Get the secondary diagonal elements of the matrix B of the transform.

      Note that since this class is only intended for internal use, it returns directly a reference to its internal arrays, not a copy.

      Returns:
        the secondary diagonal elements of the B matrix

    - #### isUpperBiDiagonal

          boolean isUpperBiDiagonal()

      Check if the matrix is transformed to upper bi-diagonal.
      Returns:
        true if the matrix is transformed to upper bi-diagonal

    - #### transformToUpperBiDiagonal

          private void transformToUpperBiDiagonal()

      Transform original matrix to upper bi-diagonal form.

      Transformation is done using alternate Householder transforms on columns and rows.

    - #### transformToLowerBiDiagonal

          private void transformToLowerBiDiagonal()

      Transform original matrix to lower bi-diagonal form.

      Transformation is done using alternate Householder transforms on rows and columns.

Copyright (c) 2003-2013 Apache Software Foundation