矩阵乘法
1.1 向量 x 向量
- 有向量 x,y∈Rn,xTy 被称为向量内积(Inner Product)或点积(Dot Product),结果为一个实数。
xTy∈Rn=[x1x2...xn]⎣⎡y1y2⋮yn⎦⎤=i=1∑nxiyi
注:xTy=yTx 始终成立。
- 有向量 x∈Rn,y∈Rm,xyT∈Rm×n 被称为向量外积(Outer Product),结果为一个矩阵,其中 (xyT)ij=xiyi。
xyT∈Rm×n=⎣⎡x1x2...xm⎦⎤[y1y2...yn]=⎣⎡x1y1x2y1⋮xmy1x1y2x2y2⋮xmy2⋯⋯⋱⋯x1ynx2yn⋮xmyn⎦⎤
1.2 矩阵 x 向量
有矩阵 A∈Rm×n,向量 x∈Rn,它们的积是一个向量 Ax∈Rm。有两种理解矩阵与向量的乘法的方式:
- 行列内积
如果按行写 A,可以把 Ax 表示为:
y=Ax=⎣⎡−−−a1Ta2T⋮amT−−−⎦⎤x=⎣⎡a1Txa2Tx⋮amTx⎦⎤
可以看出 y 的第 i 行是 A 的第 i 行和 x 的内积,即 yi=aiTx。
- 整列相乘
把 A 按列表示:
y=Ax=⎣⎡∣a1∣∣a2∣⋯∣an∣⎦⎤⎣⎡x1x2⋮xn⎦⎤=[a1]x1+[a2]x2+⋯+[an]xn
可以看到,y 是 A 的列的线性组合,其中线性组合的系数由 x 的元素给出。
也可以在左侧乘以行向量,写为 yT=xTA,其中 $ A \in R^{m \times n}, x \in R^m, y \in R^n $。也有两种理解方式:
- 把 A 按列表示:
yT=xTA=xT⎣⎡∣a1∣∣a2∣⋯∣an∣⎦⎤=[xTa1xTa2⋯xTan]
可以看出 yT 的第 i 个元素为 x 和 A 的第 i 列的内积。
- 整行相乘
把 A 按行表示:
yT=xTA=[x1x2⋯xn]⎣⎡−a1T−−a2T−⋮−amT−⎦⎤=x1[−a1T−]+x2[−a2T−]+⋯+xn[−anT−]
可以看出 yT 是 A 的行的线性组合,其中线性组合的系数由 x 的元素给出。
1.3 矩阵 x 矩阵
两个矩阵相乘,其中 A∈Rm×n,B∈Rn×p(A 的总列数必须与 B 的总行数相等),则:
C=AB∈Rm×p
其中 Cij=rowi×columnj=∑k=1nAikBkj。
- 行列内积
显然,Cij 等于 A 的第 i 行和 B 的第 j 列的内积:
C=AB=⎣⎡−−−a1Ta2T⋮amT−−−⎦⎤⎣⎡∣b1∣∣b2∣⋯∣bp∣⎦⎤=⎣⎡a1Tb1a2Tb1⋮amTb1a1Tb2a2Tb2⋮amTb2⋯⋯⋱⋯a1Tbpa2Tbp⋮amTbp⎦⎤
- 列乘以行
用列表示 A,用行表示 B,这时 Cij 等于 A 的第 i 列和 B 的第 j 行的外积的和:
C=AB=⎣⎡∣a1∣∣a2∣⋯∣an∣⎦⎤⎣⎡−−−b1Tb2T⋮bnT−−−⎦⎤=i=1∑naibiT
这种情况下,ai∈Rm,bi∈Rp,外积 aibiT 的维度是 m×p,与 C 的维度一致。
如:
⎣⎡234789⎦⎤[1060]=⎣⎡234⎦⎤[16]+⎣⎡789⎦⎤[00]=⎣⎡234121824⎦⎤
每一次都是用列向量与行向量相乘得到一个矩阵,每次得到的矩阵都有特点。如:
⎣⎡234⎦⎤[16]=⎣⎡234121824⎦⎤
矩阵 ⎣⎡234121824⎦⎤ 每一列都和向量 ⎣⎡234⎦⎤ 同向,即列向量都在 ⎣⎡234⎦⎤ 这条直线上,列空间是一条直线。同理,行向量都在 [16] 这条直线上,行空间(矩阵行所有可能的线性组合)是一条直线。
- 整列相乘
把 B 用列表示,则可以将 C 的列视为 A 与 B 的列的矩阵向量积(1.2 节):
C=AB=A⎣⎡∣b1∣∣b2∣⋯∣bp∣⎦⎤=⎣⎡∣Ab1∣∣Ab2∣⋯∣Abp∣⎦⎤
cj=Abj,可以看做 C 的第 j 列是 A 的列向量以 B 的第 j 列作为系数所求得的线性组合。
- 整行相乘
把 A 用行表示,则可以将 C 的行视为 A 与 B 的列的矩阵向量积(1.2 节):
C=AB=⎣⎡−−−a1Ta2T⋮amT−−−⎦⎤B=⎣⎡−−−a1TBa2TB⋮amTB−−−⎦⎤
ciT=aiTb,可以看做 C 的第 i 行是 B 的行向量以 A 的第 i 行作为系数所求得的线性组合。
- 分块乘法
[A1A3A2A4][B1B3B2B4]=[A1B1+A2B3A3B1+A4B3A1B2+A2B4A3B2+A4B4]
在分块合适的情况下,可以简化运算。