%
% 带列主元的按列存储  LU 分解: P*A = L*U
%
clear all;
close all;

load data_hw22.mat   % 载入数据，即矩阵 A 

%%% 按列存储的 LU 分解 
[L,U,p] = PLU_JKI(A);

%%% 测试：计算相对误差  ||A - L*U|| / ||A||，这里用 F-范数
fprintf('relerr = %.4e\n', norm( A(p,:) - L*U, 'fro') / norm(A,'fro') )


%%% 函数: 按列存储的 LU 分解
function [L,U,p] = PLU_JKI(A)
%
% 按列存储的 LU 分解 : P*A = L * U
%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%  这里是你的代码  %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%

U = triu(A);
L = A - U + eye(n);
end


