Matrix factorizations (a.k.a. matrix decompositions) compute the factorization of a matrix into a product of matrices, and are one of the central concepts in linear algebra.
The following table summarizes the types of matrix factorizations that have been implemented in Julia. Details of their associated methods can be found in the Linear Algebra section of the standard library documentation.
Cholesky | Cholesky factorization |
CholeskyPivoted | Pivoted Cholesky factorization |
LU | LU factorization |
QRPivoted | Pivoted QR factorization |
Hessenberg | Hessenberg decomposition |
Eigen | Spectral decomposition |
SVD | Singular value decomposition |
GeneralizedSVD | Generalized SVD |
Matrices with special symmetries and structures arise often in linear algebra and are frequently associated with various matrix factorizations. Julia features a rich collection of special matrix types, which allow for fast computation with specialized routines that are specially developed for particular matrix types.
The following tables summarize the types of special matrices that have been implemented in Julia, as well as whether hooks to various optimized methods for them in LAPACK are available.
Hermitian | Hermitian matrix |
Triangular | Upper/lower triangular matrix |
Tridiagonal | Tridiagonal matrix |
SymTridiagonal | Symmetric tridiagonal matrix |
Bidiagonal | Upper/lower bidiagonal matrix |
Diagonal | Diagonal matrix |
Matrix type | + | - | * | \ | Other functions with optimized methods |
Hermitian | XY | inv, sqrtm, expm | |||
Triangular | XY | XY | inv, det | ||
SymTridiagonal | X | X | XZ | XY | eigmax/min |
Tridiagonal | X | X | XZ | XY | |
Bidiagonal | X | X | XZ | XY | |
Diagonal | X | X | XY | XY | inv, det, logdet, / |
Legend:
X | An optimized method for matrix-matrix operations is available |
Y | An optimized method for matrix-vector operations is available |
Z | An optimized method for matrix-scalar operations is available |
Matrix type |
|
Eigensystems | Singular values and vectors | |||
eig | eigvals | eigvecs | svd | svdvals | ||
Hermitian | HE | ABC | ||||
Triangular | TR | |||||
SymTridiagonal | ST | A | ABC | AD | ||
Tridiagonal | GT | |||||
Bidiagonal | BD | A | A | |||
Diagonal | DI | A |
Legend:
A | An optimized method to find all the characteristic values and/or vectors is available | e.g. eigvals(M) |
B | An optimized method to find the ilth through the ihth characteristic values are available | eigvals(M, il, ih) |
C | An optimized method to find the characteristic values in the interval [vl, vh] is available | eigvals(M, vl, vh) |
D | An optimized method to find the characteristic vectors corresponding to the characteristic values x=[x1, x2,...] is available | eigvecs(M, x) |