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 
LUTridiagonal  LU factorization for Tridiagonal matrices 
UmfpackLU  LU factorization for sparse matrices (computed by UMFPack) 
QR  QR factorization 
QRCompactWY  Compact WY form of the QR 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 
UpperTriangular  Upper triangular matrix 
LowerTriangular  Lower triangular matrix 
Tridiagonal  Tridiagonal matrix 
SymTridiagonal  Symmetric tridiagonal matrix 
Bidiagonal  Upper/lower bidiagonal matrix 
Diagonal  Diagonal matrix 
UniformScaling  Uniform scaling operator 
Matrix type  +    *  \  Other functions with optimized methods 

Hermitian  MV 
inv() , sqrtm() , expm()
 
UpperTriangular  MV  MV 
inv() , det()
 
LowerTriangular  MV  MV 
inv() , det()
 
SymTridiagonal  M  M  MS  MV 
eigmax() , eigmin()

Tridiagonal  M  M  MS  MV  
Bidiagonal  M  M  MS  MV  
Diagonal  M  M  MV  MV 
inv() , det() , logdet() , /()

UniformScaling  M  M  MVS  MVS  /() 
Legend:
M (matrix)  An optimized method for matrixmatrix operations is available 
V (vector)  An optimized method for matrixvector operations is available 
S (scalar)  An optimized method for matrixscalar operations is available 
Matrix type  LAPACK  eig()  eigvals()  eigvecs()  svd()  svdvals() 

Hermitian  HE  ARI  
UpperTriangular  TR  A  A  A  
LowerTriangular  TR  A  A  A  
SymTridiagonal  ST  A  ARI  AV  
Tridiagonal  GT  
Bidiagonal  BD  A  A  
Diagonal  DI  A 
Legend:
A (all)  An optimized method to find all the characteristic values and/or vectors is available  e.g. eigvals(M)

R (range)  An optimized method to find the il ^{th} through the ih ^{th} characteristic values are available  eigvals(M, il, ih) 
I (interval)  An optimized method to find the characteristic values in the interval [vl , vh ] is available  eigvals(M, vl, vh) 
V (vectors)  An optimized method to find the characteristic vectors corresponding to the characteristic values x=[x1, x2,...] is available  eigvecs(M, x) 
A UniformScaling
operator represents a scalar times the identity operator, λ*I
. The identity operator I
is defined as a constant and is an instance of UniformScaling
. The size of these operators are generic and match the other matrix in the binary operations +
, 
, *
and \
. For A+I
and AI
this means that A
must be square. Multiplication with the identity operator I
is a noop (except for checking that the scaling factor is one) and therefore almost without overhead.
© 2009–2016 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
http://docs.julialang.org/en/release0.5/manual/linearalgebra/