HI all,
I am trying to solve a very large sparse linear system, Ax = b, using preconditioned conjugate gradient method.
The preconditioner I am planning to use is Modified incomplete cholesky factorization (with no fill ins).
Note that I am not adding any fill ins, because I want to maintain the sparsity structure of the original matrix.
The following is the Matlab code for and incomplete cholesky factorization with no fill ins:
%------------------------------------------------------------------------------------------------------------
function [ARet] = cholD_theory2(A, n)
L = 0*A;
for (i = 1:n)
L(i,i) = sqrt( A(i,i) - sum((L(i,1:i-1)).^2) );
for (j = i+1:n)
if (A(j,i) ~= 0)
L(j,i) = (A(j,i) - sum(L(j,1:i-1).*L(i,1:i-1)))/ L(i,i);
end
end
end
ARet = L;
%------------------------------------------------------------------------------------------------------------
My question is how do we extend/ modify the incomplete cholesky factorization to get the modified incomplete cholesky factorization method.
I have read a lot of reference materials, and most of them suggest to subtract the fill value from the diagonal elements. I have done this, but I havent got the desired result.
Would some one mind sharing/ enlightening me on the correct way of performing the factorization.
Thanks,
Aznul
I am trying to solve a very large sparse linear system, Ax = b, using preconditioned conjugate gradient method.
The preconditioner I am planning to use is Modified incomplete cholesky factorization (with no fill ins).
Note that I am not adding any fill ins, because I want to maintain the sparsity structure of the original matrix.
The following is the Matlab code for and incomplete cholesky factorization with no fill ins:
%------------------------------------------------------------------------------------------------------------
function [ARet] = cholD_theory2(A, n)
L = 0*A;
for (i = 1:n)
L(i,i) = sqrt( A(i,i) - sum((L(i,1:i-1)).^2) );
for (j = i+1:n)
if (A(j,i) ~= 0)
L(j,i) = (A(j,i) - sum(L(j,1:i-1).*L(i,1:i-1)))/ L(i,i);
end
end
end
ARet = L;
%------------------------------------------------------------------------------------------------------------
My question is how do we extend/ modify the incomplete cholesky factorization to get the modified incomplete cholesky factorization method.
I have read a lot of reference materials, and most of them suggest to subtract the fill value from the diagonal elements. I have done this, but I havent got the desired result.
Would some one mind sharing/ enlightening me on the correct way of performing the factorization.
Thanks,
Aznul