黄鼠博客

回顾线性空间

2017-10-11

前言

博主一只程序猿,如有描述不对的地方,还望指正

线性空间(向量空间)是线性代数中的概念。笔者现在大四,闲来无事翻翻旧书。相比当年,对线性空间的有了更深入的理解,觉得忘记了挺可惜,特此记录一下。

什么是线性空间

不严谨地讲,线性空间就是一个定义了加法数乘两种运算的非空集合

这里的元素可以是任何东西,可以是矢量,可以是力,可以是矩阵,也可以是小猫小狗,只要你能为它们定义适合它们的加法数乘两种运算, 这个集合就可以构成一个线性空间,不管它的元素具体是什么,这里统称为向量加法数乘也不要求是算数意义上的加法数乘,只要它是一种二元运算并满足一定要求就行,具体满足的要求且看下面的严谨定义。


定义
设V为一个非空集合,\(F\)为一个数域。如果\(V\)上定义了一种代数运算,称之为加法运算:
\(\forall\boldsymbol{\alpha,\beta}\in V\) 总有唯一确定元素 \(\boldsymbol{\gamma} \in V\) 与之对应,并称 \(\boldsymbol{\gamma}\)\(\boldsymbol{\alpha}\)\(\boldsymbol{\beta}\) 的和,记作\(\boldsymbol{\gamma}=\boldsymbol{\alpha}+\boldsymbol{\beta}\)。同时在数域F与 \(V\)之间还定义了另外一种代数运算,称之为数量乘法(数乘): \(\forall k\in F, \forall\boldsymbol{\alpha}\in V\) 有唯一确定的 \(\boldsymbol{\delta}\in V\) 与之对应,并称 \(\boldsymbol{\delta}\)\(k\)\(\boldsymbol{\alpha}\)的数量乘积,记作 \(\boldsymbol{\delta} = k\boldsymbol{\alpha}\)。如果以上这两种运算满足下列8条规律,则称V为数域F上的线性空间,V中的元素不管它原来的性质如何,都统称为V中的向量

加法
1. 交换律\(\boldsymbol{\alpha}+\boldsymbol{\beta}=\boldsymbol{\beta}+\boldsymbol{\alpha}\)
2. 结合律\((\boldsymbol{\alpha}+\boldsymbol{\beta}) + \boldsymbol{\gamma}=\boldsymbol{\alpha}+(\boldsymbol{\beta} + \boldsymbol{\gamma})\)
3. 单位元V中有一个零元素 0, 对于任意 \(\boldsymbol{\alpha} \in V\), 都有 \(\boldsymbol{\alpha}+ \boldsymbol{0}=\boldsymbol{\alpha}\)
4. 逆元对于任意 \(\boldsymbol{\alpha} \in V\), 都有 \(\boldsymbol{-\alpha} \in V\) 使得 \(\boldsymbol{\alpha}+(\boldsymbol{-\alpha})=\boldsymbol{0}\)
数乘
5. 与'向量加法'协调\(k\cdot(\boldsymbol{\alpha}+\boldsymbol{\beta})=k\cdot \boldsymbol{\alpha}+k\cdot \boldsymbol{\beta}\)
6. 与'数的加法'协调\((k+l)\boldsymbol{\alpha} = k\boldsymbol{\alpha}+l\boldsymbol{\alpha}\)
7. 与'数的乘法'协调\(k(l\boldsymbol{\alpha})=(kl)\boldsymbol{\alpha}\)
8. 单位元\(1\cdot\boldsymbol{\alpha} = \boldsymbol{\alpha}\)

参考维基百科


直观地看,线性空间就是一个非空集合,其中的元素(称为向量)拥有封闭的加法数乘两种运算,并满足以上8条规律。无论你定义的线性空间多么奇怪,不管它的元素是小猫还是小狗,它都满足你在《线性代数》中学到的那些规律。

有了这个定义,可以举出一些常见的例子

  • 的全体集合构成一个线性空间
  • 几何上的向量的全体集合构成一个线性空间
  • 实数域R上的全体\(m\times n\)矩阵组成的集合\(R^{m\times n}\),按照矩阵的加法及数与矩阵的乘法,是一个实数域上的线性空间
  • 定义在R上的函数构成的集合,按照函数的加法与函数的乘法,构成一个实数域上的线性空间
  • 实数域上次数不超过n的多项式全体\(P[x]_n=\{a_0x^n+a_1x^{n-1} + ...a_n \mid a_0,a_1...a_n\in \boldsymbol{R}\}\) 构成一个线性空间

可以看到,线性空间是高度抽象的,可以描述很多具体的问题。这样,只要我们研究清楚线性空间这个抽象概念的性质,就可以自然推广到满足线性空间性质的所有具体问题上。这是数学化的强大力量,带我们从更一般的角度看世界。

线性空间的一些性质

线性空间中有一些特殊的向量组,向量组中的向量线性无关,用这些向量可以线性表示整个线性空间的向量,这就是线性空间的,它不止一个,但各个基中的向量个数一定相等,这个数目也叫做线性空间的维数。用某个线性表示一个向量的一组系数,叫做这个向量在这个 下的坐标。构成线性空间的向量可以是任何东西,自然是可以是任何东西,可以是一组力,亦可是一组小猫小狗

我们生存的空间可以看作一个线性空间,我们可以用三个不共面线性表示我们世界任意一个坐标,所以我们世界的维数是3。在没有线性空间的抽象之前,我们只知道我们这个世界有坐标有维度,殊不知矩阵的世界,函数的世界,多项式的世界,微分方程解的世界等等都可以有坐标,有维度(注意,对于无限维空间,坐标这个说法不准确)。

举个函数线性空间的例子,傅立叶变换,就是试图将一个函数用一组正交(也是线性无关)的三角函数表示,只不过这个函数空间维度有点高,是无限维。

重新理解线性方程组

线性方程组 \[ \left\{\begin{matrix} a_{11}x_1+ a_{12}x_2 + \dots +a_{1n}x_n = b_1 \\ \cdots \\ a_{m1}x_1+ a_{m2}x_2 + \dots +a_{mn}x_n = b_m \\ \end{matrix}\right. \] 可以写作 \[ (\alpha_1,\alpha_2,\cdots,\alpha_n) \cdot \left(\begin{array}{c} x_1\\ x_2\\ \vdots\\ x_n \end{array} \right) = \beta \] 其中 \(\beta= \left(\begin{array}{c} b_1\\ b_2\\ \vdots\\ b_n \end{array} \right), \alpha_i = \left(\begin{array}{c} a_{1i}\\ a_{2i}\\ \vdots\\ a_{ni} \end{array} \right)\)

所以,线性方程组解就是\(\beta\)被列向量组\((\alpha_1,\alpha_2,\cdots,\alpha_n)\)线性表出的系数。方程组有没有解,完全等价于\(\beta\)能不能被向量组线性表出。如果方程组有解,解唯一不唯一,完全等价于系数向量组\((\alpha_1,\alpha_2,\cdots,\alpha_n)\)是否线性无关。线性无关的向量组构成某个线性空间的一组基,可以证明\(\beta\)被它们线性表出的方式一定是唯一的(这也说明坐标是唯一确定的),此时线性方程组有唯一解。
(建议读者推导一下,为什么线性无关的向量表出任何一个向量的方式都是唯一的)
不知道读者看到这里,是否感受到了线性方程组和是线性空间之间的有趣关联没有。

坐标变换

上文讲到,线性空间中的每一个向量可以由线性表示,而线性空间中的不唯一,所以,同一个向量在不同的线性表示下会有不同的坐标。那么将一个向量从一个下的坐标转化为另一个下的坐标就叫做坐标变换

那么,应该如何坐标变换变换呢。来一点数学推导吧:
设线性空间V中的两组基为\(\boldsymbol{\varepsilon_1,\varepsilon_2,...,\varepsilon_n}\)\(\boldsymbol{ {\varepsilon}'_1, {\varepsilon}'_1,...,{\varepsilon}'_n}\) 由于每组基都可以线性表示空间中的一个向量,所以有方程: \[ \left\{\begin{matrix} \boldsymbol{ {\varepsilon}'_1} = a_{11}\boldsymbol{\varepsilon_1}+a_{21}\boldsymbol{\varepsilon_2}+\cdots+ a_{n1}\boldsymbol{\varepsilon_n} \\\boldsymbol{ {\varepsilon}'_2} = a_{12}\boldsymbol{\varepsilon_1}+a_{22}\boldsymbol{\varepsilon_2}+\cdots+ a_{n2}\boldsymbol{\varepsilon_n} \\\vdots \\\boldsymbol{ {\varepsilon}'_n} = a_{1n}\boldsymbol{\varepsilon_1}+a_{2n}\boldsymbol{\varepsilon_2}+\cdots+ a_{nn}\boldsymbol{\varepsilon_n} \end{matrix}\right. \] 方程可写作 \[ [\boldsymbol{ {\varepsilon}'_1, {\varepsilon}'_1,...,{\varepsilon}'_n}]=[\boldsymbol{\varepsilon_1,\varepsilon_2,...,\varepsilon_n}] \begin{bmatrix} a_{11} & \cdots & a_{1n}\\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \end{bmatrix} \]\(A=\begin{bmatrix} a_{11} & \cdots & a_{1n}\\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \end{bmatrix}\)为由基 \(\boldsymbol{\varepsilon_1,\varepsilon_2,...,\varepsilon_n}\)(原基) 到基 \(\boldsymbol{ {\varepsilon}'_1, {\varepsilon}'_1,...,{\varepsilon}'_n}\)(新基)的过渡矩阵

可以证明,向量在新基下的坐标等于过渡矩阵逆矩阵左乘向量在原基下的坐标。 即 \[\begin{bmatrix}a'_1 \\ a'_2 \\ \vdots \\ a'_n\end{bmatrix}=A^{-1}\cdot\begin{bmatrix}a_1 \\ a_2 \\ \vdots \\ a_n\end{bmatrix} \]

所以想要坐标变换,只需要求过渡矩阵就可以了,也就是得到上面方程的系数。

可以看到,渡矩阵可以表示坐标变换,但不是所有矩阵都是这样的意义。矩阵不过就是一张表,它可以表示成绩表,工资表,方程的系数表等等,矩阵还可以表达什么呢?我们继续往下看。

线性映射和线性变换

进入这一节之前,请读者牢记一点,坐标变换不同于线性变换

我们考虑从一个线性空间到另一个线性空间的一种映射,它保加法,保数乘,我们把它叫做线性映射。
定义
\(L\),\(M\)\(F\)上的数域, 如果\(f:L\rightarrow M\)满足

  • \(\forall \alpha_1,\alpha_2 \in L \quad f(\alpha_1+\alpha_2) = f(\alpha_1) + f(\alpha_2)\) 保加法
  • \(\forall \alpha \in L, \forall k \in F \quad f(k\alpha) = kf(\alpha)\) 保数乘

则称\(f\)为从线性空间\(L\)到线性空间\(M\)线性映射, 如果\(L\)\(M\)是同一个线性空间,则称\(f\)线性变换。考虑到线性映射和线性变换很类似,本质都相同,可以认为线性变换是特殊的线性映射,下面就不做严格区分了。

线性映射和线性变换普遍存在,我们常见的旋转拉伸缩放都是其中的例子。这里值得留意的是平移不是线性变换!不信我们可以验证一下, 不可否认, 任何平移操作都是如下这种形式的映射\[f(\alpha) = \alpha+v\] 其中\(v\)是平移偏移向量(假设不为0),很明显它既不保数乘又不保加法:)。平移变换不是线性变换,但它却是仿射变换,计算机图形学中提到了一种叫仿射空间的东西,目的就是方便处理这类仿射变换,它能将3D游戏中经常遇到的各种变换统一,更多内容可以参考计算机图形学相关资料。

我们隐约感受到线性映射一定是十分有用的东西,可是怎么把这种映射显式地表达出来呢?有没有一种简单统一的解析表达式呢?

答案令人感到兴奋,不仅有,而且相当漂亮。那就是矩阵。线性代数告诉我们只要确定了线性映射两个空间的,(例如\((\varepsilon_1,\cdots,\varepsilon_n)\)\((\beta_1,\cdots,\beta_m)\)),就有唯一确定的一个矩阵\(A\)与之对应, 而且矩阵\(A\)的每一个列向量就是对应的原基向量映射后的坐标。反之,如果基确定,任何一个矩阵都唯一确定了一个线性映射,对于一个\(m \times n\)的矩阵\(A\), 表达的就是一个从n维空间向m维空间的线性映射。因此矩阵和线性映射之间建立了一种一一对应关系(基选定的情况下)[推导十分简单,但是有点啰嗦,这里就不写出来了]

\[ (f(\varepsilon_1),\cdots,f(\varepsilon_n)) = (\beta_1,\cdots,\beta_m)A \]

具体而言,如何用矩阵表征线性映射呢?假如说,对于线性映射\(f: L\rightarrow M\) 任意\(\alpha \in L\)在某组基下的坐标是\(x\)(列向量),\(f(\alpha)\) 的坐标是 \(x'\) 那么可以写出 \(x'=Ax\) 其中矩阵\(A\)的每一个列向量就是对应的原基向量映射后的坐标。

线性变换

之前说了,线性变换是特殊的线性映射,表示一个空间到自己的线性映射(注意不一定是满射),它有些特殊的性质,这里单独讨论。

对于线性变换的矩阵:

  • 一定是方阵
  • 不同基下,同一个线性变换的矩阵是相似的,而相似变换矩阵\(P\)为基之间的过渡矩阵,记为\(A' = P^{-1}AP\)
  • 它的行列式表示空间变换的缩放率
  • 它的特征向量表示在该矩阵的变换下,空间中只发生伸缩而不发生旋转的向量,而对应特征值表示伸缩率
  • 如果可以对角化,则说明该线性映射在某组基下仅有坐标轴方向的伸缩

特别提示 线性变换不同于坐标变换,虽然他们都能用方阵表征。坐标变换时,向量本身没变,空间也没变,只是坐标系变了。而线性变换是向量到向量的映射(函数),输入为一个向量,输出为另一个向量,向量本身发生了改变,而此时坐标系反而没有变。由此可见它们是有本质区别的,表达的完全是不同的现象,只是因为矩阵这个工具而联系到了一起

欧氏空间和酉空间

如果在线性空间的基础上,再定义内积运算,就可以得到欧氏空间。定义复内积运算,就可以得到酉空间。

值得注意的是,我们常用的“点积”只是内积的一种特殊情况,内积其实也是很广泛的定义,只要满足线性对称正定三个条件的任何二元运算都是内积运算。这样定义我们可以在更一般的线性空间(例如我们之前说的小猫小狗空间)定义内积,而不依赖于分量形式的向量。

有意思的是,无论内积定义如何复杂,在选定基的情况下,内积都可以用一个可逆的,对称的,非负的方阵\(A\)唯一表达,并称这个矩阵为度量矩阵。任意两个向量\(X,Y\)的内积都可以写作\(X^TAY\)的形式,我们常用的点积其实就是当\(A\)为单位阵的特殊情况。值得注意的是,不同基下,同一个内积运算的度量矩阵合同的,合同变换矩阵为基之间的过渡矩阵\(C\),记为 \(A'=C^TAC\)。可以证明,一切测度矩阵都合同于单位阵,所以,无论定义内积多么复杂,都可以看作是点积在另外一组基下的表达。

有了内积,我们就可以得到一些诸如正交(垂直),投影,角度,距离等相关的性质。有了距离是不是就有了微积分那套理论了呢?~内容太丰富,这里就不展开讲了。

(这部分未完待续^_^)

小尾巴

如果你和我一样是学计算机/软件的,千万不要害怕数学。正是数学化和抽象化赋予了我们现代文明,赋予了我们认知世界的科学方法。抽象化的力量是强大的,如同写程序,面向对象的抽象设计理念,让我们有能力去构建更大更复杂的系统。

世界的美好不仅是幸福、安逸和享乐,还有享受探索,理解世界带来的无尽快乐。

参考文献

[1] Strang, G. (1993). The Fundamental Theorem of Linear Algebra. The American Mathematical Monthly, 100(9), 848-855.

使用支付宝打赏
使用微信打赏

喜欢这篇文章,可以小小地打个赏~