% コレスキー分解（メモリ節約型）
% n次の正方行列Aのコレスキー分解A = U'*Uを計算するピボット型アルゴリズム
% Uの計算結果を配列Aの上三角部に格納する．

A = [ 4,  2, -2,  2;...
      2, 10,  2, -5;...
     -2,  2,  3, -4 
      2, -5, -4, 10 ];
n = 4;

for k=1:n
    % 行列Uの計算
    A(k,k) = sqrt(A(k,k));
    A(k,k+1:n) = A(k,k+1:n)/A(k,k);
    % 行列Aの更新
    A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k,k+1:n)'*A(k,k+1:n);
end

A
