Symbolic LDL and Cholesky factorization algorithms are meant for symmetric positive definite systems; hence, again, only the lower-triangular part of the matrix must be provided. The PROC IML function SOLVELIN provides an interface to both algorithms; the minimum degree ordering heuristic is invoked automatically as follows:
SOLVELIN (x, status, A, b, method)
solution vector
status indicator 0 success, 1 matrix is not positive-definite, 2 out of memory
sparse matrix (lower-triangular part)
vector of right-hand sides
a character string, which specifies factorization type, possible values: "LDL" for LDL factorization, and "CHOL" for Cholesky.
The code for this example is as follows:
/* value row col */ A = { 3 1 1, 1 2 1, 4 2 2, 1 3 2, 3 4 2, 10 3 3, 3 4 4 }; /* right-hand side */ b = {1, 1, 1, 1}; /* invoke LDL factorization */ call solvelin (x, status, a, b, "LDL"); print x; /* print solution */
Here is the program output:
X 0.5882353 -0.764706 0.1764706 1.0980392