org.apache.commons.math3.linear

## Class TriDiagonalTransformer

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

-      class TriDiagonalTransformer
      extends java.lang.Object

  Class transforming a symmetrical matrix to tridiagonal shape.

  A symmetrical m × m matrix A can be written as the product of three matrices: A = Q × T × QT with Q an orthogonal matrix and T a symmetrical tridiagonal matrix. Both Q and T are m × m matrices.

  This implementation only uses the upper part of the matrix, the part below the diagonal is not accessed at all.

  Transformation to tridiagonal shape is often not a goal by itself, but it is an intermediate step in more general decomposition algorithms like `eigen 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: TriDiagonalTransformer.java 1416643 2012-12-03 19:37:14Z tn $

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private RealMatrix` | `cachedQ` Cached value of Q.
    `private RealMatrix` | `cachedQt` Cached value of Qt.
    `private RealMatrix` | `cachedT` Cached value of T.
    `private double[][]` | `householderVectors` Householder vectors.
    `private double[]` | `main` Main diagonal.
    `private double[]` | `secondary` Secondary diagonal.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TriDiagonalTransformer(RealMatrix matrix)` Build the transformation to tridiagonal shape of a symmetrical matrix.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `(package private) double[][]` | `getHouseholderVectorsRef()` Get the Householder vectors of the transform.
    `(package private) double[]` | `getMainDiagonalRef()` Get the main diagonal elements of the matrix T of the transform.
    `RealMatrix` | `getQ()` Returns the matrix Q of the transform.
    `RealMatrix` | `getQT()` Returns the transpose of the matrix Q of the transform.
    `(package private) double[]` | `getSecondaryDiagonalRef()` Get the secondary diagonal elements of the matrix T of the transform.
    `RealMatrix` | `getT()` Returns the tridiagonal matrix T of the transform.
    `private void` | `transform()` Transform original matrix to tridiagonal 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.

    - #### cachedQ

          private RealMatrix cachedQ

      Cached value of Q.

    - #### cachedQt

          private RealMatrix cachedQt

      Cached value of Qt.

    - #### cachedT

          private RealMatrix cachedT

      Cached value of T.

  - ### Constructor Detail

    - #### TriDiagonalTransformer

          public TriDiagonalTransformer(RealMatrix matrix)

      Build the transformation to tridiagonal shape of a symmetrical matrix.

      The specified matrix is assumed to be symmetrical without any check. Only the upper triangular part of the matrix is used.

      Parameters:
        `matrix` - Symmetrical matrix to transform.
      Throws:
        `NonSquareMatrixException` - if the matrix is not square.

  - ### Method Detail

    - #### getQ

          public RealMatrix getQ()

      Returns the matrix Q of the transform.

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

      Returns:
        the Q matrix

    - #### getQT

          public RealMatrix getQT()

      Returns the transpose of the matrix Q of the transform.

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

      Returns:
        the Q matrix

    - #### getT

          public RealMatrix getT()

      Returns the tridiagonal matrix T of the transform.
      Returns:
        the T 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 T 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 T matrix

    - #### getSecondaryDiagonalRef

          double[] getSecondaryDiagonalRef()

      Get the secondary diagonal elements of the matrix T 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 T matrix

    - #### transform

          private void transform()

      Transform original matrix to tridiagonal form.

      Transformation is done using Householder transforms.

Copyright (c) 2003-2013 Apache Software Foundation