## org.apache.commons.math.linear
Class BiDiagonalTransformer

    java.lang.Object
      org.apache.commons.math.linear.BiDiagonalTransformer

     class BiDiagonalTransformer

extends java.lang.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:
  $Revision: 811685 $ $Date: 2009-09-05 13:36:48 -0400 (Sat, 05 Sep 2009) $

Field Summary
`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
`BiDiagonalTransformer(RealMatrix matrix)` Build the transformation to bi-diagonal shape of a matrix.

Method Summary
`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-2011 Apache Software Foundation