A=randi(2,4); %une matrice avec elements entieres au plus 2 %il y aura beaucoup de coincidences dans cette matrice donc %le resultat ne sera pas toujours 24 = 4! [m,n]=size(A); bon=0; sigma = perms(1:n) ; %une liste de permutations des nombres de 1 à n for ip = 1:size(sigma,1) %pour toute permutation P = zeros(n,n); %commencer avec une matrice nulle for jdx = 1:m %pour chaque ligne %mettre le 1 de la ligne jdx à la colonne choisit par la %permutation P: P(jdx,sigma(ip,jdx)) = 1; end; %faites ce que vous voulez avec P: B=P*A; prodmineur = 1; %commence avec 1 for jp=1:min(m,n) %calculer la mineur et multiplier avec toutes les précédentes: prodmineur = prodmineur*det(B(1:jp,1:jp)); end; if prodmineur ~=0 %donc, B a une decomposition LU bon = bon+1; end; end; bon A %ou bien A=randn(4); %une matrice vraiment aleatoire [m,n]=size(A); mal=0; sigma = perms(1:n) ; %une liste de permutations des nombres de 1 à n for ip = 1:size(sigma,1) %pour toute permutation P = eye(n); %commencer avec une matrice identite P = P(sigma(ip,:),:); %une facon courte de produire P %faites ce que vous voulez avec P: B=P*A; prodmineur = 1; %commence avec 1 for jp=1:min(m,n) %calculer la mineur et multiplier avec toutes les précédentes: prodmineur = prodmineur*det(B(1:jp,1:jp)); end; if abs(prodmineur)< 1.0e-10 %notre impression de 0 avec arrondissement mal = mal+1; %donc un des mineures etait nulle end; end; bon=factorial(n)-mal %il y avait 24=4! matrices. A