文章目录
一、矩阵转置
1、概述
矩阵的转置是矩阵的一种运算,在矩阵的所有运算法则中占有重要地位。
2、定义
设 A A A为 m × n m\times n m×n阶矩阵(即 m m m行 n n n列),第 i i i行 j j j列的元素是 a i j a_{ij} aij,即 A = ( a i j ) m × n A=(a_{ij})_{m\times n} A=(aij)m×n,把 m × n m\times n m×n矩阵 A A A的行换成同序数的列得到一个 n × m n\times m n×m矩阵,此矩阵叫做 A A A的转置矩阵,记做 A T A^T AT或 A ′ A' A′。
3、实例
A = [ 7 8 1 9 − 3 10 4 9 4 4 7 2 8 1 4 21 4 7 − 4 3 ] A=\left[ \begin{matrix} 7 & 8 & 1 & 9 & -3\\ 10 & 4 & 9 & 4 & 4\\ 7 & 2 & 8 & 1 & 4 \\ 21 & 4 & 7 & -4 & 3 \end{matrix} \right] A=⎣⎢⎢⎡71072184241987941−4−3443⎦⎥⎥⎤
A T = [ 7 10 7 21 8 4 2 4 1 9 8 7 9 4 1 − 4 − 3 4 4 3 ] A^T=\left[ \begin{matrix} 7 & 10 & 7 & 21 \\ 8 & 4 & 2 & 4 \\ 1 & 9 & 8 & 7 \\ 9 & 4 & 1 & -4 \\ -3 & 4 & 4 & 3 \end{matrix} \right] AT=⎣⎢⎢⎢⎢⎡7819−3104944728142147−43⎦⎥⎥⎥⎥⎤
4、运算规律
矩阵的转置和加减乘除一样,也是一种运算,且满足下列运算规律:
- ( A T ) T = A (A^T)^T=A (AT)T=A
- ( A + B ) T = A T + B T (A+B)^T=A^T+B^T (A+B)T=AT+BT
- ( k A ) T = k A T (kA)^T=kA^T (kA)T=kAT
- ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT
5、对阵矩阵
(1)定义
设 A A A为 n n n阶矩阵,如果满足 A T = A A^T=A AT=A,即 a i j = a j i ( i , j = 1 , 2 , 3 , . . . , n ) a_{ij}=a_{ji} (i,j=1,2,3,...,n) aij=aji(i,j=1,2,3,...,n),那么 A A A称为对称矩阵。
(2)实例
A = [ 7 8 1 6 8 4 9 4 1 9 8 7 6 4 7 2 ] A=\left[ \begin{matrix} 7 & 8 & 1 & 6\\ 8 & 4 & 9 & 4\\ 1 & 9 & 8 & 7\\ 6 & 4 & 7 & 2 \end{matrix} \right] A=⎣⎢⎢⎡7816849419876472⎦⎥⎥⎤
二、编程求转置矩阵
1、编写程序 - 矩阵转置.py
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 11 21:05:53 2020
@author: howard
实现矩阵转置
"""
matrix = [
[7, 8, 1, 9, -3],
[10, 4, 9, 4, 4],
[7, 2, 8, 1, 4],
[21, 4, 7, -4, 3]
]
print('原矩阵:')
for i in range(len(matrix)):
for j in range(len(matrix[0])):
print('{0:-2d}'.format(matrix[i][j]), end='\t')
print()
# 求转置矩阵
transposed = []
for j in range(len(matrix[0])):
transposed_row = []
for row in matrix:
transposed_row.append(row[j])
transposed.append(transposed_row)
print('转置矩阵:')
for i in range(len(transposed)):
for j in range(len(transposed[0])):
print('{0:-2d}'.format(transposed[i][j]), end='\t')
print()
2、运行程序,查看结果
3、优化代码 - 定义求转置矩阵的函数
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 11 21:05:53 2020
@author: howard
实现矩阵转置
"""
def transpose(matrix):
transposed = []
for j in range(len(matrix[0])):
transposed_row = []
for row in matrix:
transposed_row.append(row[j])
transposed.append(transposed_row)
return transposed
matrix = [
[7, 8, 1, 9, -3],
[10, 4, 9, 4, 4],
[7, 2, 8, 1, 4],
[21, 4, 7, -4, 3]
]
print('原矩阵:')
for i in range(len(matrix)):
for j in range(len(matrix[0])):
print('{0:-2d}'.format(matrix[i][j]), end='\t')
print()
# 求转置矩阵
transposed = transpose(matrix)
print('转置矩阵:')
for i in range(len(transposed)):
for j in range(len(transposed[0])):
print('{0:-2d}'.format(transposed[i][j]), end='\t')
print()