...а любую матрицу, как например в приведении к диагональному или треугольному виду...
В этом случае у вас матрица-множитель является функцией транспонируемой матрицы. Какой тогда смысл говорить об умножении? Просто взяли элементы и перемешали как хочется. Или даже так: "На какую матрицу надо умножить матрицу A, чтобы получить матрицу B?" Это совсем другая задача, не та, что вы озвучили в первом посте.
Если нет, то доказать это
Умножение матрицы A на какую-либо матрицу равносильно свёртке соответствующего А тензора 2-го ранга с некоторым специального вида тензором 4-го ранга. Когда запишите перестановочный тензор, то окажется, что он не сможет быть представлен в этом специальном виде.
А обоими сразу -- почему бы и нет?
Не вводите людей в заблуждение. Умножение с одной стороны переставляет строки (или перемешивает их в суперпозицию), с другой стороны — делает тоже со столбцами. Если же считаете своё утверждение верным, то приведите, пожалуйста, пример для матрицы 2 на 2. Возможно, мы о разных вещах говорим.
...или алгоритм
Алгоритм транспонирования ничего общего с умножением не имеет. Матрице соответствует массив и вспомогательная информация в виде размеров матрицы и указателя на этот массив. Транспонирование заключается в создании нового массива с новой вспомогательной информацией (размеры матрицы поменяны местами) и в копировании элементов на соответствующие им новые места. Никакого умножения. Или же вас интересует алгоритм, который преобразует матрицу "на месте"?
Есть ещё формально математическое транспонирование, использующее нематематическое действие "измерение формы матрицы". Сначала матрицу (допустим размера N на M), подлежащую транспонированию "превращаем" с столбец (с числом элементов, равному число элементов исходной матрицы), просто выписывая друг под другом все столбцы исходной матрицы по очереди. Затем умножаем этот столбец на желаемую перестановочную матрицу (размера K на K, где
![$K=M\times N$ $K=M\times N$](https://dxdy-04.korotkov.co.uk/f/b/5/8/b58a63d5326b5ce955741da039a8e9ca82.png)
) и снова производим эту же нематематическую операцию измерения формы матрицы. Таким образом можно переставить любой элемент на любое желаемое место.
Zloi_templar, пожалуйста, сформулируйте ещё раз, но чётко, что вам нужно.