我想实现不完整的 Cholesky 分解来进行前置条件,我从不完整的 Cholesky 分解中引用的算法,
function a = ichol(a)
n = size(a,1);
for k=1:n
a(k,k) = sqrt(a(k,k));
for i=(k+1):n
if (a(i,k)!=0)
a(i,k) = a(i,k)/a(k,k);
endif
endfor
for j=(k+1):n
for i=j:n
if (a(i,j)!=0)
a(i,j) = a(i,j)-a(i,k)*a(j,k);
endif
endfor
endfor
endfor
for i=1:n
for j=i+1:n
a(i,j) = 0;
endfor
endfor
endfunction
但这似乎不对。
问题是算法不能保证它a[k,k]是一个正整数。当a[k,k]不是正整数时,算法会产生错误。
我想询问正确版本的 Cholesky 分解和一些相关参考资料。