Example: Sparse Cholesky Factorization
The Cholesky Factorization of a sparse symmetric positive definite matrix is computed. Some additional information about the Cholesky factorization is also computed.
using System;
using Imsl.Math;
public class SparseCholeskyEx1
{
public static void Main(String[] args)
{
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.NumericFactorizationMethod =
SparseCholesky.NumericFactorization.MultiFrontalMethod;
// Compute solution
double[] solution = cholesky.Solve(b);
new PrintMatrix("Computed Solution").Print(solution);
// Print additional information about the factorization
Console.Out.Write("Smallest diagonal element of Cholesky factor: ");
Console.Out.WriteLine(cholesky.SmallestDiagonalElement);
Console.Out.Write("Largest diagonal element of Cholesky factor: ");
Console.Out.WriteLine(cholesky.LargestDiagonalElement);
Console.Out.Write("Number of nonzeros in Cholesky factor: ");
Console.Out.WriteLine(cholesky.NumberOfNonzeros);
}
}
Output
Computed Solution
0
0 5
1 4
2 3
3 2
4 1
Smallest diagonal element of Cholesky factor: 3.16227766016838
Largest diagonal element of Cholesky factor: 7.01070609853244
Number of nonzeros in Cholesky factor: 11
Link to C# source.