引言
经典微积分建立在平直的 $\mathbb{R}^n$ 上,但现实世界中的几何对象——地球表面、机器人构形空间、广义相对论的时空——本质上是「弯曲」的。微分几何提供了一套不依赖外围欧氏空间、在弯曲空间内部谈论长度、角度、导数与曲率的语言。这套语言的核心概念链条是:流形(局部像 $\mathbb{R}^n$ 的空间)→ 切空间与张量(流形上的线性代数)→ 联络(比较不同点处向量的规则)→ 曲率(联络非平凡性的度量)。本文沿此链条梳理基本概念,并以球面测地线的数值求解展示从公式到代码的完整过程。
理论基础
流形与切空间
$n$ 维拓扑流形 $M$ 是局部同胚于 $\mathbb{R}^n$ 的 Hausdorff 空间:每点附近存在坐标卡 $(U, \varphi)$,$\varphi: U \to \mathbb{R}^n$ 给出局部坐标。坐标卡之间转移函数光滑时称 $M$ 有光滑结构,此时可定义光滑函数、光滑曲线与向量场。点 $p$ 处的切向量可定义为「方向导数算子」:对光滑函数求方向导数的映射 $v: C^\infty(M) \to \mathbb{R}$,满足 Leibniz 法则。全体切向量构成 $n$ 维线性空间 $T_pM$,局部坐标给出自然基 $\partial_i = \partial/\partial x^i$,其对偶基为余切空间 $T_p^*M$ 中的 $dx^i$。
张量与度规
$(k, l)$ 型张量是 $k$ 个余切向量与 $l$ 个切向量的多重线性函数,张量场逐点光滑变化。黎曼度规 $g$ 是对称正定的 $(0,2)$ 型张量场,给出每点切空间上的内积:
$$g = g_{ij}, dx^i \otimes dx^j, \qquad g_{ij} = g\left(\partial_i, \partial_j\right)$$
(采用 Einstein 求和约定:重复指标自动求和。)有了度规便可定义曲线长度 $\int \sqrt{g_{ij}\dot{x}^i\dot{x}^j},\,dt$、角度与体积元 $\sqrt{\det g},\,dx^1\wedge\cdots\wedge dx^n$。
联络与协变导数
不同点的切空间是不同的线性空间,普通方向导数 $\partial_i V^j$ 不构成张量——它在坐标变换下不按张量法则变换。联络 $\nabla$ 是修正这一缺陷的规则,由 Christoffel 符号 $\Gamma^k_{ij}$ 刻画:$\nabla_{\partial_i}\partial_j = \Gamma^k_{ij}\partial_k$,向量场的协变导数为
$$\nabla_i V^k = \partial_i V^k + \Gamma^k_{ij} V^j$$
在黎曼几何中取 Levi-Civita 联络(无挠且与度规相容 $\nabla_k g_{ij} = 0$),它由度规唯一确定:
$$\Gamma^k_{ij} = \frac{1}{2} g^{kl}\left(\partial_i g_{jl} + \partial_j g_{il} - \partial_l g_{ij}\right)$$
沿曲线的协变导数为零的向量场称为平行移动;切向量沿自身平行移动的曲线即测地线——弯曲空间中「最直」的曲线,其坐标满足测地线方程
$$\ddot{x}^k + \Gamma^k_{ij}\dot{x}^i\dot{x}^j = 0$$
曲率
协变导数不可交换的程度由 Riemann 曲率张量度量:$R^l_{ijk} = \partial_i\Gamma^l_{jk} - \partial_j\Gamma^l_{ik} + \Gamma^l_{im}\Gamma^m_{jk} - \Gamma^l_{jm}\Gamma^m_{ik}$。截面曲率、Ricci 张量 $R_{jk} = R^i_{ijk}$ 与标量曲率 $R = g^{jk}R_{jk}$ 是其逐级收缩。Gauss 的「绝妙定理」(Theorema Egregium)指出:曲面的 Gauss 曲率只由内蕴度规决定,与嵌入方式无关——这正是「内蕴几何」概念的起点。
方法实现
以单位球面为例。取球坐标 $(\theta, \varphi)$,度规 $g = \mathrm{diag}(1, \sin^2\theta)$,非零 Christoffel 符号为 $\Gamma^\theta_{\varphi\varphi} = -\sin\theta\cos\theta$ 与 $\Gamma^\varphi_{\theta\varphi} = \cot\theta$。测地线方程化为一阶方程组后用经典 RK4 积分。球面测地线即大圆,其充要条件是曲线始终位于过球心的平面内,故「位置向量 × 速度向量」应守恒,可用作数值格式检验:
import numpy as np
def sphere_geodesic(y0, T=8.0, steps=8000):
"""单位球面测地线, 状态 y = (th, ph, th', ph'), RK4 积分"""
def rhs(y):
th, ph, vth, vph = y
return np.array([vth, vph,
np.sin(th) * np.cos(th) * vph**2,
-2.0 / np.tan(th) * vth * vph])
h = T / steps
y = np.asarray(y0, dtype=float)
out = [y.copy()]
for _ in range(steps):
k1 = rhs(y)
k2 = rhs(y + 0.5 * h * k1)
k3 = rhs(y + 0.5 * h * k2)
k4 = rhs(y + h * k3)
y = y + h * (k1 + 2 * k2 + 2 * k3 + k4) / 6.0
out.append(y.copy())
return np.array(out)
y0 = [np.pi / 4, 0.0, 0.0, 1.0] # 北纬45°处向正东出发
traj = sphere_geodesic(y0)
th, ph = traj[:, 0], traj[:, 1]
r = np.stack([np.sin(th) * np.cos(ph),
np.sin(th) * np.sin(ph), np.cos(th)], axis=1)
v = np.gradient(r, axis=0)
nvec = np.cross(r, v) # 大圆平面法向量应守恒
print(f"平面法向量最大漂移: {np.abs(nvec - nvec[0]).max():.3e}")
print(f"theta 范围: [{th.min():.4f}, {th.max():.4f}] (理论 [π/4, 3π/4])")
轨迹从北纬 $45°$ 出发向极地方向爬升再折返,恰为与纬圈相切的大圆,法向量漂移在 $10^{-6}$ 量级,验证了联络公式的正确实现。
工程案例分析
机器人学中,刚体位形构成李群 $SE(3) = \mathbb{R}^3 r\times SO(3)$:姿态插值若直接在欧拉角空间线性插值会产生依赖于参数化的伪影,正确做法是在流形上用指数映射 $\exp: mathfrak{se}(3) \to SE(3)$ 生成测地线(旋量运动 screw motion),这正是并联机构运动规划与姿态滤波(流形上的 Kalman 滤波)的基础。广义相对论则是联络几何最深刻的物理实现:物质通过 Einstein 方程 $G_{\mu\nu} = 8\pi T_{\mu\nu}$ 决定时空度规,自由落体粒子沿该度规的测地线运动——GPS 卫星钟差修正(每天约 38 微秒)正是这套几何框架的工程后果。
| 平直空间概念 | 弯曲流形对应 | 关键对象 |
|---|---|---|
| $\mathbb{R}^n$ | $n$ 维光滑流形 | 坐标卡与图册 |
| 方向导数 $\partial_i V^j$ | 协变导数 $\nabla_i V^j$ | Christoffel 符号 |
| 直线 | 测地线 | 测地线方程 |
| 向量平移(与路径无关) | 平行移动(依赖路径) | 和乐群 |
| 二阶导数可交换 | 不可交换 | Riemann 曲率张量 |
结论与展望
流形、张量、联络、曲率这条概念链把微积分推广到弯曲空间,是现代物理学与几何化工程计算的公共语言。进一步的方向包括:黎曼优化(在 Stiefel/Grassmann 流形上做梯度下降,用于低秩矩阵补全与特征值问题)、信息几何(Fisher 信息度规下的统计流形),以及离散微分几何(DDG)在计算机图形学中对曲面处理的基础作用——它把本文的连续理论忠实地翻译到三角网格上。
发表回复