Cholesky Decomposition
Cholesky decomposition is a matrix factorization technique that decomposes a symmetric positive-definite matrix
into a product of a lower triangular matrix and its conjugate transpose.
Because of numerical stability and superior efficiency in comparison with other methods,
Cholesky decomposition is widely used in numerical methods for solving symmetric linear systems.
It is also used in non-linear optimization problems, Monte Carlo simulation, and Kalman filtration.
Details
Given a symmetric positive-definite matrix
,
the problem is to compute the Cholesky decomposition
, where
X
of size
L
is a lower triangular matrix.Batch Processing
Algorithm Input
Cholesky decomposition accepts the input described below.
Pass the
Input ID
as a parameter to the methods that provide input for your algorithm.
For more details, see Algorithms.Input ID | Input |
---|---|
data | Pointer to the
X for which the Cholesky decomposition is computed.The input can be an object of any class derived from NumericTable that can represent symmetric matrices.
For example, the PackedTriangularMatrix class cannot represent a symmetric matrix. |
Algorithm Parameters
Cholesky decomposition has the following parameters:
Parameter | Default Value | Description |
---|---|---|
algorithmFPType | float | The floating-point type that the algorithm uses for intermediate computations. Can be float or double . |
method | defaultDense | Performance-oriented computation method, the only method supported by the algorithm. |
Algorithm Output
Cholesky decomposition calculates the result described below.
Pass the
Result ID
as a parameter to the methods that access the results of your algorithm.
For more details, see Algorithms.Result ID | Result |
---|---|
choleskyFactor | Pointer to the
L (Cholesky factor).By default, the result is an object of the HomogenNumericTable class, but you can define the result as an object of any class
derived from NumericTable except the PackedSymmetricMatrix class, СSRNumericTable class, and PackedTriangularMatrix class
with the upperPackedTriangularMatrix layout. |
Examples
C++ (CPU)
Batch Processing:
Java*
Python*
Batch Processing:
Performance Considerations
To get the best overall performance when Cholesky decomposition:
- If input data is homogeneous, for input matrixXand output matrixLuse homogeneous numeric tables of the same type as specified in thealgorithmFPTypeclass template parameter.
- If input data is non-homogeneous, use AOS layout rather than SOA layout.
Optimization Notice |
---|
Intel’s compilers may or may not optimize to the same degree for
non-Intel microprocessors for optimizations that are not unique to
Intel microprocessors. These optimizations include SSE2, SSE3, and
SSSE3 instruction sets and other optimizations. Intel does not
guarantee the availability, functionality, or effectiveness of any
optimization on microprocessors not manufactured by Intel.
Microprocessor-dependent optimizations in this product are intended
for use with Intel microprocessors. Certain optimizations not
specific to Intel microarchitecture are reserved for Intel
microprocessors. Please refer to the applicable product User and
Reference Guides for more information regarding the specific
instruction sets covered by this notice. Notice revision #20110804 |