Матрица транспонированная к A обозначается как .
Операция транспонирования определена как смена индексов в матрице. Матрица не обязательно квадратная.
Соответственно изменяется и число строк и столбцов.
Пример,
Дважды транспонированная матрица А равна исходной матрице А.
Транспонированная сумма матриц равна сумме транспонированных матриц.
Транспонированное произведение матриц равно произведению транспонированных матриц, взятых в обратном порядке.
При транспонировании можно выносить скаляр.
Определитель транспонированной матрицы равен определителю исходной матрицы.
procedure Transpose(var R:TMatrixNM; A:TMatrixNM); var i,j:Integer; begin for i:=0 to RowsCount(A)-1 do for j:=0 to ColumnsCount(A)-1 do R[j,i]:=A[i,j]; end;
Входные параметры:
Выходные параметры:
Примечание:
Матрица A разбивается на 4 под матрицы ,
,
,
.
Вначале производиться перестановка подматриц согласно правилу транспонирования, а затем выполняется транспонирования элементов подматриц. Алгоритм продолжается рекурсивно до тех пор пока прямой алгоритм не будет быстрее или не останется 1 элемент.
Блочный алгоритм транспонирования применяется для ускорения транспонирования. Когда доступ к элементам последовательно быстрее чем в произвольном порядке. В современном компьютере есть система кэшей разных уровней, что создаёт такую неравномерность в скорость.
Наиболее наглядную демонстрацию можно получить для больших матриц не помещающихся в RAM и хранящихся на HDD.
Алгоритм транспонирования на месте или алгоритм без использования дополнительной памяти.
Список литературы:
[1] Т.С. Хуанг -Быстрые алгоритмы в цифровой обработке изображений.
библиотека Гугл
[2] Р.Хорн, Ч.Джонсон. -Матричный анализ.-Мир(1989)
стр. 18. Глава 0.2.5