文章目录
矩阵的基本概念
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋮ a m 1 a m 2 ⋯ a m n ] A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & & \vdots\\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} A=⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2⋯⋯⋯a1na2n⋮amn⎦⎥⎥⎥⎤
- 矩阵:m行n列的数表,aij代表第i行第j列的元素。
- 方阵:m=n的矩阵。
- 行向量:m=1的矩阵。 ( a 1 a 2 ⋯ a n ) \begin{pmatrix} a_1 & a_2 & \cdots & a_n \end{pmatrix} (a1a2⋯an)
- 列向量:n=1的矩阵。 [ a 1 a 2 ⋮ a m ] \begin{bmatrix} a_1\\ a_2\\ \vdots\\ a_m \end{bmatrix} ⎣⎢⎢⎢⎡a1a2⋮am⎦⎥⎥⎥⎤
- 矩阵相等:形状相同,对应元素相等。
- 零矩阵:所有元素都是0的矩阵。
- 单位矩阵:对角线元素为1,其余元素为0的矩阵,通常用E或I表示。单位矩阵一定是方阵。
- 对角矩阵:除对角线外其余元素都是0,记为 d i a g ( λ 1 λ 2 ⋯ λ n ) diag\begin{pmatrix} \lambda_1 & \lambda_2 & \cdots & \lambda_n \end{pmatrix} diag(λ1λ2⋯λn)
矩阵的意义
- 矩阵是一种阵列的表示,如图像、线性变换等。
- 图像可以用矩阵表示,每个像素是0到255的数字,对应矩阵的一个元素。
- { y 1 = a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n y 2 = a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n ⋯ ⋯ y m = a m 1 x 1 + a m 2 x 2 + ⋯ + a m n x n \begin{cases} y_1=a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n\\ y_2=a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n\\ \cdots\cdots\\ y_m=a_{m1}x_1+a_{m2}x_2+\cdots+a_{mn}x_n \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧y1=a11x1+a12x2+⋯+a1nxny2=a21x1+a22x2+⋯+a2nxn⋯⋯ym=am1x1+am2x2+⋯+amnxn表示一个从变量x1,x2,…,xm到变量y1,y2,…,ym的线性变换,系数aij构成矩阵。
矩阵的基本运算(加,减,乘)
矩阵加(减)法
- 条件:同型矩阵
- 规则:对应元素相加(减),cij = aij + bij
- 性质:
交换律:A + B = B + A
结合律:A + B + C = A + (B + C)
矩阵数乘
- 数λ与矩阵A的乘积,记作λA或Aλ。
- 规则:λ与每个元素相乘,cij = λaij
- 性质(λ与μ是数,A与B是同型矩阵):
λA = Aλ
(λμ)A = λ(μA)
(λ + μ)A = λA + μA
λ(A + B) = λA + λB
矩阵乘法
- 条件:Am×s,Bs×n
- 规则: c i j = a i 1 b 1 j + a i 2 b 2 j + ⋯ + a i s b s j = ∑ k = 1 s a i k b k j c_{ij} = a_{i1}b_{1j} + a_{i2}b_{2j}+\cdots+a_{is}b_{sj}=\sum _{k=1}^sa_{ik}b_{kj} cij=ai1b1j+ai2b2j+⋯+aisbsj=∑k=1saikbkj,乘积C是m×n矩阵。
- 性质:
不满足交换律,即AB ≠ BA
(AB)C = A(BC)
λ(AB) = (λA)B = A(λB),λ为数
A(B + C) = AB + AC
(B + C)A = BA + CA
EA = AE = A,即单位矩阵在矩阵乘法中的作用类似于数1。
矩阵的迹(方阵)
- t r ( A ) = ∑ a i i tr(A) = \sum a_{ii} tr(A)=∑aii,即矩阵的迹等于对角线元素的和。
- tr(AB) = tr(BA),其中,Am×n,Bn×m
证明:
t r ( A B ) = t r ( C ) = ∑ i = 1 m c i i = ∑ i = 1 m ∑ j = 1 n a i j b j i tr(AB)=tr(C)=\sum_{i=1}^mc_{ii}=\sum_{i=1}^m\sum_{j=1}^na_{ij}b_{ji} tr(AB)=tr(C)=∑i=1mcii=∑i=1m∑j=1naijbji
t r ( B A ) = t r ( C ˉ ) = ∑ i = 1 n c ˉ i i = ∑ i = 1 n ∑ j = 1 m b i j a j i = ∑ j = 1 n ∑ i = 1 m b j i a i j = ∑ i = 1 m ∑ j = 1 n a i j b j i = t r ( A B ) tr(BA)=tr(\bar{C})=\sum_{i=1}^n\bar{c}_{ii}=\sum_{i=1}^n\sum_{j=1}^mb_{ij}a_{ji}=\sum_{j=1}^n\sum_{i=1}^mb_{ji}a_{ij}=\sum_{i=1}^m\sum_{j=1}^na_{ij}b_{ji}=tr(AB) tr(BA)=tr(Cˉ)=∑i=1ncˉii=∑i=1n∑j=1mbijaji=∑j=1n∑i=1mbjiaij=∑i=1m∑j=1naijbji=tr(AB)
矩阵的转置
- A的转置记作AT
- aTij = aji
- 性质:
(AT)T = A
(A + B)T = AT + BT
(λA)T = λAT
(AB)T = BTAT - 若X是n维行向量,Y是n维列向量,则XTY = YTX
证明:
X T Y = ( x 1 x 2 ⋯ x n ) [ y 1 y 2 ⋮ y n ] = x 1 y 1 + x 2 y 2 + ⋯ + x n y n = k , ( k 是 一 个 数 ) X^TY = \begin{pmatrix} x_1 & x_2 & \cdots & x_n \end{pmatrix} \begin{bmatrix}y_1\\ y_2\\ \vdots\\ y_n\end{bmatrix}=x_1y_1+x_2y_2+\cdots+x_ny_n=k,(k是一个数) XTY=(x1x2⋯xn)⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤=x1y1+x2y2+⋯+xnyn=k,(k是一个数)
Y T X = ( Y T X ) T = X T Y Y^TX =(Y^TX)^T=X^TY YTX=(YTX)T=XTY
对称矩阵(方阵)
- A为n阶方阵,若AT = A,即aij = aji,则A为对称矩阵。
- 特点:元素以对角线为对称轴,对应相等。
- 【例1】设列向量X = (x1,x2,…,xn)T,满足XTX = 1,E为n阶单位阵,H = E - 2XXT,证明H是对称阵,且HHT = E.
证:
H T = ( E − 2 X X T ) T = E T − ( 2 X X T ) T = E − 2 ( X X T ) T = E − 2 X X T = H H^T=(E-2XX^T)^T=E^T-(2XX^T)^T=E-2(XX^T)^T=E-2XX^T=H HT=(E−2XXT)T=ET−(2XXT)T=E−2(XXT)T=E−2XXT=H
H H T = H H = ( E − 2 X X T ) ( E − 2 X X T ) = E ⋅ E − 2 X X T − 2 X X T + 4 X X T X X T = E − 4 X X T + 4 X ( X T X ) X T = E − 4 X X T + 4 X X T = E HH^T=HH=(E-2XX^T)(E-2XX^T)=E\cdot E-2XX^T-2XX^T+4XX^TXX^T=E-4XX^T+4X(X^TX)X^T=E-4XX^T+4XX^T=E HHT=HH=(E−2XXT)(E−2XXT)=E⋅E−2XXT−2XXT+4XXTXXT=E−4XXT+4X(XTX)XT=E−4XXT+4XXT=E
Numpy实现矩阵运算
- 与ndarray的操作基本相同
Numpy构造矩阵 np.mat
import numpy as np
m1 = np.mat([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
a = np.diag([1, 2, 3]) # 对角阵
m2 = np.mat(a) # 是映像,不是副本
m2[0, 0] = 100 # 不能用m2[0][0]
print(m1)
print(m2)
[[1 2 3]
[4 5 6]
[7 8 9]]
[[100 0 0]
[ 0 2 0]
[ 0 0 3]]
Numpy实现矩阵加(减)法
- 对应元素相加
print(m1 + m2)
[[101 2 3]
[ 4 7 6]
[ 7 8 12]]
Numpy实现矩阵乘法
矩阵数乘
print(2*m1)
[[ 2 4 6]
[ 8 10 12]
[14 16 18]]
对应元素相乘 np.multiply
print(np.multiply(m1, m2))
[[100 0 0]
[ 0 10 0]
[ 0 0 27]]
矩阵乘法 *
print(m1 * m2) # *对矩阵执行矩阵乘法运算,对ndarray执行对应位置相乘
[[100 4 9]
[400 10 18]
[700 16 27]]
numpy实现矩阵转置 m.T
print(m1.T)
[[1 4 7]
[2 5 8]
[3 6 9]]