Example: Complex Sparse Cholesky Factorization
The Cholesky Factorization of a sparse hermitian positive definite matrix is used to solve a linear system. Some additional information about the Cholesky factorization is also computed.
import com.imsl.math.*;
import com.imsl.*;
public class ComplexSparseCholeskyEx1 {
public static void main(String args[]) throws IMSLException {
ComplexSparseMatrix A = new ComplexSparseMatrix(3,3);
A.set(0, 0, new Complex(2.0, 0.0));
A.set(1, 0, new Complex(-1.0, -1.0));
A.set(1, 1, new Complex(4.0, 0.0));
A.set(2, 1, new Complex(1.0, -2.0));
A.set(2, 2, new Complex(10.0, 0.0));
Complex[] b = {
new Complex(-2., 2.), new Complex(5., 15.), new Complex(36., 28.)};
ComplexSparseCholesky cholesky = new ComplexSparseCholesky(A);
// Choose Multifrontal method as numeric factorization method
cholesky.setNumericFactorizationMethod(cholesky.MULTIFRONTAL_METHOD);
// Compute solution
Complex[] solution = cholesky.solve(b);
PrintMatrix p = new PrintMatrix("Computed solution");
p.print(solution);
// Compute 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 1+1i
1 2+2i
2 3+3i
Smallest diagonal element of Cholesky factor: 1.4142135623730951
Largest diagonal element of Cholesky factor: 2.8867513459481287
Number of nonzeros in Cholesky factor: 5
Link to Java source.