Navigation

Operators and Keywords

Function List:

C++ API

: R = chol (A)
: [R, p] = chol (A)
: [R, p, Q] = chol (A)
: [R, p, Q] = chol (A, "vector")
: [L, …] = chol (…, "lower")
: [R, …] = chol (…, "upper")

Compute the upper Cholesky factor, R, of the real symmetric or complex Hermitian positive definite matrix A.

The upper Cholesky factor R is computed by using the upper triangular part of matrix A and is defined by

R' * R = A.

Calling chol using the optional "upper" flag has the same behavior. In contrast, using the optional "lower" flag, chol returns the lower triangular factorization, computed by using the lower triangular part of matrix A, such that

L * L' = A.

Called with one output argument chol fails if matrix A is not positive definite. Note that if matrix A is not real symmetric or complex Hermitian then the lower triangular part is considered to be the (complex conjugate) transpose of the upper triangular part, or vice versa, given the "lower" flag.

Called with two or more output arguments p flags whether the matrix A was positive definite and chol does not fail. A zero value of p indicates that matrix A is positive definite and R gives the factorization. Otherwise, p will have a positive value.

If called with three output arguments matrix A must be sparse and a sparsity preserving row/column permutation is applied to matrix A prior to the factorization. That is R is the factorization of A(Q,Q) such that

R' * R = Q' * A * Q.

The sparsity preserving permutation is generally returned as a matrix. However, given the optional flag "vector", Q will be returned as a vector such that

R' * R = A(Q, Q).

In general the lower triangular factorization is significantly faster for sparse matrices.

See also: hess, lu, qr, qz, schur, svd, ichol, cholinv, chol2inv, cholupdate, cholinsert, choldelete, cholshift.

Package: octave