Ho risolto il problema però non capisco perché come lo scrivevo prima non va bene, ho scritto così dopo la permutazione
g = [zeros(i,1); A(i+1:n,i)]/A(i,i) ;
A(i+1:n,i) = A(i+1:n,i)/A(i,i);
A(i+1:n,i+1:n) = A(i+1:n,i+1:n) - g(i+1:n) * A(i,i+1:n);
end
U = triu(A);
L = tril(A,-1) + eye(n);
infatti ho scoperto che la matrice L non è altro che triangolare inferiore della matrice A, però mi doveva uscire pure con l'algoritmo di prima perché prendevo la prima colonna di A, la dividevo per A(i,i) e la ponevo uguale alla prima colonna di L...