% ピボット型LU分解
% n次の正方行列AのLU分解A = LUを計算するピボット型アルゴリズム

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

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

L
U

fprintf("L*U\n");
L*U
