简介:源自MIT公开课的线性代数学习笔记,系统梳理了向量空间、矩阵变换与方程组求解等核心主题,适合高校学生、考研备考者及自学编程与机器学习的人群作为入门或复习参考资料。内容涵盖目录方程组的几何解释、矩阵消元、LU分解、四个基本子空间、投影与最小二乘、特征值与特征向量等十余个重要章节,并对AX=0与AX=b的求解、正交投影及Gram-Schmidt正交化进行了系统分析,每个知识点均辅以例题与推导思路,帮助读者理解线性代数的几何直觉和实际应用。资源为PDF格式,共1个文件,包体大小约506KB,便于移动设备或电脑上直接阅读与标注,也可配合MIT公开课视频逐章节对照学习。截至目前已有1074人学习下载,适合需要系统梳理概念、对照课堂内容查漏补缺的学习者使用。
1. 一份被反复收藏却很少读完的 PDF:这份线性代数笔记到底该怎么用
很多人的网盘里都躺着这份 PDF,真正翻完的却没几个。它看起来像教科书,其实是课堂讲义的整理稿,记录的是讲课者如何一步步想通一个问题的过程,而不是给你归好的考点清单。把它当数学书从第一页读到最后一页,多半在第二章就放弃了;把它当工程资料反复迭代,它才能变成你最顺手的一本参考手册。MIT 公开课的线性代数笔记,覆盖从消元解方程到奇异值分解的完整主线,是算法岗从业者补基础时的常见首选材料。它适合三类人:学过但忘光的工程师、刚转行做数据处理和机器学习的新人、以及想系统捡起线代的自学者。这份笔记真正的价值不在于证明多严谨,而在于它始终追问「这个概念在说什么、能拿去做什么」,而这个追问方式,和工程师解决问题的方式是一致的。
2. 笔记里到底有什么:一张给工程师的内容地图
先说一个可能让很多人意外的事实:这份线性代数笔记的顺序,和多数国内教材不一样。它不讲行列式开头,而是从看似平淡的消元开始,把矩阵当成记录操作过程的表格。这个顺序对工程师极其友好:你做最小二乘、做数据变换时,脑子里跑的就是消元那套东西的推广。下面按三块地图介绍内容,你可以直接定位自己该精读哪部分。
2.1 开篇的消元与矩阵乘法:以为是复习,其实是全书的地基
笔记的第一条主线是消元。很多读者翻到这一章,觉得是高中内容就跳过了,这是全书的第一个翻车点。消元看起来只是把方程组的系数不断相减,但笔记真正想让你看到的是:消元过程等价于把 A 拆成 A = LU,L 是下三角矩阵,U 是上三角矩阵。后面讲行列式计算、讲最小二乘的正规方程,都会反复用回这个分解。我一般会拦着想跳过的朋友:宁可把这一章的例题全做一遍,也不要急着去看特征值。A = LU 的视角立不住,后面讨论 Ax = b 就只剩一堆公式,没有骨架。
第二个容易被忽略的点是矩阵乘法的三种视角。笔记并排给出了按行、按列、按元素三种解释,其中按列视角最关键:Ax 表示 A 的列向量的线性组合。这一句话直接决定后面所有关于列空间、解的存在性的判断。很多人在这里只记住了行乘列的规则,没有建立「矩阵乘向量就是给列做组合」的画面,到四个子空间那节就彻底跟不上。建议你现在拿一张纸,写一个 2×2 矩阵和一个二维向量,把结果写成一倍第一列加两倍第二列的形式,而不是只写下最终数字。这个动作做一次,后面所有章节都会顺一些。
2.2 四个子空间与正交性:把抽象定义变成几何直觉
进入中段,笔记开始讲四个基本子空间。这一章是自学者流失最严重的地方,因为定义抽象,子空间之间还有包含和正交关系。笔记的做法是:用一个 m 行 n 列的矩阵 A,画出它在 R^n 和 R^m 之间的映射,把两个零空间理解为映射中被「压扁」的方向,把两个列空间理解为能看到的目标方向。这个视角很值钱:列空间告诉你 Ax = b 什么时候有解,零空间告诉你有多少个自由度可以自由调整,秩则像一个守恒量,约束着四个子空间的维度。下面这张表建议抄下来贴在行空间一节旁边:
| 子空间 | 所在空间 | 维度 | 正交补 |
|---|---|---|---|
| 列空间 C(A) | R^m | r | 左零空间 N(A^T) |
| 零空间 N(A) | R^n | n - r | 行空间 C(A^T) |
| 行空间 C(A^T) | R^n | r | 零空间 N(A) |
| 左零空间 N(A^T) | R^m | m - r | 列空间 C(A) |
正交性部分给出了一个实用的几何结论:零空间与行空间在 R^n 中正交,左零空间与列空间在 R^m 中正交。换句话说,你只要找到行空间的一组基,零空间的结构就能反推出来。工程上做推荐、做信号处理,大量操作本质上就是这个正交分解:把观测向量投影到行空间,剩下的残差就落在零空间一侧。如果你只背了「m 行 n 列矩阵秩为 r」这句话,却没有两个空间垂直相交的画面,那后面理解最小二乘的几何意义时,一定会出现「公式都对、但不知道在算什么」的悬空感。
笔记还会花篇幅讨论怎么从消元后的阶梯形矩阵读出秩和主列。主列对应的原矩阵的列,构成列空间的一组基。这个结论看似简单,实际应用时很容易出错:很多人误以为阶梯形矩阵中主元所在的列就是列空间的基,其实应该回到原矩阵取对应的列。这个细节我在带新人时几乎每次都要纠正一次。
2.3 特征值与奇异值分解:面试高频区,也是笔记的精华
笔记的后半段进入特征值、对角化和奇异值分解。这部分的记号密度明显上升,但工程回报率也最高。特征值分解要求矩阵可对角化;奇异值分解对任意矩阵都成立,所以被大量用在维度压缩、图像降噪、推荐系统的隐因子分解里。笔记从 A^T A 的特征分解出发推出 SVD,并回头把奇异值与四个子空间接上:左奇异向量张成列空间,右奇异向量张成行空间,零奇异值对应的方向就是零空间。
我特别想强调笔记里关于特征值几何意义的内容:矩阵作用于一个向量时,特征向量方向只被伸缩、不改变方向;而 SVD 的几何解释更加直白——任意矩阵把单位球面映射成一个椭球,奇异值就是椭球的半轴长度。很多人在面试里被问「SVD 到底在做什么」时答不上来,缺的就是这幅画面。另外,笔记会顺带指出:不是所有矩阵都可以对角化,当矩阵缺特征向量时,只能退到若尔当形,而 SVD 则永远存在。这个边界认知很重要,它解释了为什么工程中的数值计算几乎都用 SVD 而不是特征分解。
笔记接近尾声时会把最小二乘和 SVD 放到一起讲。最小二乘的几何本质是把 b 投影到列空间,而 SVD 又给出了计算这个投影的稳定方法。能把这几个点串成一条线,才算是真的读完了这份笔记。读这一章时,建议每读一个结论就画一次图:先画单位圆,再画矩阵作用后的椭圆,标出奇异值和对应的奇异向量方向。画过三次,后面关于条件数、数值稳定性的讨论,你都能接得住。
3. 用工程方法读这份 PDF:一套可复制的学习节奏
上一章给了内容地图,这一章讲怎么读。我见过很多人把这份笔记下载后,从第一页逐字看到最后一页,然后一周后什么都不记得。问题不是记忆力,而是把「读讲义」当成了「看书」。读讲义的正确姿势是带着任务、带着输出物去读。下面这套节奏是我带新人补数学基础时反复用的,每天一个半小时左右,可持续到整本读完。
3.1 先做 10 分钟能力体检,再决定从哪一节切入
不要打开 PDF 就从第一页开始。先花 10 分钟回答下面五个问题,每个问题都对应笔记中的一块核心内容:
- 能否写出 Ax = b 有解的充分必要条件,并解释为什么?
- 能否画出四个基本子空间在 R^n 和 R^m 中的位置关系?
- 能否说清秩是什么,以及它与子空间维度的关系?
- 能否用一句话解释特征向量与特征值的几何含义?
- 能否说明 SVD 与 A^T A 特征分解的关系?
按答对的数量分组,参考下面的入口表:
| 体检结果 | 建议入口 | 预计主线时长 |
|---|---|---|
| 五题全会 | 直接进入特征值与 SVD 部分 | 一到两周 |
| 答对两到四题 | 从答不出来的部分对应的章节开始 | 三到四周 |
| 几乎没有答对 | 从消元与矩阵乘法开始,走完整条主线 | 五到六周 |
这个体检的价值是避免两种极端:一种是什么都想学,在已经熟练的内容上反复打转;另一种是眼高手低,直接跳到 SVD,前面子空间没建立,最后绕回来补课。注意体检不是考试,答不上来很正常,它只负责帮你定位起点。我见过不少答不出第三题的人直接跳过前四章去读 SVD,结果两周后又回来补子空间,反而多花了时间。起点定低一点不丢人,定高了才容易翻车。
3.2 一套 80 分钟的标准循环:预读、精读、验证三件事
体检之后就进入单次学习循环。我的循环是 80 分钟,分三段:前 5 分钟只看这一小节的标题和开头几句,在心里提一个问题,比如「这一节要解决什么问题」;接下来的 45 分钟精读正文,手里始终拿笔,遇到公式就写一个具体数字的例子;最后 30 分钟合上 PDF,把这一小节的结论用自己的话写在纸上,再做 2 到 3 道与本节直接相关的习题。
不直接做题、先写结论这一步很容易被跳掉,但它才是把短期记忆转成长时记忆的关键。写不出来,就回到刚才读过的段落重看,直到你能用自己的话把「输入是什么、输出是什么、前提条件是什么」说清楚。做完题,不管对错,都抽 3 分钟记一下「卡在哪一步、当时为什么没想到」,下次复习时只看这些记录就行,不需要重读整页笔记。
工具方面,我习惯用纸质笔记本而不是平板加手写应用。原因在于纸质翻页更容易建立位置记忆,当你在面试中需要回忆某个结论时,脑海里会出现它在笔记本左上角的样子。这个偏好很个人,如果你更习惯屏幕书写,保持工具一致就可以了,关键是每次都在同一个地方积累,别今天纸明天平板,碎片会把笔记本身也打散。
3.3 每节结束用三个问题自检,避免「看了等于没看」
验证学习效果时,我不允许自己说「大概懂了」这种话,而是用三个客观问题逼自己输出:
| 自检问题 | 合格标准 | 不合格时的动作 |
|---|---|---|
| 这一节解决什么问题 | 一句话说清楚,并且不是原句复述 | 回到开头重读,找出问题首次出现的位置 |
| 用什么方法解决 | 能说出方法名、输入、输出 | 重做本节例题,关注「从题干到方法」的那一步 |
| 什么条件下会失效 | 能举出一个反例或限定条件 | 找一道综合题做,直到碰壁再回看本节 |
三个问题都能答出来,这一节才算过关。答不出来,就把答案留白,一周后再回来重答。间隔回答比当天重复有效得多,因为经过几天遗忘后再回忆,记忆痕迹反而会被加固。这个自检清单建议固定在每章的开头,而不是放在末尾,因为它是你进入每一章之前就该知道要回答的问题。
这套自检的另一个用途是检验习题。做完题对答案后,把错题归到三种类型里:是没看懂问题场景、没想起来方法、还是不知道适用边界。归类次数多了,你会发现自己最薄弱的环节到底是哪一个,而不是笼统地觉得「线性代数好难」。
4. 避坑:五个让自学者中途弃坑的典型卡点
这一章写的是我见过最多的五个卡点,全部来自对自学案例的观察,不是理论推演。每一条按「现象、原因、解决」展开,你正卡在哪一条,就仔细看那一节。
4.1 现象:例题看得懂,合上书一道题都做不出来
A 同学拿到课后习题,看了五分钟没有思路,翻开例题,发现例题里用的方法自己都会,但就是想不到要用它。一次两次还能安慰自己是粗心,十次八次之后就开始怀疑是不是不适合学数学。这基本是每个自学线性代数的人都会撞上的墙。
原因在于例题已经把「用什么方法」这一步替你做完了,你只是顺着步骤走了一遍,练的是执行,不是判断。而做题恰恰需要先判断「用哪个工具」,判断能力和执行能力是两种技能,前者只能通过「不看答案、从零开始想」来练。
解决办法是把例题变成你的练习题。用纸条盖住解答部分,只看题干,自己推;推到某一步卡住,就掀开纸条看一步,然后立刻盖回去继续推。每次只掀开一步,并记录这一步行在什么位置,写下「我卡在这里是因为没想到什么」。连续做十道这样的遮挡练习后,你拿到新题时会明显感觉到,自己有了一条找思路的方向,而不是盯着题干发呆。
4.2 现象:符号记法一换,立刻认不出同一个概念
B 同事看笔记时反复在一个地方受阻:笔记前一段用「列空间」三个字,后一段换成「值域」,再往后又写成 C(A),他就认不出这是同一个东西。更常见的是英文术语和中文翻译混用,今天叫「零空间」,明天叫 null space,他就觉得是两件事。
原因是人脑记忆符号和词汇的方式是分块存储的,如果你只记住了一个词的外形,没有把多个别名挂到同一个概念节点上,换一个名字就等于换了一个概念。这不是智力问题,是笔记整理方式的问题。
解决方法是做一张跨章节的别名表。以概念为单位,一行一行往下加:概念名、笔记中的记号、中文译名、英文原名、以及出现过的主要场景。每当你发现同一个对象换了个写法,就补一行。两三周后这张表会成为你查笔记时的索引,也会暴露你真正没有理解的概念——因为概念本身清楚了,别名就不会让你慌乱。
4.3 现象:只看推导不画图,到特征值和 SVD 那里彻底垮掉
C 同学前四章靠硬读撑过来了,但到了特征值部分,笔记写「矩阵 A 把向量 x 变到特征方向上的伸缩」,他怎么也形成不了画面,于是回去背公式,背到对角化时又忘了前面的结论,最终在 SVD 处放弃。
原因是特征值、奇异值这些概念有两个面向:代数面向用来计算,几何面向用来理解。笔记的写法是两者穿插,如果你只吸收了代数面向,就丢了一半信息量。而几何面向没法靠读文字建立,必须亲手画几遍。
解决方法是准备一叠草稿纸,每个重要概念画一幅示意图。第一步画一个带箭头的单位向量;第二步画矩阵作用后的向量,看看长度变了几倍、方向变没变;第三步把所有特征向量方向画在同一张图上。画到 SVD 时,画一个单位圆,再看它变成什么样的椭圆。不要在意画得丑,关键是让脑子看到几何对象,而不是只看到符号。
4.4 现象:把笔记当小说从头读到尾,不碰任何计算
D 同学的方法是每天读一章,读的时候很顺畅,划线、荧光笔都用上了,但整本读完后发现能想起来的只有「消元」和「矩阵乘向量」两个词,其余全是模糊的印象。他开始怀疑自己的记忆力出了问题。
原因是阅读时没有任何输出压力,大脑默认这些信息暂时不需要,于是几乎不分配长期记忆资源。荧光笔划线的动作也会骗过自我感觉,让你以为划了等于记住了。
解决方法是给学习设一个检查点:每读完一个小节,先合上 PDF,在一张白纸上写出这一节的三件事——结论是什么、推导怎么走、能用在哪。写不出来就回去扫一眼再合上继续写。写得多粗糙都没关系,这个「合上再写」的动作只要发生,你在读下一节时就已经带着前一段的结构在读了,而不是一篇一篇地飘过去。
4.5 现象:行列式算得溜,一遇到线性变换就发懵
E 同事计算能力很强,行列式、逆矩阵手算都很快,但有一次被问到「把平面旋转 45 度对应的矩阵是什么」时,他花了好几分钟才算出来,而且算的是逐点映射,不是直接用变换矩阵。他发现自己学的线性代数里没有「变换」这个概念。
原因是不少基础课的教学方式是先定义、后计算、再证明,矩阵被定义为矩形数表,而不是变换。数字格子的图像一旦固化,「矩阵乘向量是施加变换」这个视角就进不来。
解决方法是回到最基本的观察:每个新的线性变换,都让它作用在 e1=(1,0) 和 e2=(0,1) 上,记录两个基向量分别变成了什么,把这两个结果按列排成矩阵,就是该变换的矩阵。旋转、剪切、投影各做几个之后,你会看到矩阵的每一列都是有画面含义的,而不是抽象的数字格子。这个视角建立起来,很多符号堆砌的问题会自然消失。
5. 让笔记长出实操能力:课后题、代码验证与个人速查表
这一章把前面的读书法再推一步:把笔记中的结论变成随时能调用的工具。很多人读完笔记后依然觉得「懂了但不会用」,根源是结论没有被安置在可操作的位置上。下面三个方式分别解决练习、验证、检索三个问题。
5.1 官方习题按「限时 + 间隔回顾」的节奏做,而不是按顺序刷
笔记一般会配套课后习题,但直接一题一题刷的效率不高。我的用法是:每读完一小节,先挑 3 道基础题限时做,每道最多 15 分钟;15 分钟没有思路就先跳过,等一轮做完再回头想。做题时不要翻笔记,也不要用计算器,逼自己把结论从记忆中调出来。
做不出来再看答案,但看答案时不要看每一步的运算,而要看「从题干到方法」的那一步是怎么想到的——这是解答里最值钱的信息。做完基础题的第三天,回来做同一节里的一道综合题,检验有没有形成长期记忆。综合题如果做不出来,回到那节的重难点重新精读,而不是直接看答案。这个间隔回顾的节奏,比当天反复刷题更容易留下长期记忆。
5.2 在本地跑通一个最小验证脚本:让 SVD 不再像玄学
读 SVD 这一章时,我建议在本地写一个不超过三十行的脚本,用数值结果验证笔记里的结论。这个方法对熟悉代码但对数学符号发怵的工程师尤其有效,概念真伪可以用电脑当场验证,比反复看推导更有说服力。下面是我常用的最小验证片段:
import numpy as np # 取一个 3x2 矩阵,验证 SVD 的重构性质 A = U Σ V^T A = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]) # 完整 SVD:U 是 3x3,Vt 是 2x2,奇异值以向量形式返回 U, s, Vt = np.linalg.svd(A) # 把奇异值向量还原成 3x2 的对角矩阵,再重构 A Sigma = np.zeros((3, 2)) Sigma[:2, :2] = np.diag(s) A_reconstructed = U @ Sigma @ Vt # 用前两列左奇异向量验证“张成列空间”这一结论 U_reduced = U[:, :2] projection_loss = np.linalg.norm(A - U_reduced @ U_reduced.T @ A) print("重构误差:", np.max(np.abs(A_reconstructed - A))) print("列空间投影损失:", projection_loss)这段代码的逻辑分三块:先用 np.linalg.svd 一次性拿到 U、奇异值向量和 Vt,对应笔记里 A = UΣV^T 的数值形式;然后把奇异值向量还原成与 A 同形状的对角矩阵 Sigma,这一步最容易写错;最后用两个输出验证结论。第一行输出来自重构误差,验证 SVD 能否无损还原原矩阵,误差应该是机器精度量级。第二行验证列空间由左奇异向量张成:把 A 投影到 U 的前两列张成的空间,再量一下投影前后的距离,误差接近零就说明这两列确实张成了 A 的列空间。
提示:np.linalg.svd 默认 full_matrices=True,返回的 U 是完整方阵;如果看到别处返回瘦长的 U,是用 full_matrices=False 得到的简化版。两者对应同一组奇异值,但形状不同,验证重构公式时以形状一致为准则。
参数说明:这段代码的可调参数主要是两个。一个是 A 的形状和数值,建议把 3×2 换成 4×3,再换成 3×3,观察重构误差始终接近零,而投影损失只有在列数小于秩时才会显著变大,这正好对应笔记里「用前 k 个奇异向量做降秩近似」的内容。另一个是把 U_reduced 改成只取第一列,投影损失会变大,你就亲眼看到了低秩近似的代价是什么。这个脚本每次带人读 SVD 章节我都会让他跑一遍,比口头讲十遍都有用。
5.3 把 PDF 浓缩成一页速查表:你真正需要的参考手册
笔记读到最后,你应该有一个自己的产物,而不是只有一份别人的 PDF。我的做法是:每章结束后,把最常用的五到十个结论压进一页速查表,用表格组织,列分别是「概念、公式、几何含义、典型应用、易错点」。下面是一行示例,展示这个表格的样子:
| 概念 | 公式或关键结论 | 几何含义 | 典型应用 | 易错点 |
|---|---|---|---|---|
| 四个子空间 | dim C(A)=r,dim N(A)=n-r | 行空间与零空间正交 | 判断 Ax=b 的解结构 | 零空间和列空间不在同一空间中 |
| SVD | A = UΣV^T | 单位球映成椭球,奇异值为半轴长 | 降秩近似、特征降维 | U 与 V 的列必须一一对应,不能随意交换 |
| 最小二乘 | 解满足 A^T A x = A^T b | 残差垂直于列空间 | 曲线拟合、回归 | A^T A 条件数可能很大,数值上优先用 SVD 计算 |
全部章节结束后,把这几页速查表打印出来贴在工位前。平时读论文、跑实验时遇到想不起来的结论,先查速查表,查不到再翻 PDF。速查表本身也要迭代:每次发现自己卡住的结论不在表上,就补一行;每次发现表上的表述看不懂,就把它改得更啰嗦一点。几个月后,这张表会比 PDF 本身更常被打开,它才是你真正的个人参考手册。
6. 一个值得长期投入的习惯:按专题重排笔记
如果你已经把这份线性代数笔记按顺序读完一遍,接下来最值得做的事是:把 PDF 打散,按「专题」而不是按「章节」重新组织成自己的笔记。整理不是抄写,而是一次主动的认知重构,能把别人的讲义变成你自己的知识网络。
6.1 为什么要重排:顺序阅读保留的是课程逻辑,不是你的问题逻辑
原版笔记的顺序是讲课的时间顺序,符合新读者的认知曲线,但不符合你解决问题时的检索路径。比如做最小二乘拟合,你需要同时调用列空间、正交投影、正规方程、SVD,它们分散在不同章节。按专题重排后,「最小二乘」成为一个主题节点,散落的结论都归到它下面,以后遇到同类型问题,翻一个主题就够了。我最早读完笔记时觉得自己全会了,真到写回归代码时才意识到理不清这些概念的关系,重排就是那一次换来的教训。
6.2 具体操作:三个步骤完成一次重排
第一步,把整份 PDF 的章节标题抄成清单,标出每节的核心概念,这一步相当于建立索引;第二步,按主题分组,比如把 A = LU、消元放到「矩阵分解」组,把四个子空间、正交性放到「子空间与正交」组,把投影、正规方程、最小二乘放到「投影与拟合」组,把特征值、SVD 放到「谱理论」组;第三步,每组写一页 A4,用自己的话把组内概念的逻辑串起来,再补一个手算的小例子。三到四组做完,你的笔记就和那份 PDF 明显区分开了。
6.3 我的习惯:遇到新概念先找主题组,而不是看目录
现在我读任何数学资料,都会先判断它属于哪个主题组,和已有哪几个结论相邻,而不是孤立地记定义。按主题重排后的笔记也因此比原资料更常被翻出来。这个习惯的副产品是:面对陌生概念时,我会先去找边界——它和哪个旧概念重叠,在什么条件下不成立。希望你也能在这份 PDF 上,找到属于自己的那一份笔记。
本文还有配套的精品资源,点击获取