Understanding a Cholesky Factorisation Algorithim
1 次查看(过去 30 天)
显示 更早的评论
Hello I am reviewing the following code for Cholesky Factorisation, trying to understand each individual step. I am new to Matlab and have tested the code (it does work). At the step which I've marked by %***%, I believe that the value produced by multiplying matrix elements L(j,k)*L(i,k) will always be zero, in particular, the element L(j,k) will always be zero since the matrix element L is 0 before the for loop and it is not redefined at the end of the for loop, and iterated k=j-1 times. I.e s=s at this step in the code and always will be.
Is there perhaps a visualisation or an effective way to understand how the elements of this code work? I have tried running the simulation by hand and it gets very large and complicated very quickly.
function L = CholScalar(A)
% L = CholScalar(A)
% Cholesky factorization of a symmetric and positive definite matrix A.
% L is lower triangular so A = L*L'.
[n,n] = size(A);
L = zeros(n,n);
for i=1:n
% Compute L(i,1:i)
for j=1:i
s = A(j,i);
for k=1:j-1 %****% This is the step I don't understand.
s = s - L(j,k)*L(i,k);
end
if j<i
L(i,j) = s/L(j,j);
else
L(i,i) = sqrt(s);
end
end
end
0 个评论
回答(1 个)
James Tursa
2018-9-24
To see if your supposition is correct, just add this to your for loop and put a break point there:
for k=1:j-1 %****% This is the step I don't understand.
s = s - L(j,k)*L(i,k);
if( L(j,k) ~= 0 )
disp('not zero'); % <-- break point here
end
end
Then run your code.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!