Skip to contents

Letting be or , the Cholesky decomposition of a complex Hermitian or real symmetric positive-definite matrix is defined as

Usage

linalg_cholesky(A)

Arguments

A

(Tensor): tensor of shape (*, n, n) where * is zero or more batch dimensions consisting of symmetric or Hermitian positive-definite matrices.

Details

A=LLHLKn×n A = LL^{H}\mathrlap{\qquad L \in \mathbb{K}^{n \times n}}

where is a lower triangular matrix and is the conjugate transpose when is complex, and the transpose when is real-valued.

Supports input of float, double, cfloat and cdouble dtypes. Also supports batches of matrices, and if A is a batch of matrices then the output has the same batch dimensions.

See also

  • linalg_cholesky_ex() for a version of this operation that skips the (slow) error checking by default and instead returns the debug information. This makes it a faster way to check if a matrix is positive-definite. linalg_eigh() for a different decomposition of a Hermitian matrix. The eigenvalue decomposition gives more information about the matrix but it slower to compute than the Cholesky decomposition.

Other linalg: linalg_cholesky_ex(), linalg_det(), linalg_eigh(), linalg_eigvalsh(), linalg_eigvals(), linalg_eig(), linalg_householder_product(), linalg_inv_ex(), linalg_inv(), linalg_lstsq(), linalg_matrix_norm(), linalg_matrix_power(), linalg_matrix_rank(), linalg_multi_dot(), linalg_norm(), linalg_pinv(), linalg_qr(), linalg_slogdet(), linalg_solve(), linalg_svdvals(), linalg_svd(), linalg_tensorinv(), linalg_tensorsolve(), linalg_vector_norm()

Examples

if (torch_is_installed()) {
a <- torch_eye(10)
linalg_cholesky(a)
}
#> torch_tensor
#>  1  0  0  0  0  0  0  0  0  0
#>  0  1  0  0  0  0  0  0  0  0
#>  0  0  1  0  0  0  0  0  0  0
#>  0  0  0  1  0  0  0  0  0  0
#>  0  0  0  0  1  0  0  0  0  0
#>  0  0  0  0  0  1  0  0  0  0
#>  0  0  0  0  0  0  1  0  0  0
#>  0  0  0  0  0  0  0  1  0  0
#>  0  0  0  0  0  0  0  0  1  0
#>  0  0  0  0  0  0  0  0  0  1
#> [ CPUFloatType{10,10} ]