向量、矩阵和行列式

字面意思 实际意思
向量 排成一列的数字 有向线段(带有方向的线段)、空间内的点
矩阵 拍成矩形的数字 空间到空间的 映射
行列式 麻烦的计算 上面映射对应的「体积扩大率」

基底

下面两个条件满足,一组向量 (e1,,en)(\vec{e_1}, \cdots, \vec{e_n} ) 才能称为基地:

  • (当前空间中的)任何向量 v\vec{v} 都可以表示成

    v=x1e1++xnen\vec{v}=x_1\vec{e_1}+ \cdots + x_n\vec{e_n}

  • 这种表示 唯一

维数

维数 = 基向量的个数 = 坐标的分量数

矩阵

矩阵就是映射(变换)

鸡兔同笼问题

鸡有 x1x_1 只,兔有 x2x_2 只,笼中头的总数为 y1y_1 和脚的总数为 y2y_2,可以表示为

y1=a11x1+a12x2=x1+x2y2=a21x1+a22x2=2x1+4x2\begin{align*} y_1 &= a_{11}x_1+a_{12}x_2=x_1+x_2 \\ y_2 &= a_{21}x_1+a_{22}x_2=2x_1+4x_2 \end{align*}

用矩阵表示就是:

(y1y2)=(a11a12a21a22)(x1x2)=(1124)(x1x2)\left( \begin{matrix} y_1 \\ y_2 \\ \end{matrix} \right) = \left( \begin{matrix} a_{11} & a_{12} \\ a_{21} & a_{22}\\ \end{matrix} \right)\left( \begin{matrix} x_{1}\\ x_{2} \end{matrix} \right)=\left( \begin{matrix} 1 & 1 \\ 2 & 4\\ \end{matrix} \right)\left( \begin{matrix} x_{1}\\ x_{2} \end{matrix} \right)

今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

代入 y1=35,y2=94y_1=35,y_2=94,则:

(3594)=(1124)(x1x2)\left( \begin{matrix} 35 \\ 94 \\ \end{matrix} \right) = \left( \begin{matrix} 1 & 1 \\ 2 & 4\\ \end{matrix} \right)\left( \begin{matrix} x_{1}\\ x_{2} \end{matrix} \right)

用 Mathematica 解:

1
2
3
y = ({{35}, {94}});
m = ({{1, 1}, {2, 4}});
LinearSolve[m, y] // MatrixForm

结果为 (2312)\left( \begin{matrix} 23 \\ 12 \\ \end{matrix} \right) ,那么鸡就有 23 只,兔子有 12 只。

加法、数乘、乘积

满足 f(x+y)=f(x)+f(y)f(x + y) = f(x) + f(y) 以及 f(cx)=cf(x)f(cx) = cf(x) 的映射 ff 称为 线性映射

矩阵的乘积就是映射的合成(注意变换的先后顺序)
矩阵的乘方就是映射的迭代

对角矩阵

非对角元素全部为 0 的矩阵称为 对角矩阵

例如:(2005)\left( \begin{matrix} 2 & 0 \\ 0 & 5 \\ \end{matrix} \right)

由于绝大多元素为 0,通常会用 diagdiag 记法

(a100000a200000a300000a400000a5)=diag(a1,a2,a3,a4,a5)\left( \begin{matrix} a_1 & 0 & 0 & 0 & 0 \\ 0 & a_2 & 0 & 0 & 0 \\ 0 & 0 & a_3 & 0 & 0 \\ 0 & 0 & 0 & a_4 & 0 \\ 0 & 0 & 0 & 0 & a_5 \end{matrix} \right) = diag(a_1,a_2,a_3,a_4,a_5)

Mathematica 中对应的函数为 DiagonalMatrix

1
DiagonalMatrix[{a, b, c, d, e}] // MatrixForm

对角矩阵表示的映射时「沿着坐标轴伸缩」,其中对角元素就是各个轴伸缩的倍率。

逆矩阵

逆矩阵就意味着逆(反向)映射

对于 方阵 AA,它的逆映射对应的矩阵称为 AA 的逆矩阵,记为 A1A^{-1}。对于任意的向量 xx,若有 Ax=yAx=y,则有 A1y=xA^{-1}y=x

(AB)1=B1A1(AB)^{-1}=B^{-1}A^{-1}(理解为,先包装了 B,然后再包装了一层 A,那么反过来,就肯定先拆掉外层的 A,才能拆掉里面的 B)

上面的鸡兔同笼,也可以通过求逆矩阵,用 Mathematica 就是:

1
2
3
y = ({{35}, {94}});
m = ({{1, 1}, {2, 4}});
Inverse[m] . y // MatrixForm

Matlab 则是:

1
2
3
y = [35 94]';
m = [1 1; 2 4];
inv(m) * y

坐标变换与矩阵

  • 坐标变换可以用「乘以方阵 AA」的形式来表示。这里的 AA 存在逆矩阵
  • 乘以某个存在逆矩阵的方阵 AA,也可以用坐标变换来解释

考虑二维空间中的 基底变换 ,选取两组基底 (ex,ey)(\vec{e_x}, \vec{e_y})(ex,ey)(\vec{e_{x}}^{\prime}, \vec{e_{y}}^{\prime})

对于同一个向量 v\vec{v},在不同的基底下有以下两种不同的表示:

v=xex+yey=xex+yey\vec{v} = x\vec{e_x}+y\vec{e_y}=x^{\prime}\vec{e_x}^{\prime}+y^{\prime}\vec{e_y}^{\prime}

如果有基底的变换关系,比如:

ex=3ex2eyey=ex+ey\begin{align*} \vec{e_x}^{\prime}&=3\vec{e_x} - 2\vec{e_y}\\ \vec{e_y}^{\prime}&=-\vec{e_x} + \vec{e_y}\\ \end{align*}

代入可以得到:

v=xex+yey=x(3ex2ey)+y(ex+ey)=(3xy)ex+(2x+y)ey\vec{v}=x^{\prime}\vec{e_x}^{\prime} + y^{\prime}\vec{e_y}^{\prime} = x^{\prime}(3\vec{e_x} - 2\vec{e_y})+ y^{\prime}(-\vec{e_x} + \vec{e_y})=(3x^{\prime}-y^{\prime})\vec{e_x}+(-2x^{\prime} + y^{\prime})\vec{e_y}

对比系数,有

x=3xyy=2x+y\begin{align*} x &= 3x^{\prime} - y^{\prime}\\ y &= -2x^{\prime} + y^{\prime} \end{align*}

可以解出 xx^{\prime}yy^{\prime}

x=x+yy=2x+3y\begin{align*} x^{\prime} &= x + y\\ y^{\prime} &= 2x + 3y \end{align*}

这就是两组坐标的变换法则。用矩阵来改成,就是

(xy)=(3121)(xy)(xy)=(1123)(xy)\begin{align*} \left( \begin{matrix} x \\ y \end{matrix} \right) &= \left( \begin{matrix} 3 & -1 \\ -2 & 1 \end{matrix} \right)\left( \begin{matrix} x^{\prime} \\ y^{\prime} \end{matrix} \right) \\ \left( \begin{matrix} x^{\prime} \\ y^{\prime} \end{matrix} \right) & = \left( \begin{matrix} 1 & 1 \\ 2 & 3 \end{matrix} \right)\left( \begin{matrix} x \\ y \end{matrix} \right) \end{align*}

一般来讲,坐标变换都可以表示为「乘上一个矩阵」。

转置矩阵

矩阵 AA,行列互换,就得到 转置矩阵,记为 ATA^T

共轭转置,每个元素取(复)共轭得到的矩阵:

A=(2+i92i475+5i3)A=(2i79+2i55i43)A = \left(\begin{matrix} 2+\text{i} & 9 - 2\text{i} & 4 \\ 7 & 5 + 5\text{i} & 3\end{matrix} \right) \rightarrow A^{*}=\left( \begin{matrix} 2 - \text{i} & 7 \\ 9 + 2\text{i} & 5 - 5\text{i} \\ 4 & 3 \end{matrix}\right)

行列式与扩大率

A=(1.5000.5)A=\left( \begin{matrix} 1.5 & 0 \\ 0 & 0.5 \end{matrix} \right) 表示线性变换将图形横向变为原来的 1.5 倍,纵向变为原来的 0.5 倍。于是面积变为原来的 1.5×0.5=0.751.5 \times 0.5 = 0.75 倍。

2 阶方阵 A=(a1,a2)A=(a_1,a_2) 也可以解释为由向量 a1,a2a_1,a_2 围成的 平行四边形的面积

面积扩大率与原图形的位置和形状都无关。这样的面积扩大率就称为该矩阵的 行列式,记为 detA=0.75det A =0.75

3 阶方阵 A=(a1,a2,a3)A=(a_1,a_2, a_3) 也可以解释为由向量 a1,a2,a3a_1,a_2,a_3 围成的 平行六面体的体积

对于三阶方阵,行列式表示体积扩大率。

1
2
3
4
Det[({
{1.0, 0},
{0, 0.5}
})]

简单性质

detI=1det(AB)=(detA)(detB)det I = 1 \\ det(AB)=(det A)(det B)

利用这两个公式,可以得到

detA1=1detAdetA^{-1}=\frac{1}{det A}

进一步可以得到,当 detA=0det A = 0 时,A1A^{-1} 不存在。原因很简单,如果 A1A^{-1} 存在,那么 (detA)(detA1)=1(det A)(det A^{-1}) = 1,而 0 乘以 某个数得到 1,无疑是有问题的。

秩、逆矩阵、线性方程组

由已知的结果 yy 去推测 xx 的问题,称为 逆问题

实际问题可能还会有噪音,也就是不仅仅是 y=Axy=Ax,还要加上噪音,变成 y=Ax+by=Ax+b

可逆矩阵

如果 xxyy 具有相同的维数,AA 是方阵,如果 AA 的逆矩阵存在,就可以直接使用公式:

x=A1yx=A^{-1}y

存在逆矩阵的方阵 AA,则称为 正则矩阵(可逆矩阵、非奇异矩阵),而不是正则矩阵的,则称为 奇异矩阵

维度不足

如果 x=(x1,,xn)Tx=(x_1,\cdots,x_n)^{T}y=(x1,,xm)Ty=(x_1,\cdots,x_m)^{T} 的维度不同 nmn\ne m时,这时候需要面对只有 mm 条线索要解出 nn 个未知量。

如果 yy 的维度比 xx 的维度少。这里以 m=2,n=3m=2,n=3 为例,那么 AA 对应的是「xx 所在的 3 维 空间」到 「yy 所在的 2 维空间」的映射。从高维到低维度映射,实质上就会有多个 xx 被转移到 yy 上。

正式一点的说法是给定 AA,在映射的作用下,满足 Ax=0Ax=0xx 的集合称为 AA,记为 KerAKer A

只知道映射后的点,是无法还原的。(高维度信息已经丢失了)。

维度过剩

如果 yy 的维度比 xx 的维度多。现在以 m=3,n=2m = 3, n = 2 为例,因为现在是从低维度到高维度。所以要把目标的 3 维空间全覆盖是不可能的。由于现实问题中存在噪音,在噪音的影响可能会出现理论上不可能出现的值。

数学上,对于给定的 AA,将 xx 进行各种不同变换。在 AA 的 作用下,y=Axy=Ax 构成的集合,称为 AA(image),记为 ImAIm A。例如从 2 维映射到 3 维,ImAIm A 就是 2 维(平面)。

维度相同

维度相同也并不不够,因为有的条件可能没有提供额外的信息,例如:A=(0.80.60.40.3)A=\left( \begin{matrix} 0.8 & -0.6 \\ 0.4 & -0.3 \end{matrix} \right)。这两个条件是倍数关系,在空间当中就只有长度差异,属于冗余的条件。

单射、满射、双射

如果得到结果 yyxx 是唯一的,那么就是 单射

满射 称为「映上的映射」

双射 则是在单射和满射同时成立时,也被称为「一对一映上的映射」。

如果将 y 理解为萝卜坑,x 理解为萝卜。那么单射就是有一个萝卜一个坑,有坑不一定有萝卜;满射就是,所有坑都有萝卜,而且可能不止一个萝卜;双射就是有坑就有萝卜,而且有且只有一个萝卜。

维度定理(秩-零化度定理)

对于 m×nm \times n 矩阵 AA,有

dimKerA+dimImA=ndim Ker A + dim Im A = n

压缩掉 KerAKer A 的维数,自然就剩下 ImAIm A 的维数,可以得到两个推论:

  • m<nm < n,则 AA 不会是单射
  • m>nm > n,则 AA 不会是满射

线性相关、线性无关

「压缩扁平化」:不同的 xxxx\prime 变换到相同的 yy

(a1,,an)(x1xn)=(a1,,an)(x1xn)(a_1,\cdots,a_n) \left( \begin{matrix}x_1 \\ \vdots \\ x_n \end{matrix} \right) = (a_1,\cdots,a_n) \left( \begin{matrix}x_1^{\prime} \\ \vdots \\ x_n^{\prime} \end{matrix} \right)

也就是下面的式子成立:

x1a1++xnan=x1a1++xnanx_1 a_1 + \cdots + x_n a_n = x_1^{\prime} a_1 + \cdots + x_n^{\prime} a_n

xxx\ne x^{\prime} 前提下,那么就称 a1,,ana_1,\cdots,a_n线性相关 。反之,不是线性相关的情况下,称 a1,,ana_1,\cdots,a_n 线性无关

  • AA 的各个列向量线性相关 = 「压缩」
  • AA 的各个列向量线性无关 = 「不压缩」

基底比线性无关更为严格 ,例如:e1=(1,0,0)Te_1=(1,0,0)^{T}e2=(0,1,0)Te_2 = (0,1,0)^{T} 线性无关,但是 (e1,e2)(e_1, e_2) 不构成基底。因为类似 x=(1,1,1)Tx=(1,1,1)^{T} 无法写成 e1e_1e2e_2 的组合。要构成基底,一定要有足够多线性无关的向量。

秩:实际条件的个数

「目标空间全体是否能够被全部覆盖到」

ImAIm A 的维数,实际上代表了条件的实际个数。一旦知道这个维数,就可以得到答案。

AAm×nm\times n 矩阵,也就是 nn 维向量 xx 变成 mm 维向量 y=Axy=Ax 的映射。这里将 ImAIm A 的维数 dimImAdim Im A 命名为矩阵 AA(rank),记为 rank A,那么就有:

dimKerA+rankA=ndim Ker A + rank A = n

  • rankA=nrank A = n (秩与原空间(定义域)的维数相等),那么 AA 是单射
  • rankA=mrank A = m (秩与目标空间(值域)的维数相等),那么 AA 是满射

秩的基本性质

AAm×nm\times n 矩阵,有以下的性质:

  • rankAmrank A \leqslant m
  • rankAnrank A \leqslant n

目标空间是 mm 维,包含在其中的 ImAIm A 无论如何都不可能让自己的维数超过 mm;原空间是 nn 维,把空间全体通过 AA 映射出去,也不可能超过原来的维数 nn

乘以可逆矩阵后,维数不发生变化 。也就是所,若 PQP、Q 可逆,则

rank(PA)=rankArank(AQ)=rankA\begin{align*} rank(PA) = rank A \\ rank(AQ) = rank A \end{align*}

可逆矩阵对应了「非压缩扁平化」的映射,所以施加 A 的作用之前和之后插入一个 PPQQ,维数不发生变化。

对于一般矩阵 AA,BB,有

rank(BA)rankArank(BA)rankB\begin{align*} rank(BA) \leqslant rank A \\ rank(BA) \leqslant rank B \end{align*}

  • 第一个阶段:原空间 UUAA 的作用下,移动到空间 VV
  • 第二个阶段:空间 VVBB 的作用下,移动到空间 WW,所求即为 WW 的维数

经过第一个阶段后,空间 VV 的维数已经变成 rankArank A,接下来无论 BB 怎么变换,最终的维数都不会超过 rankArank A。第二个阶段,即使空间全体都通过 BB 进行了变换,最终维数也不会超过 rankBrank B。所以 VV 作为空间的一部分,在 BB 的作用下进行变换后,维数自然不会超过 rankBrank B

转置矩阵的秩不变:rankAT=rankArank A^{T} = rank A

逆矩阵存在的条件

(只讨论方阵)

核心就是是不是被「压缩扁平化的映射」

「非压缩扁平化映射」(单射)与「目标空间被全部覆盖」(满射)是等价的。保证映射为双射,逆映射存在,那么逆矩阵就存在。

可逆性小结

  • 对于任何 nn 维向量 yy,使得 y=Axy=Ax 成立的 xx 只有一个
  • AA 是可逆矩阵(逆矩阵 A1A^{-1} 存在)
  • AA 对应的映射为「压缩扁平化」映射
    • AA 对应的映射是单射
  • 使得 Ax=0Ax=0 成立仅有 x=0x=0 一个值
    • KerAKer A 仅包含原点这一个点
    • dimKerA=0dim KerA = 0
    • AA 的列向量 a1,,ana_1,\cdots,a_n 线性无关
  • 在 A 的映射作用下,目标空间可以被全部覆盖到
    • AA 对应的映射是满射
    • ImAImAnn 维空间全体
  • rankA=dimImA=nrank A = dim Im A = n
  • detA0det A \ne 0
  • AA 不含 0 的特征值
  • 以上的 AA 替换成 ATA^T

参考资料

  1. Wolfram 语言与系统:参考资料中心
  2. 平冈和幸,堀玄.程序员的数学.3,线性代数[M].人民邮电出版社,2016.