- Extreme Optimization
- Documentation
- Vector and Matrix Library User's Guide
- Matrix Decompositions
- The LU Decomposition
- The QR Decomposition
- The Cholesky Decomposition
- The Symmetric Indefinite Decomposition
- The Eigenvalue Decomposition
- The Generalized Eigenvalue Decomposition
- The Singular Value Decomposition
- The Generalized Singular Value Decomposition
- Non-Negative Matrix Factorization
- Solving Linear Systems

- The Cholesky Decomposition

## The Cholesky Decomposition | Extreme Optimization Numerical Libraries for .NET Professional |

The Cholesky decomposition or Cholesky factorization of a matrix is defined only for positive-definite symmetric or Hermitian matrices. It expresses a matrix as the product of a lower triangular matrix and its transpose.

The Cholesky decomposition algorithm exploits the special structure of symmetric matrices. As a result, it is about twice as fast as the Cholesky decomposition. Moreover, the decomposition is fairly stable, so it is suitable for use in a broader range of problems.

The Cholesky decomposition of a matrix is implemented by the
CholeskyDecomposition

var A = Matrix.CreateSymmetric(4, new double[] { 4.16,-3.12, 0.56,-0.10, 0 , 5.03,-0.83, 1.18, 0 , 0 , 0.76, 0.34, 0 , 0 , 0 , 1.18 }, MatrixTriangle.Upper, MatrixElementOrder.RowMajor); var c = A.GetCholeskyDecomposition();

The Decompose method performs the actual decomposition. This method copies the matrix if necessary. It then calls the appropriate LAPACK routine to perform the actual decomposition. This method is called by other methods as needed. You will rarely need to call it explicitly.

If the matrix is not positive definite a
MatrixNotPositiveDefiniteException
is thrown. The TryDecompose
method performs the same operation, but never throws an exception.
Instead, it returns

Once the decomposition is computed, a number of operations can be performed in much less time. You can repeatedly solve a system of linear equations with different right-hand sides. You can also calculate the determinant and the inverse of the matrix:

var b = Matrix.Create(4, 2, new double[] { 8.70,-13.35, 1.89,-4.14, 8.30, 2.13, 1.61, 5.00 }, MatrixElementOrder.ColumnMajor); var x = c.Solve(b); var invA = c.GetInverse(); var detA = c.GetDeterminant();

The LowerTriangularFactor
property returns a TriangularMatrix

The Cholesky decomposition of a symmetric band matrix is made up of a lower band matrix with lower bandwidth the same as the original matrix, and its transpose. The band structure allows for significant savings in computation time over a full Cholesky decomposition. No specific action is needed to take advantage of this: the most suitable form of the decomposition is chosen automatically.

Copyright Â© 2004-2021,
Extreme Optimization. All rights reserved.

*Extreme Optimization,* *Complexity made simple*, *M#*, and *M
Sharp* are trademarks of ExoAnalytics Inc.

*Microsoft*, *Visual C#, Visual Basic, Visual Studio*, *Visual
Studio.NET*, and the *Optimized for Visual Studio* logo

are
registered trademarks of Microsoft Corporation.