Цикл никак не изменяет матрицу, но каждая функция работает в цикле, если зафиксировать j перед циклом или поставить число. Почему это так происходит?
<< Combinatorica`
n = 5;
p = IdentityPermutation[n]
b = NextPermutation[p];
PermutationMatrix = IdentityMatrix[n];
R = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}};
M1 = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}};
j = 0;
While[j < n,
j += 1;
PermutationMatrix[[j, j]] = 0;
i = j;
PermutationReplace[j, b];
PermutationMatrix[[i, j]] = 1;
M2 = Transpose[M];
If[M2.M1.PermutationMatrix == R, Print["TRUE"], None]
];
PermutationMatrix
b
вывод представлен ниже {1, 2, 3, 4, 5} {{1, 0, 0, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 1, 0}, {0, 0, 0, 0, 1}} {1, 2, 3, 5, 4}