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

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

Field Summary
`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
`TriDiagonalTransformer(RealMatrix matrix)` Build the transformation to tridiagonal shape of a symmetrical matrix.

Method Summary
`(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)
                           throws InvalidMatrixException

  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` - the symmetrical matrix to transform.
  Throws:
    `InvalidMatrixException` - if 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-2010 Apache Software Foundation