====== Определение транспонирования ====== Матрица транспонированная к A обозначается как A^T . R=A^T Операция транспонирования определена как смена индексов в матрице. Матрица не обязательно квадратная. r_{j,i}=a_{i,j} Соответственно изменяется и число строк и столбцов.\\ Пример, \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix}^{\mathrm{T}} \!\! \;\! = \, \begin{bmatrix} 1 & 3 & 5\\ 2 & 4 & 6 \end{bmatrix} \; ====== Свойства транспонированных матриц ====== * (A^T)^T= A Дважды транспонированная матрица А равна исходной матрице А. * (A + B)^T = A^T + B^T Транспонированная сумма матриц равна сумме транспонированных матриц. * (AB)^T = B^TA^T Транспонированное произведение матриц равно произведению транспонированных матриц, взятых в обратном порядке. * (\lambda A)^T=\lambda A^T При транспонировании можно выносить скаляр. * \det A = \det A^T Определитель транспонированной матрицы равен определителю исходной матрицы. ====== Прямой алгоритм транспонирования. ====== 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. **Выходные параметры:** * Прямоугольная матрица R. **Примечание:**\\ * Память под матрицы A и R должна быть выделена. Матрица R должна иметь число столбцов равное числу строк матрицы A. Матрица R должна иметь число строк равное числу столбцов матрицы A ====== Блочный алгоритм транспонирования ====== A^{T} =\left[\begin{array}{ccccc} A_1 & A_2 \\ A_3 & A_4 \\ \end{array}\right]^{T} = \left[\begin{array}{ccccc} A_1^{T} & A_3^{T} \\ A_2^{T} & A_4^{T} \\ \end{array}\right] Матрица A разбивается на 4 под матрицы A_1, A_2, A_3, A_4. Вначале производиться перестановка подматриц согласно правилу транспонирования, а затем выполняется транспонирования элементов подматриц. Алгоритм продолжается рекурсивно до тех пор пока прямой алгоритм не будет быстрее или не останется 1 элемент. Блочный алгоритм транспонирования применяется для ускорения транспонирования. Когда доступ к элементам последовательно быстрее чем в произвольном порядке. В современном компьютере есть система кэшей разных уровней, что создаёт такую неравномерность в скорость. Наиболее наглядную демонстрацию можно получить для больших матриц не помещающихся в RAM и хранящихся на HDD. ====== Алгоритм транспонирования на месте. ====== Алгоритм транспонирования на месте или алгоритм без использования дополнительной памяти. ---- Список литературы:\\ [1] Т.С. Хуанг -Быстрые алгоритмы в цифровой обработке изображений. \\ [[http://http://books.google.ru/books?id=7OnK5DG_C9MC&lpg=PA20&ots=KCmg7p5mPS&dq=%D0%B1%D0%BB%D0%BE%D1%87%D0%BD%D1%8B%D0%B9%20%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%20%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F&hl=ru&pg=PA20#v=onepage&q=%D0%B1%D0%BB%D0%BE%D1%87%D0%BD%D1%8B%D0%B9%20%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%20%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F&f=false|библиотека Гугл]]\\ [2] Р.Хорн, Ч.Джонсон. -Матричный анализ.-Мир(1989) \\ стр. 18. Глава 0.2.5