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