数学线性代数 · 从零开始
让矩阵,动起整个平面
屏幕上的图片被旋转、拉伸或者推斜时,图上的每一个点都同时移动。一条规则放进一个点、给出另一个点,就像一个函数:函数页面里一个输入只给出一个输出,这里只是把数换成了点。如果要逐个记录每一个点去了哪里,这份记录永远也写不完。幸运的是,有一类变换只需要两个箭头就够了:它们让网格线保持笔直、平行、间距均匀,并且原点不动。两个箭头就够了。这样的箭头叫作向量,它们能带动整幅图。
点 (2, 1) 表示从原点向右走 2,再向上走 1。这里其实用到了两个基本方向。假设我们改变这两个方向,并让每个点仍然按原来的倍数组合它们,整个图形会怎样变化呢?我们先把这两个方向画清楚,再看矩阵中的两列怎样记录它们的新位置。
01用两个方向,定位平面上的每一个点
向量表示一个有方向的位移:(1,0) 表示向右 1、向上 0;(0,1) 表示向右 0、向上 1。先从原点画出这两个箭头。接下来记录每个箭头:把横坐标写在上,纵坐标写在下,组成一列。再把两列并排放在一起,就得到一个长方形的数表,叫作矩阵。横着读的是行,竖着读的是列。下面用相同颜色把每一列和对应的箭头连起来。
标准基向量
I =
10 01 第一列 → e₁第二列 → e₂
标准正交归一基
- ortho
- 正交:两个方向互相垂直,夹角是 90°。
- normal
- 归一:每个向量的模(长度)都是 1。
- 基
- 两个独立的方向。分别伸缩再相加,就能到达任意一点,而且每个点的这对系数都是唯一的。
沿着 I 的每一列往下读:第一列就是 e1,第二列就是 e2。这是单位矩阵。把它当成变换,它让两个基向量都留在原位,因此所有点都保持不变。
I(xy)=(xy)四种变换,同一个原理
彩色箭头仍对应矩阵的两列。阴影单位正方形让面积变化可见;圆让拉伸可见;字母 F 让镜像翻转可见。每个动画都从原图形出发,可以拖动进度条比较任意一刻。
每个点绕原点转过相同角度。圆仍是圆,两条基向量始终互相垂直,长度仍然是 1。
当前面积 1 ×当前角度0°
整个过程中,长度、角度和面积都保持不变。负角度表示顺时针旋转。
我们从两列构造旋转矩阵。单位向量就是长度为 1 的箭头。在单位圆上,从正水平轴转过 θ 后,点的水平坐标叫 cosθ,竖直坐标叫 sinθ。因此第一条基向量 (1,0) 会到达 (cosθ,sinθ)。
第二条基向量原本比第一条多转了四分之一圈。两条都转同一个角度后,这个差仍然保留。逆时针转四分之一圈,会把向右变向上,把向上的位移变成向左。对 (cosθ,sinθ) 这样操作,就得到 (−sinθ,cosθ)。这两个落点分别成为矩阵的两列。
(x′y′)=x(cosθsinθ)+y(−sinθcosθ)=(xcosθ−ysinθxsinθ+ycosθ)我们可以计算检查长度是否不变。为缩短式子,记 c=cosθ、s=sinθ。单位圆半径是 1,所以勾股定理给出 c2+s2=1。将两个新坐标分别平方,会得到符号相反的交叉项,它们恰好相消。
(cx−sy)2+(sx+cy)2=c2x2−2csxy+s2y2+s2x2+2csxy+c2y2=(c2+s2)x2+(c2+s2)y2=x2+y2长度的平方不变,取非负平方根后长度也不变。现在取两条箭头 u=(a,b)、v=(d,e),再检查夹角。点积是对应坐标乘积的和。把转动后的点积展开,两对交叉项恰好相消。
(ca−sb)(cd−se)+(sa+cb)(sd+ce)=c2ad−csae−csbd+s2be+s2ad+scae+scbd+c2be=(c2+s2)ad+(c2+s2)be=ad+be我们已经证明,转动坐标方向不会改变这个点积,也不会改变长度。把水平方向选为 u 的方向。记两个长度为 U、V,夹角为 φ,按照单位圆定义,此时 u=(U,0)、v=(Vcosφ,Vsinφ)。点积就是 U×Vcosφ+0×Vsinφ=UVcosφ。两条箭头非零时,才能除以 UV。
对两条非零箭头,点积除以两个长度的乘积,就是夹角的余弦:它测量一条单位箭头沿另一条方向的部分。分子、分母都没变,因此余弦不变,0 到 π 之间的夹角也不变。平行四边形的底边长度保留,高度是另一条边长乘夹角的正弦,也保留。因此底乘高得到的面积不变。
先看高度 y=1 的一排网格点。若 k=1,这一排向右移动 1;高度 y=2 的一排向右移动 2;横轴上的点因为 y=0 而不动。一般地,水平位置从 x 变成 x+ky,竖直位置仍是 y。我们就把这种按高度改变水平位置的变换叫作剪切。
当前面积 1 ×最终面积1 ×
底和垂直高度没变,因此面积始终是 1。角度和大多数长度会改变。
把竖直的 y 轴当成镜子。右变成左,高度不变。观察字母 F:它变成了镜像。
终点才是镜像翻转。为了展示变化,动画把横向缩到 0,再向另一侧展开。中间压扁的那一帧既不是镜像变换,也不是旋转。
当前面积 1 ×最终面积1 ×
在终点,长度与面积不变,但方向的手性翻转。
分别把横向和纵向距离乘上一个倍数。倍数不同时,圆会变成椭圆。小于 1 的正数表示沿那个方向压缩。
当前面积 1 ×最终面积1.3 ×
面积乘上 sx×sy。两个方向都变成 2 倍时,面积变成 4 倍,而不是 2 倍。