seegongsik
我的单词本
工程数学

矩阵就是变换

矩阵这东西,第一眼看上去,就是把数字排成方块的一张表。所以大家都想去背它——可这正是它让人一辈子犯晕的原因。矩阵不是表格,而是一个动作。说得准确点,它是一个把平面上所有点同时移动的函数:把空间拉伸、旋转、斜着推。这一幅画一旦在脑子里坐稳,矩阵乘法为什么是那样定义的、特征值到底在看什么,都会突然变简单。慢慢跟着来。

先找找感觉。屏幕上铺着网格。用滑块改变矩阵里的数字看看。整个网格跟着一起弯、一起伸。不是一个点在动,而是整个平面作为一整块在动。这就是变换的真面目:一个矩阵,就是一道"把这个空间这样改"的命令。关键在于,网格不是乱七八糟地皱起来。直线变换之后还是直线,平行的线变换之后还是平行,间距也保持均匀。这样"保持着规整"去改变空间,就是矩阵变换。

a1.2
b0.6
c-0.4
d1.0
[
1.20.6-0.41.0
]
■ î■ ĵ

那么,这个看起来挺复杂的变换,怎么用区区几个数字就写全呢?秘密简单得出乎意料:你只要追踪两个点。向右走一格的箭头 î,向上走一格的箭头 ĵ。只要知道这两个在变换后去了哪儿,就完事了。而那两个"落脚的位置",正是矩阵的两列。第一列是 î 去的地方,第二列是 ĵ 去的地方。看着矩阵,按一下切换看看。那四个看起来毫无意义的数字,原来一直就是"把 î 和 ĵ 送到这儿"的坐标。

[
1.6-0.80.71.3
]
■ î■ ĵ

"光知道 î 和 ĵ 有什么用?其他的点呢?"这儿就是核心。其他的点根本不用单独去知道。平面上任何一个向量,说到底都是若干个 î 加上若干个 ĵ。比如 (3, 2) 这个点,就是3个 î 加2个 ĵ。而变换会原封不动地保住这个"相加的比例"。所以变换后的 (3, 2),就是 î 去的地方放3个、ĵ 去的地方放2个,加起来的位置。拖动向量确认一下。这就是线性。只要定下 î 和 ĵ 的命运,剩下无穷多的点就会自己跟上——正是靠这个性质,矩阵那四个数字才能操控整个空间。

îĵv
v = 2·î + 1·ĵ
拖动蓝点

做了一次变换之后,想在上面再做一次怎么办?比如先旋转,再拉长。这时候,把两个矩阵相乘就行。也就是说,矩阵乘法其实就是"一个接一个地做变换"。还记得在学校学过,要按那种奇怪的方式去乘行和列吗?那条怪规则,算的正是"把变换按顺序应用之后的结果"。所以顺序很重要。先转再拉,和先拉再转,结果是不一样的。把两个变换的顺序换一下,看那幅画就变了。AB 和 BA 不一样,不是要背的规则,而是本来就理所当然的事。

旋转剪切
旋转剪切
[
0.9-1.01.00.0
]
剪切旋转
[
0.0-1.01.00.9
]

现在来逛几个有代表性的变换。旋转、放大、剪切(斜着推)、反射。按一按按钮,你会看到每一个都对应着一个矩阵。我们知道的所有"改变空间的动作",到头来都是矩阵。最后,按一下"压扁"按钮。空间被压成了一条线。这是个有点特别的情况,这时候有个叫行列式的值会变成0,是变换把空间压扁了的信号。这个"变平"到底意味着什么,我们马上在下一讲(行列式)里好好挖一挖。

det = 1.00
实际应用实战里遇到矩阵,别把它当数字表来读,先看两列。第一列,î 去哪儿;第二列,ĵ 去哪儿。光这一点,就能在脑子里画出这个变换怎么扭曲空间。在图形里转动一个角色,给数据换坐标轴,全都是这一个动作。而要把多个变换串起来时,相乘的顺序就是应用的顺序。光记住这一条,矩阵乘法就再也不会把你绕晕。
如果有帮助,请支持我们
工程数学