← 返回课程播放页

看得见的线性代数:完整讲义与练习答案

零基础入门 · 10集 · 中文合成旁白 · Manim 数学动画

01 向量:从一支箭头开始

核心问题:方向和大小,怎样一起计算?

两个数,描述一次移动

欢迎来到看得见的线性代数。先把向量理解成一次移动。向量二,一,表示向右走两格,再向上走一格。箭头的起点放在原点,只是为了方便画图。

v = (2, 1)

向量不被起点绑住

保持方向和长度,把箭头平移,它表示的移动仍然相同。这里讨论的是自由向量。坐标是它相对于所选坐标轴的数字描述。

方向 + 长度

加法:首尾相接

先走向量二,一,再走向量负一,二。把第二支箭头接到第一支的末端。总移动从最初的起点,指向最后的终点。

(2, 1) + (−1, 2) = (1, 3)

数乘:拉长,或反向

用数字乘向量,叫做数乘。乘一点五,长度变成一点五倍,方向不变。乘负一,长度不变,方向相反。乘零,则得到零向量。

1.5v = (3, 1.5)

减法:找到差的箭头

向量减法就是加上相反向量。若把两个向量的起点放在一起,向量u减v,就是从v的终点,指向u的终点。

u − v = u + (−v)

长度与向量,是两回事

向量二,一的长度,可以用勾股定理计算:二的平方加一的平方,再开平方,得到根号五。长度是一个数,向量还包含方向。

‖v‖ = √(2² + 1²) = √5

暂停练习

现在请暂停试一试。向量u等于一,二,向量v等于二,负一。先把u乘二,再减去v,结果是什么?先在纸上算坐标,再想箭头朝哪里。

u = (1, 2),  v = (2, −1)

答案与下一步

答案是零,五。因为二乘一减二等于零,二乘二减负一等于五,所以箭头竖直向上。下一集,我们用加法和数乘,搭建整个平面。

2u − v = (0, 5)

02 线性组合:搭建一个空间

核心问题:几支箭头,能到达哪些地方?

用已有向量拼出新向量

把几个向量分别乘以数字,再加起来,叫做线性组合。比如二倍的u加一倍的v,就是一种组合。系数可以是正数、负数,也可以是零。

a u + b v

一支箭头,张成一条线

如果只有一个非零向量,你只能沿它的方向前进或者后退。所有倍数组成一条穿过原点的直线。所有能组合到的向量,合起来叫做张成空间。

span{u} = {a u}

不共线的两支箭头

加入一支不共线的向量,情况就不同了。调整两个系数,就可以到达平面上的任意位置。两个不共线的平面向量,张成整个二维平面。

a(1, 0) + b(1, 1)

多一支箭头,不一定多一维

如果第二支箭头,只是第一支的两倍,它没有带来新方向。这样的向量组叫做线性相关。能用其他向量组合出来的那支,是多余的。

v = 2u

基:够用,而且不多余

基是一组既能张成空间,又线性无关的向量。二维平面的基需要两支向量。标准基是一,零和零,一;其他不共线的两支,也可以做基。

e₁ = (1, 0),  e₂ = (0, 1)

换了基,坐标也会变

同一支向量三,二,换到基向量一,零与一,一下面,可以写成一倍的第一支,加二倍的第二支。所以新坐标是一,二,箭头本身没有变。

(3, 2) = 1(1, 0) + 2(1, 1)

暂停练习

判断一下,一,二与二,四,能不能作为二维平面的一组基?不要只数箭头有几支,而要检查第二支有没有提供一个独立的新方向。

u = (1, 2),  v = (2, 4)

答案:数量不等于维数

不能。第二个向量是第一个的两倍,它们只张成一条直线。记住,维数数的是独立方向的个数。下一集,矩阵将告诉我们这些方向会被怎样移动。

v = 2u  →  只有 1 个独立方向

03 矩阵:记录空间怎样变化

核心问题:一个数字表,为什么能变换空间?

变换,把输入变成输出

变换可以理解成一台机器:输入一个向量,得到一个输出向量。线性变换有两条规则,它保持向量加法,也保持数乘。

T(u + v) = T(u) + T(v)

线性变换必须保留原点

让数乘规则中的倍数取零,就知道零向量必须变成零向量。所以把整个平面向右平移的操作,不是这里说的线性变换。它是仿射变换。

T(0) = 0

只看两支基向量,就够了

任意二维向量,都能写成x倍的第一支标准基,加y倍的第二支。由于线性变换保持这两种运算,只要知道两支基向量的去向,就知道所有向量的去向。

v = x e₁ + y e₂

矩阵的列,就是基的去向

把第一支标准基的输出二,一,写成第一列;把第二支的输出一,二,写成第二列。这张两行两列的数字表,就是这个变换的矩阵。

A = [[2, 1], [1, 2]]

矩阵乘向量,是列的组合

输入向量一,二。第一列乘一,第二列乘二,再相加,得到四,五。这就是矩阵乘向量。把输入的坐标当作权重,组合矩阵的各列。

A(1, 2) = 1(2, 1) + 2(1, 2)

行乘列,是同一件事

按坐标展开,输出的第一项是二乘一加一乘二,等于四;第二项是一乘一加二乘二,等于五。这就是常见的行乘列计算规则。

(2×1 + 1×2, 1×1 + 2×2)

暂停练习

一个对角矩阵,第一条对角线上的数是三,第二个是一。它会把向量二,一变成什么?想想水平方向和竖直方向分别被拉伸了几倍。

D = [[3, 0], [0, 1]]

答案:只拉伸一个方向

输出是六,一。水平方向放大三倍,竖直方向保持不变。矩阵的数字描述空间怎样变化。下一集,我们让两个变换接着发生。

D(2, 1) = (6, 1)

04 矩阵乘法:把动作串起来

核心问题:为什么先后顺序会改变结果?

先做谁,写在哪里

先用矩阵B变换向量,再用矩阵A变换输出,得到A乘B再乘向量。矩阵从右往左作用,所以写在最右边的B先发生。

A(Bv) = (AB)v

用旋转和拉伸做实验

设R把平面逆时针旋转九十度,S只把水平方向拉长两倍。对向量一,零,先旋转得到零,一,再水平拉伸,结果仍然是零,一。

S R (1, 0) = (0, 1)

换个顺序,结果不同

反过来,先水平拉伸,向量变成二,零,再旋转,得到零,二。前一次是零,一,这次是零,二。所以矩阵乘法一般不能交换顺序。

R S (1, 0) = (0, 2)

矩阵乘矩阵,也看各列

要得到AB的第一列,就把B的第一列送入A;第二列也一样。这仍然是在追踪标准基的最终去向。展开后,就是A的每一行与B的每一列相乘求和。

AB = [A b₁, A b₂]

单位矩阵:什么都不改

有一种矩阵,把每个向量都送回它自己。这就是单位矩阵I。对角线上都是一,其余位置是零。乘上单位矩阵,不改变向量或矩阵。

Iv = v,   AI = IA = A

逆矩阵:把动作撤销

如果一个方阵的变换可以完全撤销,撤销它的矩阵叫做逆矩阵。例如水平拉长两倍,再水平压回一半,就回到了原来的位置。

A⁻¹A = AA⁻¹ = I

暂停练习

先旋转R,再拉伸S,总变换是SR。现在想回到变换之前的状态,应该先撤销哪一个动作?像先穿袜子再穿鞋,脱的时候要倒着来。

总变换:SR

答案:逆序撤销

先撤销最后的拉伸,再撤销最初的旋转。所以SR的逆矩阵,是R的逆乘S的逆。下一集,我们用面积,判断一个二维变换是否还能撤销。

(SR)⁻¹ = R⁻¹S⁻¹

05 行列式:面积告诉你的秘密

核心问题:空间有没有被压扁?

追踪一个单位正方形

拿一个面积为一的正方形,让矩阵作用于整个平面。它会变成一个平行四边形。行列式描述这个面积的缩放,并且记录方向是否翻转。

面积缩放倍数 = |det(A)|

拉伸两倍,面积两倍

如果只把水平方向拉长两倍,竖直方向不变,单位正方形就变成面积为二的长方形。这个矩阵的行列式是二。

det([[2, 0], [0, 1]]) = 2

剪切改变形状,不改变面积

让横坐标加上纵坐标,就是一种剪切。正方形变成斜的平行四边形,但底和高不变。所以面积不变,行列式等于一。

det([[1, 1], [0, 1]]) = 1

二维公式:ad 减 bc

对矩阵的四个数,按行依次记作a,b,c,d,行列式是ad减bc。例如二,一,一,二,得到四减一,等于三。这里的面积放大三倍。

det([[a, b], [c, d]]) = ad − bc

负号表示方向翻转

把水平方向镜像翻转,面积大小仍然不变,但原来的有向基顺序反了,所以行列式等于负一。负数不是负的实际面积,负号记录的是方向。

det([[-1, 0], [0, 1]]) = −1

等于零:面积消失

如果两列向量共线,整个平面会被压进一条线,面积变成零。多个不同输入有相同输出,信息已经丢失,不能唯一还原,所以这个方阵没有逆。

det(A) = 0  ⇔  A 不可逆

暂停练习

请判断矩阵三,一,零,二的行列式。面积放大几倍?能不能撤销变换?把公式代进去,再用几何意义解释你的答案。

A = [[3, 1], [0, 2]]

答案与推广

行列式是六。面积放大六倍,没有翻转,并且这个方阵可逆。在三维,行列式对应有向体积的缩放。下一集,用这些想法理解方程组。

det(A) = 3×2 − 1×0 = 6

06 方程组:寻找那个输入

核心问题:一个问题,为什么有三种解的情况?

方程组,是反过来问

前面我们给定输入,计算输出。方程组反过来:矩阵A和目标b已知,寻找输入x,使得A乘x等于b。这里粗略写成x的符号,代表整个未知向量。

Ax = b

两条直线的交点

看方程x加y等于三,以及x减y等于一。每个方程在平面上都是一条直线,同时满足两式的解,就是两条线的交点。

x + y = 3
x − y = 1

消元:消掉一个未知量

把两个等式相加,y和负y抵消,得到二x等于四。所以x等于二。再代回第一个方程,得到y等于一。这就是消元的核心:逐步减少未知量。

两式相加:2x = 4

行变换,为什么合法

交换两条方程,用非零数乘一条方程,或者把某条方程的倍数加到另一条上,都能反向撤销,所以不改变整个方程组的解集。

等价变换:保留同一组解

平行:没有解

如果两式分别是x加y等于一,以及x加y等于三,两条直线平行。相减会得到零等于二,这是矛盾,所以没有任何输入能同时满足它们。

0 = 2  →  矛盾

重合:无穷多个解

如果第二式是第一式的两倍,两条直线完全重合。它只给出一条独立约束。你可以自由选择y等于t,再令x等于三减t,就得到无穷多个解。

(x, y) = (3 − t, t)

暂停练习

方程x加y等于二,第二式是二x加二y等于五。这是唯一解、无解,还是无穷多解?试着用第二式减去第一式的两倍。

x + y = 2
2x + 2y = 5

答案:检查右边也很重要

答案是无解。相减得到零等于一。左边的系数成比例,不代表两条方程一定重合,右边也必须满足同样的倍数关系。下一集,用秩统一这些判断。

第二式 − 2×第一式:0 = 1

07 秩与零空间:留下多少信息

核心问题:哪些方向被保留,哪些被丢掉?

秩,数独立的输出方向

矩阵的列向量张成所有可能的输出,叫做列空间。列空间的维数,就是矩阵的秩。秩不是非零元素的数量,而是独立输出方向的数量。

rank(A) = 列空间的维数

一个秩为一的例子

看矩阵一,二,二,四。第二列是第一列的两倍。虽然有两列,但只有一个独立方向,因此秩是一。所有输出都落在方向一,二所在的直线上。

A = [[1, 2], [2, 4]]

零空间:被送到零的输入

哪些输入会被这个矩阵变成零?把负二,一代入,输出就是零。它的任何倍数也都变成零。所有这样的输入组成零空间,也叫核。

A(−2, 1) = (0, 0)

两个空间,住在不同的地方

要注意,列空间是输出空间里的集合,零空间是输入空间里的集合。即使这个例子两边都是二维,也不能把它们当成同一个概念。

列空间:输出端
零空间:输入端

方向的账本:秩加零度

一个矩阵如果有n列,就接收n个输入坐标。秩加上零空间的维数,始终等于n。这个例子里,一维保留为输出,一维落入零空间,总共两维。

rank(A) + dim ker(A) = n

方程有解,还需要目标能到达

方程A乘x等于b有解,当且仅当b属于A的列空间。如果存在一个解,并且零空间只有零向量,那么解唯一;如果零空间有非零向量,就能得到无穷多个解。

有解 ⇔ b 属于列空间

暂停练习

仍用这个矩阵。目标一,二能到达吗?目标一,零呢?先看它们是否落在列空间那条线上,再判断可达目标有没有唯一输入。

b₁ = (1, 2),  b₂ = (1, 0)

答案:可达性与唯一性分开看

一,二在列空间里,有解。一个解是一,零,加上任意倍的负二,一,仍然是解,所以不唯一。一,零不在列空间里,无解。下一集学习垂直与投影。

x = (1, 0) + t(−2, 1)

08 点积与投影:找到最近的位置

核心问题:怎样量出两个方向的关系?

点积,得到一个数

点积把两个向量变成一个数。对应坐标相乘,再把结果相加。比如二,一与一,二的点积,是二乘一加一乘二,等于四。

u·v = u₁v₁ + u₂v₂

点积与夹角

点积也等于两个长度的乘积,再乘夹角的余弦。夹角小于九十度时,点积为正;大于九十度时为负;对于非零向量,点积为零意味着垂直。

u·v = ‖u‖ ‖v‖ cos θ

先固定一条方向

现在给定向量b等于三,二,只允许在水平方向的一条线上寻找近似。把b的终点垂直落到这条线上,就得到投影点三,零。

b = (3, 2),  p = (3, 0)

为什么垂直就是最近

连接投影点与b,得到垂直残差。换成线上任何别的点,新的距离就是直角三角形的斜边,一定不小于这条垂线。所以投影确实给出最短距离。

‖b − q‖² = ‖b − p‖² + ‖p − q‖²

推导投影公式

沿非零向量a的投影可以写成c乘a。残差b减c乘a,必须和a垂直。令它们点积为零,解得c等于a点乘b,除以a点乘a。

p = [(a·b)/(a·a)] a

算一个倾斜方向的投影

取a等于二,一,b等于一,三。点积a乘b等于五,a乘自身也等于五,所以投影就是a本身,即二,一。残差为负一,二,与a的点积恰好是零。

p = (2, 1),  r = (−1, 2)

暂停练习

把向量三,一投影到方向一,一上。先计算两个点积,得到倍数,再写出投影向量。不要把投影的倍数误当成最终的向量。

a = (1, 1),  b = (3, 1)

答案:把误差放到垂直方向

倍数是四除以二,等于二,所以投影为二,二。残差一,负一,与一,一垂直。投影将在最后一集帮我们处理没有精确解的数据问题。

p = (2, 2),  r = (1, −1)

09 特征向量:找到变换的主方向

核心问题:哪些方向,经过变换仍在原线上?

大多数箭头,方向会改变

矩阵二,一,一,二作用后,大多数向量都会改变方向。但有些特殊向量,输出仍落在自己原来所在的直线上。我们要找的就是这些方向。

A = [[2, 1], [1, 2]]

定义:只剩一个倍数

非零向量v,如果满足A乘v等于某个数λ乘v,就叫做特征向量。这个倍数λ叫做特征值。零向量被排除,因为它对任何倍数都满足等式,无法确定方向。

Av = λv,   v ≠ 0

第一个主方向

把一,一代入,输出是三,三,也就是原向量的三倍。所以一,一是特征向量,对应特征值三。这个方向上的所有非零倍数,也都是同一特征值的特征向量。

A(1, 1) = 3(1, 1)

第二个主方向

把一,负一代入,输出仍然是一,负一。所以这条方向的特征值是一。现在我们发现,变换沿一条斜线放大三倍,沿另一条斜线保持不变。

A(1, −1) = 1(1, −1)

如何用计算找到它们

把等式移到一边,得到A减λI乘v等于零。要有非零解,这个方阵必须不可逆,所以行列式为零。本例得到二减λ的平方减一等于零,解出三和一。

det(A − λI) = 0

换到特征基,动作变简单

如果一个n阶方阵,有n个线性无关的特征向量,就可以把它们作为基。在这组基下,变换只是分别乘上特征值。这叫做对角化。但不是每个方阵都能这样做。

A = P D P⁻¹

暂停练习

对角矩阵的两个对角元素是四和负二。标准基一,零与零,一,分别对应什么特征值?负号会让那个方向上的箭头发生什么变化?

D = [[4, 0], [0, −2]]

答案:沿原线,也可以反向

对应特征值分别是四和负二。第一支伸长四倍;第二支反向并伸长两倍,仍然在原来的直线上。最后一集,我们用矩阵和投影,拟合一条最合适的直线。

De₁ = 4e₁,  De₂ = −2e₂

10 最小二乘:没有精确解怎么办

核心问题:用线性代数,拟合真实数据

三条数据,一条直线

我们有三个数据点:零,一;一,二;二,二。想用直线y等于c加mx描述它们。c是截距,m是斜率。你会发现,没有一条直线能恰好穿过三个点。

y = c + mx

把数据写成方程组

把三个横坐标逐个代入,就得到三条关于c和m的线性方程。矩阵每一行是一个,一次横坐标。参数向量是c,m,目标向量是三个观测值。

A = [[1,0], [1,1], [1,2]]

精确解没有,找最小误差

对每个点,用观测值减去预测值,得到竖直残差。我们让这些残差的平方和尽量小。平方避免正负抵消,也对较大的误差施加更大惩罚。

最小化 ‖b − Aθ‖²

本质:把目标投影到列空间

所有预测向量A乘参数,都在A的列空间里。我们要找离目标b最近的预测向量,所以它就是b在列空间上的正交投影。残差与每一列都垂直。

Aᵀ(b − Aθ̂) = 0

正规方程,从垂直条件得到

展开垂直条件,得到A转置乘A再乘参数,等于A转置乘b,叫做正规方程。本例化成三c加三m等于五,三c加五m等于六。

AᵀA θ̂ = Aᵀb

解出拟合直线

两式相减,得到二m等于一,所以斜率是二分之一。代回得到截距六分之七。三个残差是负六分之一、三分之一、负六分之一,平方和等于六分之一。

ŷ = 7/6 + (1/2)x

暂停练习:是否一定唯一

如果所有数据的横坐标都等于一,那么设计矩阵的两列完全相同。现在还能分别确定截距c和斜率m吗?想想第一集到现在反复出现的独立方向。

所有 x = 1  →  只能看到 c + m

答案与整套课程的主线

不能,只能确定它们的和。列满秩时,最小二乘参数才唯一。实际计算常用QR分解或奇异值分解。这套课程的主线是:向量表示量,矩阵表示规则,空间结构解释解与误差。

向量 → 变换 → 空间 → 求解