线性代数概论

引言

想了很久从哪里开始,还是从我们为什么要学它开始吧,这篇文章中我不想谈太多线性代数的具体内容,先谈谈学习路线,比较推荐的学习路线是先在 B 站看 3Blue1Brown 的线性代数入门系列视频 线性代数的本质,然后看 Linear Algebra Done Right 或者竺院宏篇巨著 Linear Algebra Left Undone (注意到它和前面形成对偶关系)。好教材还包括 MIT 的 Gilbert Strang 的教材 Introduction to Linear Algebra,另外你可以阅读我自己做的线性代数笔记 Linear Algebra Note,里面倾注了很多我对线性代数这门课的思考。

线性代数究竟是什么样子,国内教材搞了很多年,也没有完全搞清楚,可能几何与代数那本书的思路比较好,搞了个映射起手,但是最后线性代数(甲)僵化了

为什么要学线性代数呢?这是很多学生没搞明白的问题,学到最后只知道矩阵运算,证明题也不明所以,后续课程用到时也不求甚解地推导公式或者干脆直接抄别人的运算结果。虽然从计算上来讲这么做是没什么问题,但是我们还是希望多理解一些的,于是,我们不得不思考这个问题,即为什么我们要学线性代数。

从高中开始我们就在接触函数的概念,但是我们研究的多是一元函数,也就是说 RR。为了研究多维的世界,我们需要线性代数(需要说明的是,成千上万的维度是非常常见的,例如在计算机视觉、自然语言处理、数据分析、生物学等多个领域都很容易找到高维数据的例子)。直接研究多维的函数似乎是非常棘手的一件事情,那么我们不妨从简单的情形研究起,拓展到复杂的情形。一种是研究简单的函数,一种是研究较低的维度,然后拓展而研究一般维度上一般函数的性质。简单的函数构成了线性代数,较低的维度构成了初步的多元微积分,大体来讲可以列出这么一个表格

 一维低维一般维度
线性函数初中数学(一次函数)初中数学(方程组)线性代数
一般函数一元极限、一元微积分线,面,体积分、多元微分多变量微积分

图肯定是有疏漏之处,但是大体可以让我们产生一个印象:线性代数,从其本质上,研究的是一般维度上的线性函数,或者与线性函数相关的性质,是为了让我们方便处理高维问题的工具。

我看线性代数

众所周知,公式+1,读者减半,所以不想看公式的可以直接跳到 下一节 在问什么是线性函数之前我想还要再说明一个问题,为什么是线性函数,而不是其它函数,难道六大基本函数就不是函数吗?这背后的原因有很多,但是我认为最简单的一点是,线性函数可以帮助你小量近似,这对抓主要矛盾很有用。举出一个例子,f(x,y)=x2+y2. 如果我们考虑 (2,1) 点附近的性质,我们就会发现

f(2+Δx,1+Δy)=4+4Δx+(Δx)2+1+2Δy+(Δy)2=5+(4Δx+2Δy)+()

这里的小量明确定义是什么暂且不论,我们至少可以认识到 (Δx)2 这样的东西在 Δx 很小的时候是可以被忽略掉的,于是我们差不多可以写出

Δf4Δx+2Δy at (2,1)

我们发现足够光滑的函数总是可以这么干,正如你可以给一元的光滑函数做切线一样,所以当我们研究一个点 “附近” 的行为时,一次项以上都不重要了。而其它的函数也关系不大,毕竟,ex0 附近的值确实和 1+x 没啥太大差别(找个图形计算器自己验证一下你就会同意这一点)。所以,有一次项大体上来讲就够了。

那么,什么是线性函数呢?从其定义上来讲,线性函数是这样一个函数,使得

f(x1+x2)=f(x1)+f(x2),f(cx)=cf(x)

传统地来说,我们会把向量写成横着的,但是线性代数教材中通常把它写成竖着的,这个我们暂且不论。这里 x 是向量,f 吃进去一个向量,返回一个向量,也就是说它看起来可能长这样:

x=(x1,x2,,xn)

而输出

y=f(x)=(y1,y2,,ym)

注意到它们不必拥有相同的维度。虽然定义看起来很绕,但是你差不多可以认为 y=f(x) 总是可以写成若干个一次函数的和,如果 ym 个分量,xn 个分量,这等于说可以写成

y1=a11x1+a12x2++a1nxny2=a21x1+a22x2++a2nxnym=am1x1+am2x2++amnxn

碎碎念:为了考虑一般维度的问题,我们不妨先在一维的最简单情况下讨论,如果一个函数想要满足这个条件,那么它一定是一个正比例函数,即 y=ax. 只需要在 f(cx)=cf(x) 中令 x=1,a=f(1) 就可以看出这一点。而一般来讲,如果 f:RnRm 是线性的,那么根据定义它就不得不满足类似的推论,即每个 y 的分量都可以写为 x 的线性组合

为了方便表示这一大堆东西,令人闻风丧胆的「矩阵」就这么出现了,但是它归根结底只是个把一堆数包装起来的记号而已(这种思想就有面向对象的感觉了,与前面 m×n 个松散的数做乘法和求和相比,矩阵让表达式更加紧凑,为了符合上面一排表达式的格式,我们把向量写成竖着的,另外我会习惯写成方括号,上课的教材上用的是圆括号,这没啥区别,纯粹是个人习惯问题)

y=[y1y2ym]=[a11a12a1na21a22a2nam1am2amn][x1x2xm]

把变量提取出来,剩下数字构成的阵列,这个东西就是「矩阵」,一堆求和式(至少在形式上)变成了 y=Ax. 实现了对多个变量的一种抽象,本质上这个 A 实现的就是一个线性函数,每行作用到右边的向量上无非是对应的项相加求和,最终得到了 y.

那么研究方程组的解就变成了一个已知 yAx=y 对应的 x 问题,从初中开始就会的加减消元在这里被拓展为了高斯消元,表现在矩阵上就成了行之间的加减,研究矩阵作为一个函数的性质,就需要引出一些和它相关的量,于是有了秩和行列式的概念,除此之外还有特征值,如果去看我的笔记,里面会有我的详细引入,在这里就不讲太多。

最让人头疼的部分可能是二次型,因为它根本就不是线性映射,而(几乎)是 f:RnR 的一个齐次二次函数. 只是强行借用了矩阵符号来表示。

使用黑话讲,作为线性变换的矩阵是 (1,1) 型的张量,而二次型是 (2,0) 形的张量,两个之间并不相同,但是内积可以诱导相关关系

大体上来讲,我认为切入的最好例子是多元函数的极值点问题。我们知道一元函数想在一点处取到极小值,如果在这点光滑,那么它的图像在局部“通常”和向上弯的抛物线 y=y0+a(xx0)2,a>0 差不多,这时因为一阶的小量不成为主要矛盾,函数值变化的主要矛盾就变成了二阶的部分。这个向上弯的性质就被称为正定性,反之就是负定性。事实上在一阶变化量为 0 的情况下,只有在二阶小量对应的函数正定时才能取得函数的极小值。考虑到极小值是一个常见的需要判定的问题,考虑二次函数自然也非常重要,于是需要这一块的内容,它在优化问题中也非常常见。当理解了抛物线之后我们就会发现正定的二次函数截出的等高线/面会是椭圆,椭球(或者更高维的东西)这一部分的内容又和多元微积分中的空间解析几何产生关系(只不过除了对二次曲面做出基本的分类之外,微积分中并没有进行更加深刻的研究,也许是不想增加大家的学习负担)。

如何学线性代数

那么,我对学习线性代数的看法是怎么样的呢?一千个人的眼中有一千本线性代数,它实在是太常见了,而每个人用到它的方式都不尽相同,故而会产生完全不同的理解。但是总的来讲我提供几个建议

  1. 多看书,多思考

  2. 把矩阵看成映射:虽然从存储上,矩阵就是一个二维的数表,但是把它仅仅看成一个数表会丢失很多,它描述的是两个空间之间的映射(或者说多元函数)关系

  3. 面向对象:把向量、矩阵、向量组作为对象,它们有着自己的属性和行为,虽然在最开始可以以高斯消元起手看矩阵的性质,但是归根结底还是要把这些操作抽象出来理解作为一个整体。

  4. 联系几何:如果不理解背后的几何原因,很多概念的定义可能会看起来费解,因此,我们应当想想定义一个概念的几何动机是什么。

  5. 如果可以的话,学着画交换图:画交换图可以帮助你快速理解映射关系、基底变换、矩阵乘法、相似变换,它也是理解更进一步的代数的有力工具。我的笔记中就画了大量交换图,希望大家可以多多理解。

    注:交换图就是这样的东西,会画还是挺方便的

    交换图示例

    βα 表示复合函数,其中 (βα)(x)=β(α(x))

    (既然都会画交换图了,去看看抽象代数吧 x)

  6. 加入线代群(群号612551642)来水群(×)