从一组响应到一张矩阵

向量与线性组合把两个输入的响应分别写成向量。输入数量增加后,每次把整组向量重写一遍就很笨重。把这些响应依次放进各列,便得到矩阵:

A=(2−112).A=\begin{pmatrix}2&-1\\1&2\end{pmatrix}.

第 jj 列记录第 jj 个输入增加一单位时的全部响应;第 ii 行记录第 ii 个观测量怎样依赖所有输入。列与行不是两套不同的模型,而是观察同一张表的两种方式。

一般地,实矩阵 A∈Rm×nA\in\mathbb R^{m\times n} 有 mm 行、nn 列,元素 aija_{ij} 位于第 ii 行、第 jj 列。行数对应输出数量,列数对应输入数量,这个解释适用于把矩阵当作响应规则的场景。

矩阵乘向量,就是按列组合

定义矩阵与向量的乘积

设 AA 的列为 a1,…,an\mathbf a_1,\ldots,\mathbf a_n,输入为 x∈Rn\mathbf x\in\mathbb R^n。定义

Ax=x1a1+⋯+xnan.A\mathbf x=x_1\mathbf a_1+\cdots+x_n\mathbf a_n.

结果属于 Rm\mathbb R^m。按分量写,就是

(Ax)i=∑j=1naijxj.(A\mathbf x)_i=\sum_{j=1}^n a_{ij}x_j.

因此前面的矩阵满足

A(21)=2(21)+(−12)=(34).A\begin{pmatrix}2\\1\end{pmatrix} =2\begin{pmatrix}2\\1\end{pmatrix} +\begin{pmatrix}-1\\2\end{pmatrix} =\begin{pmatrix}3\\4\end{pmatrix}.

这也解释了维数为什么必须匹配:有多少列,就要提供多少个组合系数。矩阵不必是方阵,例如两个参数可以产生三个观测值。

先检查大小,再谈运算

矩阵的大小不是装饰性记号,而是规定了输入、输出和运算是否有定义。若 A∈Rm×nA\in\mathbb R^{m\times n},那么 AxA\mathbf x 要求 x\mathbf x 有 nn 个分量,结果有 mm 个分量。两个矩阵只有大小完全相同,才能逐项相加;相乘却只要求中间维数匹配。

例如,若 AA 是 2×32\times3,BB 是 3×43\times4,则 ABAB 是 2×42\times4,而 BABA 没有定义。即使 A,BA,B 都是方阵,ABAB 与 BABA 都有定义,也不意味着它们相等。

矩阵相等也必须同时满足两点:大小相同,对应元素相同。不能把“对应的几个数一样”当作矩阵相等,更不能像普通分数一样随意约去矩阵因子。

零矩阵、对角矩阵与三角矩阵

零矩阵的每个元素都为零,表示所有输入都产生零输出。记号 00 的具体大小通常由上下文决定。

对角矩阵只允许主对角线上的元素非零:

D=(d1000d2000d3),Dx=(d1x1,d2x2,d3x3)T.D=\begin{pmatrix}d_1&0&0\\0&d_2&0\\0&0&d_3\end{pmatrix}, \qquad D\mathbf x=(d_1x_1,d_2x_2,d_3x_3)^{\mathsf T}.

它分别缩放各个坐标,没有坐标间的混合。某个 di=0d_i=0 时,第 ii 个输入的信息完全消失。

上三角矩阵的主对角线下方为零,下三角矩阵的主对角线上方为零。它们的重要性在于方程能按顺序求解。例如,上三角系统的最后一行只涉及最后一个未知量,解出后便能向上回代。LU 分解正是利用这种结构。

插值:曲线不是直线,参数关系仍可以线性

给定三个观测点 (1,6),(2,7),(3,5)(1,6),(2,7),(3,5),希望找到一个二次以下的多项式,使它在这些位置的取值恰好等于观测值[1][1] X. Yang, “ENG1005 Week 3: Interpolation and Fitting, Personal Workshop Solutions,” 2024. Personal solutions to Monash ENG1005 workshop problems; source snapshot 77ebe58de2fea53d62533d6dd23caa16108ed109. Repository access may be restricted.. https://github.com/Eryc123Y/ENG1005-2024S2/blob/77ebe58de2fea53d62533d6dd23caa16108ed109/Source%20Code/W3.tex。

设

p(t)=αt2+βt+γ.p(t)=\alpha t^2+\beta t+\gamma.

把三个输入分别代入,得到

(111421931)⏟V(αβγ)⏟c=(675)⏟y.\underbrace{\begin{pmatrix}1&1&1\\4&2&1\\9&3&1\end{pmatrix}}_{V} \underbrace{\begin{pmatrix}\alpha\\\beta\\\gamma\end{pmatrix}}_{\mathbf c} =\underbrace{\begin{pmatrix}6\\7\\5\end{pmatrix}}_{\mathbf y}.

第一列是函数 t2t^2 的三个采样值,第二列来自 tt,第三列来自常函数 11。三个系数把这些采样向量组合成目标数据。

这里的线性是针对未知系数而言。 多项式关于 tt 含有平方,并不妨碍系数到观测值的关系是线性的。固定采样位置之后,矩阵 VV 就固定了;换一组观测值,只需换右侧向量。

系数为

c=(−3/211/22).\mathbf c=\begin{pmatrix}-3/2\\11/2\\2\end{pmatrix}.

代回三个采样点可分别得到 6,7,56,7,5。线性系统与 LU会从消元推导这组系数,而不是把答案当作计算器输出。

矩阵乘矩阵:把两步处理接起来

设 B∈Rn×pB\in\mathbb R^{n\times p} 先把输入变成 nn 个中间量,再由 A∈Rm×nA\in\mathbb R^{m\times n} 产生输出。我们希望一个矩阵就能记录整个过程:

(AB)x=A(Bx).(AB)\mathbf x=A(B\mathbf x).

让输入依次取标准基向量,便知道乘积第 jj 列必须是 AA 作用于 BB 第 jj 列的结果。因此

(AB)ij=∑k=1naikbkj.(AB)_{ij}=\sum_{k=1}^n a_{ik}b_{kj}.

这个公式是在累加经过每个中间量的贡献。乘积大小为 m×pm\times p,共享的中间维数 nn 被求和消去。

例先剪切再缩放,与反过来不同

取

S=(1101),D=(2001).S=\begin{pmatrix}1&1\\0&1\end{pmatrix},\qquad D=\begin{pmatrix}2&0\\0&1\end{pmatrix}.

S(x,y)=(x+y,y)S(x,y)=(x+y,y),D(x,y)=(2x,y)D(x,y)=(2x,y)。直接计算:

DS=(2201),SD=(2101).DS=\begin{pmatrix}2&2\\0&1\end{pmatrix},\qquad SD=\begin{pmatrix}2&1\\0&1\end{pmatrix}.

同一个输入 (0,1)(0,1) 分别得到 (2,1)(2,1) 与 (1,1)(1,1)。矩阵乘法通常不交换,因为处理顺序会改变结果。书写 DSDS 时,右侧的 SS 先作用。

组合三步处理时,括号放在哪里不改变作用顺序。因此矩阵乘法满足结合律。也可以逐项验证:两种括号都给出有限和

∑j,kaijbjkckℓ.\sum_{j,k}a_{ij}b_{jk}c_{k\ell}.

一个乘积的三种读法

对 A∈Rm×nA\in\mathbb R^{m\times n} 和 B∈Rn×pB\in\mathbb R^{n\times p},不必每次都从逐元素公式开始。

按列读: ABAB 的第 jj 列为 AbjA\mathbf b_j。这适合解释一个变换怎样同时处理多个输入向量。

按行读: ABAB 的第 ii 行为 AA 第 ii 行与 BB 的乘积。它把中间输出的各条规则重新组合成最终第 ii 个输出的规则。

按中间坐标读: 设 ak\mathbf a_k 是 AA 第 kk 列,rk\mathbf r_k 是 BB 第 kk 行,则

AB=∑k=1nakrk.AB=\sum_{k=1}^n\mathbf a_k\mathbf r_k.

每个 m×1m\times1 列向量与 1×p1\times p 行向量的乘积是一个 m×pm\times p 的外积。其中第 (i,j)(i,j) 项为 aikbkja_{ik}b_{kj},表示第 kk 个中间坐标对输入 jj 到输出 ii 的贡献。

例如取

A=(1234),B=(5678).A=\begin{pmatrix}1&2\\3&4\end{pmatrix},\qquad B=\begin{pmatrix}5&6\\7&8\end{pmatrix}.

第一项取第一列与第一行的外积,第二项取第二列与第二行的外积:

AB=(13)(56)+(24)(78).AB=\begin{pmatrix}1\\3\end{pmatrix}\begin{pmatrix}5&6\end{pmatrix} +\begin{pmatrix}2\\4\end{pmatrix}\begin{pmatrix}7&8\end{pmatrix}.

分别计算这两项,再逐项相加:

AB=(561518)+(14162832)=(19224350).AB=\begin{pmatrix}5&6\\15&18\end{pmatrix} +\begin{pmatrix}14&16\\28&32\end{pmatrix} =\begin{pmatrix}19&22\\43&50\end{pmatrix}.

三种读法描述的是同一个乘积,只是把求和按不同结构组织起来。

分块乘法仍然要对齐中间维数

把输入拆成两组,把矩阵按对应列分块,就有

(A1A2)(x1x2)=A1x1+A2x2.\begin{pmatrix}A_1&A_2\end{pmatrix} \begin{pmatrix}\mathbf x_1\\\mathbf x_2\end{pmatrix} =A_1\mathbf x_1+A_2\mathbf x_2.

更一般地,若各块大小兼容,

(ABCD)(xy)=(Ax+ByCx+Dy).\begin{pmatrix}A&B\\C&D\end{pmatrix} \begin{pmatrix}\mathbf x\\\mathbf y\end{pmatrix} = \begin{pmatrix}A\mathbf x+B\mathbf y\\C\mathbf x+D\mathbf y\end{pmatrix}.

块可以大小不同,也不必是方阵;共享的边界必须匹配。分块不是一种新乘法,而是在保留原运算的同时,把变量按问题结构分组。

相加、单位矩阵与逆矩阵

同大小矩阵逐项相加和数乘。由按列组合的定义,

(A+B)x=Ax+Bx,A(x+z)=Ax+Az.(A+B)\mathbf x=A\mathbf x+B\mathbf x,\qquad A(\mathbf x+\mathbf z)=A\mathbf x+A\mathbf z.

单位矩阵 InI_n 的对角线元素为 11,其余为 00。它的列就是标准基,所以 Inx=xI_n\mathbf x=\mathbf x。

对于方阵 AA,若存在方阵 CC 同时满足 CA=AC=ICA=AC=I,就称 AA 可逆,并记 C=A−1C=A^{-1}。逆矩阵把输出还原为输入。例如

(2−112)−1=15(21−12).\begin{pmatrix}2&-1\\1&2\end{pmatrix}^{-1} =\frac15\begin{pmatrix}2&1\\-1&2\end{pmatrix}.

把两个矩阵按任一顺序相乘都得到 I2I_2,即可验证。可逆矩阵的方程 Ax=bA\mathbf x=\mathbf b 对每个右端都有唯一解 A−1bA^{-1}\mathbf b。

反过来,如果方阵对每个右端都有唯一解,分别求解 Acj=ejA\mathbf c_j=\mathbf e_j,把解放入矩阵 CC,就得到 AC=IAC=I。又因为齐次方程只有零解,由 A(CA−I)=0A(CA-I)=0 逐列可得 CA=ICA=I。这说明可逆性恰好刻画了“所有目标都可达且系数唯一”。实际求解通常直接消元,不必先构造完整逆矩阵。

为什么矩阵不能随意消去

取

A=(1000),B=(0001).A=\begin{pmatrix}1&0\\0&0\end{pmatrix},\qquad B=\begin{pmatrix}0&0\\0&1\end{pmatrix}.

两者都不是零矩阵,但 AB=0AB=0。因此,矩阵乘积为零不保证某个因子为零。同样,AX=AYAX=AY 不保证 X=YX=Y:矩阵 AA 可能把 X−YX-Y 中的非零信息消去了。

若已知 AA 可逆,才能在左侧同时乘 A−1A^{-1},推出 X=YX=Y。若要消去的是右侧因子,则逆矩阵也必须乘在右侧。乘法不交换,因此位置不能改变。

逆矩阵是唯一的。若 C,DC,D 都是 AA 的逆,则

C=C(AD)=(CA)D=D.C=C(AD)=(CA)D=D.

对于二阶方阵,直接乘法还给出一个可以检验的公式。若 ad−bc≠0ad-bc\ne0,则

(abcd)−1=1ad−bc(d−b−ca).\begin{pmatrix}a&b\\c&d\end{pmatrix}^{-1} =\frac1{ad-bc}\begin{pmatrix}d&-b\\-c&a\end{pmatrix}.

两个矩阵相乘时,非对角项抵消,对角项都为 ad−bcad-bc。这里暂时把它看成乘法恒等式,不需要先用行列式理论。

若 ad−bc=0ad-bc=0,逆不存在。第一行非零时,非零向量 (b,−a)T(b,-a)^{\mathsf T} 会映为零;第一行为零而第二行非零时,可取 (d,−c)T(d,-c)^{\mathsf T};两行都为零则任意非零向量都在核中。任何可逆矩阵都不可能把非零输入映成零,否则乘逆后会得到这个输入也为零。

转置改变哪些索引

转置 ATA^{\mathsf T} 把行与列交换:

(AT)ij=aji.(A^{\mathsf T})_{ij}=a_{ji}.

它把 m×nm\times n 矩阵变成 n×mn\times m 矩阵,通常不是逆矩阵。根据乘积公式,

(AB)T=BTAT.(AB)^{\mathsf T}=B^{\mathsf T}A^{\mathsf T}.

因为右侧的第 (i,j)(i,j) 项是 ∑kbkiajk\sum_k b_{ki}a_{jk},恰好是 ABAB 的第 (j,i)(j,i) 项。后续矩阵与图会解释,为什么对邻接矩阵转置需要特别小心方向约定。

练习

练习读懂矩形矩阵

取

B=(101101).B=\begin{pmatrix}1&0\\1&1\\0&1\end{pmatrix}.

求 B(2,3)TB(2,3)^{\mathsf T},并说明第三个输出来自哪个输入。

解答

输出为 (2,5,3)T(2,5,3)^{\mathsf T}。第三行是 (0,1)(0,1),所以第三个输出只取第二个输入。三个输出并不意味着需要三个输入。

练习顺序与逆运算

若方阵 A,BA,B 都可逆,证明 (AB)−1=B−1A−1(AB)^{-1}=B^{-1}A^{-1}。

解答

利用结合律,(AB)(B−1A−1)=AIA−1=I(AB)(B^{-1}A^{-1})=AIA^{-1}=I,反向相乘也为 II。先撤销最后施加的 AA,再撤销 BB。

练习转置不等于求逆

取对角矩阵 D=diag⁡(2,3)D=\operatorname{diag}(2,3)。分别求转置和逆,并说明二者承担的不同任务。

解答

转置仍为 DD,逆为 diag⁡(1/2,1/3)\operatorname{diag}(1/2,1/3)。转置交换索引,求逆撤销原变换。对称性不保证转置等于逆。

练习从单位输入读矩阵

某个矩阵把 (1,0)(1,0) 映为 (1,2,3)(1,2,3),把 (0,1)(0,1) 映为 (−1,0,2)(-1,0,2)。求它对 (2,−1)(2,-1) 的输出。

解答

两个已知输出就是矩阵的两列,因此输出为 2(1,2,3)−(−1,0,2)=(3,4,4)2(1,2,3)-(-1,0,2)=(3,4,4)。矩阵大小为 3×23\times2。

参考文献

  1. [1] X. Yang, “ENG1005 Week 3: Interpolation and Fitting, Personal Workshop Solutions,” 2024. Personal solutions to Monash ENG1005 workshop problems; source snapshot 77ebe58de2fea53d62533d6dd23caa16108ed109. Repository access may be restricted.. https://github.com/Eryc123Y/ENG1005-2024S2/blob/77ebe58de2fea53d62533d6dd23caa16108ed109/Source%20Code/W3.tex ↩