Example: Sparse Cholesky Factorization

The Cholesky Factorization of a sparse symmetric positive definite matrix is used to solve a linear system. Some additional information about the Cholesky factorization is also computed.

import com.imsl.math.*;

public class SparseCholeskyEx1 {

    public static void main(String args[]) throws Exception {

        SparseMatrix A = new SparseMatrix(5, 5);
        A.set(0, 0, 10.0);
        A.set(1, 1, 20.0);
        A.set(2, 0, 1.0);
        A.set(2, 2, 30.0);
        A.set(3, 2, 4.0);
        A.set(3, 3, 40.0);
        A.set(4, 0, 2.0);
        A.set(4, 1, 3.0);
        A.set(4, 3, 5.0);
        A.set(4, 4, 50.0);

        double b[] = {55.0, 83.0, 103.0, 97.0, 82.0};

        SparseCholesky cholesky = new SparseCholesky(A);

        // Choose Multifrontal method as numeric factorization method
        cholesky.setNumericFactorizationMethod(
                SparseCholesky.MULTIFRONTAL_METHOD);

        // Compute solution
        double solution[] = cholesky.solve(b);
        new PrintMatrix("Computed Solution").print(solution);

        // Print additional information about the factorization        
        System.out.println("Smallest diagonal element of Cholesky factor: "
                + cholesky.getSmallestDiagonalElement());
        System.out.println("Largest diagonal element of Cholesky factor: "
                + cholesky.getLargestDiagonalElement());
        System.out.println("Number of nonzeros in Cholesky factor: "
                + cholesky.getNumberOfNonzeros());
    }
}

Output

Computed Solution
   0  
0  5  
1  4  
2  3  
3  2  
4  1  

Smallest diagonal element of Cholesky factor: 3.1622776601683795
Largest diagonal element of Cholesky factor: 7.010706098532443
Number of nonzeros in Cholesky factor: 11
Link to Java source.