前言
对于如何确定本篇文章的内容涵盖范围这个问题,我想了很久,最终打算从最基本的什么是形状(shape) 这个问题谈起。
形状的本质
在拓扑相关的理论中,形状是指n−1维流形(manifold)在n维流形中的嵌套。
流形是连续的,详细的定义也较为复杂,可以从以下两点来辅助理解流形的概念:
- n 维流形的局部与 Rn 等价,例如:曲面(二维流形)的局部是二维平面。
- 对流形进行网格剖分,得到的离散流形除去边缘边之外,其他边有且仅有两个面与之相邻。
所以我们可以认为,在 Rn 或更高维欧式空间中观测不同 n−1维流形的嵌套,就是在观测不同的形状。
更严谨的,对于一个向量函数,可以表达为 f:Rn↦Rm.
我们令 x=(x1,…,xn)T∈Rn, y=(y1,…,ym)T∈Rm,故:
y=f(x)⟹⎩⎨⎧y1=f1(x1,…,xn)yi=fi(x1,…,xn)ym=fm(x1,…,xn)
假设 f 是可微的,在自变量任意一点的邻域中,我们有(一阶泰勒展开):
⎩⎨⎧Δy1=∂x1∂f1Δx1+⋯+∂xj∂f1Δxj+⋯+∂xn∂f1ΔxnΔyi=∂x1∂fiΔx1+⋯+∂xj∂fiΔxj+⋯+∂xn∂fiΔxnΔy1=∂x1∂fmΔx1+⋯+∂xj∂fmΔxj+⋯+∂xn∂fmΔxn
写成矩阵形式
Δy1…Δyi…Δym=∂x1∂f1…∂x1∂fi…∂x1∂fm……………∂xj∂f1…∂xj∂fi…∂xj∂fm……………∂xn∂f1…∂xn∂fi…∂xn∂fmΔx1…Δxj…Δxn
中间的系数矩阵就是m×n的雅克比(Jacobian)矩阵,简化写作:
Δy=Jm×nΔx
观察映射f的雅可比矩阵:
-
矩阵中第 i 行 表述为第 i 个映射 fi:Rn↦R 的梯度(gradient)
∇fi=(∂x1∂fi,…,∂xj∂fi,…,∂xn∂fi)
-
矩阵中第 j 列 表述为映射沿 xj 方向的切向量(tangent vector)
dxjd(y)=(∂xj∂f1,…,∂xj∂fi,…,∂xj∂fm)T
也可以理解为一个一维流形: R↦Rm
对不同 n 和 m,Δy=Jm×nΔx 可以表述不同含义,总体上:
- 若 m>n ,因变量维度比自变量维度大,那么以上公式表述了低维流形在高维空间中的嵌套,即形状。
- 若 m<n ,因变量维度比自变量维度小,那么以上公式表述的是高维流形向低维空间的投影。
- 若 m=n ,则是表述的线性变换,例如旋转、缩放。
值得注意的是,y=f(x) 在局部等价于 Δy=Jm×nΔx,而后者可以表述线性变换,前者通过与后者局部等价,可以表述非线性变换。
特别的:
| m | n | presents |
|---|
| 1 | 1 | 数到数的映射 |
| 2 | 1 | 平面上的曲线 |
| 1 | 2 | 二元函数;灰度图;二维流形向一维空间的投影 |
| 2 | 2 | 线性变换:旋转、缩放、剪切 |
二维流形
对形状有更深的理解之后,我们再来讨论二维流形。
为什么是二维流形?
因为人类只能在三维空间中去观察,故能直接观察到的最复杂的形状就是二维流形在三维空间中的嵌套,故着重研究二维流形是有意义的。
并不是所有图形都是流形,但是非流形都可以通过局部流形的拼接表述出来,所以我们只关注流形的特性。