零基础入门 · 10集 · 中文合成旁白 · Manim 数学动画
核心问题:方向和大小,怎样一起计算?
欢迎来到看得见的线性代数。先把向量理解成一次移动。向量二,一,表示向右走两格,再向上走一格。箭头的起点放在原点,只是为了方便画图。
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)
核心问题:几支箭头,能到达哪些地方?
把几个向量分别乘以数字,再加起来,叫做线性组合。比如二倍的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 个独立方向
核心问题:一个数字表,为什么能变换空间?
变换可以理解成一台机器:输入一个向量,得到一个输出向量。线性变换有两条规则,它保持向量加法,也保持数乘。
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)
核心问题:为什么先后顺序会改变结果?
先用矩阵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⁻¹
核心问题:空间有没有被压扁?
拿一个面积为一的正方形,让矩阵作用于整个平面。它会变成一个平行四边形。行列式描述这个面积的缩放,并且记录方向是否翻转。
面积缩放倍数 = |det(A)|
如果只把水平方向拉长两倍,竖直方向不变,单位正方形就变成面积为二的长方形。这个矩阵的行列式是二。
det([[2, 0], [0, 1]]) = 2
让横坐标加上纵坐标,就是一种剪切。正方形变成斜的平行四边形,但底和高不变。所以面积不变,行列式等于一。
det([[1, 1], [0, 1]]) = 1
对矩阵的四个数,按行依次记作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
核心问题:一个问题,为什么有三种解的情况?
前面我们给定输入,计算输出。方程组反过来:矩阵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
核心问题:哪些方向被保留,哪些被丢掉?
矩阵的列向量张成所有可能的输出,叫做列空间。列空间的维数,就是矩阵的秩。秩不是非零元素的数量,而是独立输出方向的数量。
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)
核心问题:怎样量出两个方向的关系?
点积把两个向量变成一个数。对应坐标相乘,再把结果相加。比如二,一与一,二的点积,是二乘一加一乘二,等于四。
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)
核心问题:哪些方向,经过变换仍在原线上?
矩阵二,一,一,二作用后,大多数向量都会改变方向。但有些特殊向量,输出仍落在自己原来所在的直线上。我们要找的就是这些方向。
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₂
核心问题:用线性代数,拟合真实数据
我们有三个数据点:零,一;一,二;二,二。想用直线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分解或奇异值分解。这套课程的主线是:向量表示量,矩阵表示规则,空间结构解释解与误差。
向量 → 变换 → 空间 → 求解