# SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.algebra.linear.matrix.doubles.factorization.diagonalization

## Class BiDiagonalizationByGolubKahanLanczos

• java.lang.Object
• com.numericalmethod.suanshu.algebra.linear.matrix.doubles.factorization.diagonalization.BiDiagonalizationByGolubKahanLanczos
• All Implemented Interfaces:
BiDiagonalization

public class BiDiagonalizationByGolubKahanLanczos
extends Object
implements BiDiagonalization
This implementation uses Golub-Kahan-Lanczos algorithm with reorthogonalization. A tiny value epsilon is given for checking whether α or β equals to zero.
"G. H. Golub, C. F. van Loan, "Chapter 9.3.3, Bidiagonalization and the SVD," Matrix Computations, 3rd edition.", Golub-Kahan-Lanczos Bidiagonalization Procedure.
• ### Constructor Summary

Constructors
Constructor and Description
BiDiagonalizationByGolubKahanLanczos(Matrix A)
Runs the Golub-Kahan-Lanczos bi-diagonalization for a tall matrix.
BiDiagonalizationByGolubKahanLanczos(Matrix A, double epsilon, RandomLongGenerator rlg)
Runs the Golub-Kahan-Lanczos bi-diagonalization for a tall matrix.
BiDiagonalizationByGolubKahanLanczos(Matrix A, RandomLongGenerator rlg)
Runs the Golub-Kahan-Lanczos bi-diagonalization for a tall matrix.
• ### Method Summary

All Methods
Modifier and Type Method and Description
BidiagonalMatrix B()
Gets B, which is the square upper part of U.t().multiply(A).multiply(V).
Matrix U()
Gets U, where U' = Uk * ...
Matrix V()
Gets V, where V' = Vk * ...
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Constructor Detail

• #### BiDiagonalizationByGolubKahanLanczos

public BiDiagonalizationByGolubKahanLanczos(Matrix A)
Runs the Golub-Kahan-Lanczos bi-diagonalization for a tall matrix.
Parameters:
A - the tall matrix
• #### BiDiagonalizationByGolubKahanLanczos

public BiDiagonalizationByGolubKahanLanczos(Matrix A,
RandomLongGenerator rlg)
Runs the Golub-Kahan-Lanczos bi-diagonalization for a tall matrix.
Parameters:
A - the tall matrix
rlg - the random number generator for generation of the first column vector in V
• #### BiDiagonalizationByGolubKahanLanczos

public BiDiagonalizationByGolubKahanLanczos(Matrix A,
double epsilon,
RandomLongGenerator rlg)
Runs the Golub-Kahan-Lanczos bi-diagonalization for a tall matrix.
Parameters:
A - the tall matrix
epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0
rlg - the random number generator for picking the first column vector in V
• ### Method Detail

• #### B

public BidiagonalMatrix B()
Description copied from interface: BiDiagonalization
Gets B, which is the square upper part of U.t().multiply(A).multiply(V). The dimension of B is n x n.
Specified by:
B in interface BiDiagonalization
Returns:
B
• #### U

public Matrix U()
Description copied from interface: BiDiagonalization
Gets U, where U' = Uk * ... * U1, k = A.nCols(). The dimension of U is m x m.
Specified by:
U in interface BiDiagonalization
Returns:
U
• #### V

public Matrix V()
Description copied from interface: BiDiagonalization
Gets V, where V' = Vk * ... * V1, k = A.nCols() - 2. The dimension of V is n x n.
Specified by:
V in interface BiDiagonalization
Returns:
V