向量场与流
给空间里每一点配一个向量,就得到一个向量场:风速、水流、磁场,或者"机器人在这里应该朝哪走"的指令。让一个粒子顺着场漂移,它走出的曲线叫积分曲线,所有粒子一起漂移的整体运动叫流。动力系统、速度控制器、势场导航,乃至最新的流匹配 (flow matching) 机器人策略,说的都是同一件事:用一个向量场描述运动。
1为什么机器人需要它
上一节的梯度只是向量场的一种特例。机器人学里到处是向量场:
- 动力系统:状态 \(\mathbf x\) 的变化率由状态本身决定,\(\dot{\mathbf x}=F(\mathbf x)\)。摆、四旋翼、倒立摆、闭环控制系统都是这个形式(2.5 节),它们的"相图"就是向量场。
- 速度/行为控制器:把"该往哪走"写成一个场 \(F(\mathbf x)\),机器人只要处处顺着场走:势场导航、沿曲线路径跟踪、阻抗控制里的吸引子,都是向量场控制器。
- 学习得到的策略:模仿学习里的动态运动基元 (DMP)、扩散与流匹配策略,学的就是一个向量场 \(v_\theta(\mathbf x,t)\),推理时沿着它积分,把噪声"流"成动作。
- 稳定性与不确定性传播:不动点附近的行为由雅可比(3.3 节)决定;一团初始状态的体积怎样变化由散度决定。
这一节搭起一个共同语言:场、流、不动点、线性化、散度与旋度,以及把"流"变成可计算轨迹的数值积分。
2直觉:撒一把沙子到河里
想象一条河,每个位置的水都有一个流速:这就是向量场 \(F(x,y)\)。往河里撒一把沙子,每一粒沙子都沿着当地的流速运动,走出一条积分曲线:它在每一点的速度恰好是该点的场向量。整条河的沙子一起运动,就是流 \(\varphi_t\):\(\varphi_t(\mathbf x_0)\) 表示 \(t\) 秒前放在 \(\mathbf x_0\) 的沙子现在的位置。
两条积分曲线永远不会相交(每点只有一个方向可走);场为零的点是不动点,放在那里的沙子永远不动。下图给出几种典型的场,让粒子顺着场漂移。点击地图放下一个高亮的粒子,观察它的轨迹;移动鼠标,读出任一点的场向量。
3动手玩:粒子随流漂移
- 点击放下 3 个粒子,在"极限环"场里分别从圆内、圆外出发:它们最后都去了哪里?
- 用鼠标找到场向量几乎为 0 的位置(\(\|F\|<0.1\)),即不动点。试试"摆",它有几个不动点?
向量场 \(F\) 与流 \(\varphi_t\) 是同一件事的两种写法:场给出瞬时速度,流给出一段时间后的位置。\(\dot{\mathbf x}=F(\mathbf x)\) 把前者变成后者,要靠积分(解 ODE)。大多数 \(F\) 没有解析解,所以实际中总是数值积分。
4第二视角:不动点附近的雅可比,以及散度与旋度
线性化:迹–行列式图
在不动点 \(\mathbf x^*\) 附近,3.3 节说过 \(F\) 像它的雅可比:令 \(\boldsymbol\delta=\mathbf x-\mathbf x^*\),则 \(\dot{\boldsymbol\delta}\approx J\boldsymbol\delta\)。所以不动点附近的流,就是线性系统 \(\dot{\mathbf x}=A\mathbf x\) 的流(\(A=J(\mathbf x^*)\))。它的形状只由 \(A\) 的特征值(1.11 节)决定,而二维的特征值 \(\lambda=\tfrac T2\pm\sqrt{\tfrac{T^2}{4}-D}\) 只取决于两个数:迹 \(T=\operatorname{tr}A\) 与行列式 \(D=\det A\)。
左图是迹–行列式平面,拖动黄点;右图是对应的相图。抛物线 \(D=T^2/4\) 上方的特征值是复数(螺旋),下方是实数(结点);\(D<0\) 是鞍点;\(T=0\) 且 \(D>0\) 是中心(闭合轨道)。把"旋转坐标"滑块拖一拖:相图转起来,而类型不变,因为 \(T\) 与 \(D\) 在旋转下不变。
- 造一个中心:\(T\approx0\),\(D>0.3\)。轨道是闭合的椭圆,粒子永远不会远离也不会靠近原点。
- 造一个鞍点(\(D<-0.3\)):只有沿一条特征向量直线的粒子能到达原点,其余的都被甩开。
- 造一个不稳定螺旋:\(T>0.3\) 且在抛物线上方。再把它变成稳定螺旋:要改变哪个量的符号?
散度与旋度:一小块流体怎样变形
把一小圈粒子(紫色圆)撒在点 \(\mathbf c\) 附近,让它们随流漂移一段时间 \(\tau\)。这一小块会被搬运,同时变形:面积放大或缩小,朝向转动。两个局部量描述了这件事:散度 \(\operatorname{div}F=\partial_xF_x+\partial_yF_y\)(面积的相对变化率)和二维旋度 \(\operatorname{curl}F=\partial_xF_y-\partial_yF_x\)(局部转动速率的两倍)。它们都是雅可比(3.3 节)的组合:散度是迹,旋度是反对称部分。
读数里还有两个直接用粒子圈算出来的量:通过圆周的净流出量除以面积,以及沿圆周的环量除以面积。随着圆变小,它们分别趋近于散度和旋度,这就是散度定理与格林定理的内容。
- 选"旋转"场,把 \(\tau\) 拉到 2 以上:小块转了很多,面积比却始终是 1。旋度不为零而散度为零意味着什么?
- 选"螺旋汇"场,让面积比降到 0.3 以下。\(\exp(\operatorname{div}\cdot\tau)\) 预测得准吗?
- 在"极限环"场里,把圆心拖到散度从正变负的位置附近(\(|\operatorname{div}|<0.3\))。这里 \(\operatorname{div}F=2-4r^2\),变号的圆是 \(r\approx0.71\),不是粒子最终绕行的极限环 \(r=1\):在 \(0.71<r<1\) 之间面积在收缩,粒子却仍在向外走。散度只说面积怎样变,不说轨道最后停在哪里。
5再看数学
提示:把鼠标悬停在公式中带底色的符号上,FIG 3 中对应的元素会被高亮。
向量场、积分曲线与流
向量场是映射 \(F:\R^n\to\R^n\),每点一个向量。积分曲线 \(\mathbf x(t)\) 满足 ODE(2.5 节),流 \(\varphi_t\) 把初值映到 \(t\) 时刻的解:
若 \(F\) 满足 Lipschitz 条件(例如连续可微,只要雅可比有界),解存在且唯一(Picard–Lindelöf 定理),所以积分曲线不会相交。复合性质 \(\varphi_{t+s}=\varphi_t\circ\varphi_s\) 说的是"漂移 \(s\) 秒再漂移 \(t\) 秒,等于漂移 \(t+s\) 秒"。
不动点、线性化与分类
\(e^{At}\) 是矩阵指数(5.6 节会把它推广到李群)。若所有特征值实部为负,不动点渐近稳定;只要有一个实部为正,就不稳定。二维时:\(D<0\) 鞍点;\(D>0,\,T<0\) 稳定(\(T^2>4D\) 结点,\(T^2<4D\) 螺旋);\(D>0,\,T>0\) 不稳定;\(T=0,\,D>0\) 中心。中心是线性化的临界情形:线性系统是闭合轨道,非线性系统可能是稳定或不稳定螺旋,需要看更高阶项。这就是线性化的"哈特曼–格罗曼"定理成立的范围:对特征值实部都不为零的不动点(双曲不动点),线性化给出正确的定性图像。
散度、旋度与流的体积变化
流的雅可比 \(\Phi_t=D\varphi_t\) 描述一小块如何被拉伸和旋转,它满足 \(\dot\Phi_t=J_F(\varphi_t)\,\Phi_t\)(把 \(\mathbf x(t)\) 的方程对初值求导)。由 \(\tfrac{d}{dt}\det\Phi=\operatorname{tr}(J_F)\det\Phi\)(Liouville 公式)得
用 3.3 节的读法:\(\det\Phi_\tau\) 就是流在这一小块上的面积缩放倍数。对线性场 \(\dot{\mathbf x}=A\mathbf x\),\(\det e^{A\tau}=e^{\tau\operatorname{tr}A}\),所以散度 \(=\operatorname{tr}A\),处处相同。旋度的几何含义:刚体转动 \(F=(-\omega y,\omega x)\) 的旋度是 \(2\omega\),即旋度是转速的两倍。
与前几节的联系:梯度场没有旋度。若 \(F=\nabla f\),则 \(\operatorname{curl}F=\partial_x\partial_yf-\partial_y\partial_xf=0\)(3.1 节的混合偏导相等),沿任何闭曲线的环量 \(\oint F\cdot d\mathbf r=0\),做功与路径无关。反过来,"旋转"这样旋度非零的场不可能是任何函数的梯度,不能用势场来描述,这也是势场导航"只能下山、不会绕圈"的原因。梯度流 \(\dot{\mathbf x}=-\nabla f\) 的雅可比 \(-H\) 是对称矩阵(3.5 节),特征值全是实数,不会出现螺旋。
6把流变成数字:数值积分
计算机只能一步一步走。最简单的欧拉法 \(\mathbf x_{k+1}=\mathbf x_k+hF(\mathbf x_k)\) 假设场在一步内不变;Heun 法(二阶)取起点与终点预估的平均;经典 RK4(四阶)取四个采样点的加权平均:
下图在两个场上比较这三种方法与精确解。旋转场的精确流是一个圆;梯度流 \(\dot{\mathbf x}=-\nabla f\)(\(f=\tfrac12(x^2+6y^2)\))的精确解是指数衰减。把步长 \(h\) 拉大,会发生有意思的事。
- 在"旋转场"上让欧拉法转完一圈后半径超过 1.5:它本该走一个圆,却螺旋着飞了出去。
- 在"梯度流"上找一个 \(h\):欧拉和 Heun 发散(越走越远),而 RK4 仍然收敛。
为什么欧拉法会让旋转场的粒子越转越远?旋转场的 \(A=\begin{bmatrix}0&-1\\1&0\end{bmatrix}\),欧拉一步是 \(\mathbf x\leftarrow(I+hA)\mathbf x\),而 \(I+hA\) 把每个向量放大 \(\sqrt{1+h^2}\) 倍,每一步都向外"多走一点",\(n\) 步后半径是 \((1+h^2)^{n/2}\)。对 \(\dot x=\lambda x\)(\(\lambda<0\)),欧拉要求 \(|1+h\lambda|<1\),即 \(h<2/|\lambda|\)。
梯度下降就是欧拉法。\(\mathbf x\leftarrow\mathbf x-\eta\nabla f\) 是梯度流 \(\dot{\mathbf x}=-\nabla f\) 的欧拉离散,步长 \(\eta\) 就是 \(h\),\(\lambda\) 是 Hessian 的特征值。所以 3.5 节里"\(\eta<2/\lambda_{\max}\)"这条稳定性条件,正是这里的 \(h<2/|\lambda|\)。
7机器人中的它:用向量场沿曲线行走
让无人机或移动机器人沿一条给定的闭合曲线 \(\{\alpha(\mathbf x)=0\}\) 巡航,一个简洁的做法是构造向量场:沿曲线的切向前进,同时按距离把机器人拉回曲线(Nelson 等 2007 用在固定翼无人机上,Gonçalves 等 2010 推广到任意隐式曲线):
这里 \(\hat{\mathbf n}\) 是 \(\alpha\) 的梯度方向(3.2 节:垂直于等值线,指向曲线外),\(d\) 是到曲线的有符号距离的一阶近似,\(k\) 是收敛增益,\(v_0\) 是巡航速度。机器人按 \(\dot{\mathbf x}=F(\mathbf x)\) 运动,我们用步长 \(\Delta t\) 的欧拉法离散它,就像真实控制器每个周期更新一次。曲线附近 \(\dot d\approx-v_0k\,d\),所以欧拉稳定要求 \(v_0k\,\Delta t<2\),和上一节完全一样。
- 让机器人从曲线外较远的地方出发,最终贴着曲线走(末段横向误差 < 0.05)。
- 把 \(v_0k\Delta t\) 推到 2 以上,让机器人颠簸(末段仍有明显误差)。再通过减小 \(\Delta t\) 修好它:这和"减小学习率"是同一个操作。
沿路径行走:固定翼无人机、AGV、无人船常用这类向量场,因为它没有"追哪个点"的问题,场天然平滑,对扰动鲁棒。动态运动基元 (DMP) 与学习的向量场:DMP 把示教轨迹编码成一个带吸引子的向量场;扩散策略 / 流匹配策略则训练神经网络 \(v_\theta(\mathbf x,t)\) 来近似一个把噪声搬运成动作的向量场,推理时用 Euler 或 RK 积分若干步(步数越少越快,但就像 FIG 4 那样精度下降)。稳定性分析:对闭环系统 \(\dot{\mathbf x}=F(\mathbf x,\mathbf u(\mathbf x))\) 在平衡点求雅可比,检查特征值实部,是最基本的稳定性检验(Lyapunov 间接法)。不确定性传播:\(\det\Phi_t\) 与 \(\Phi_t\) 本身告诉你,一团初始误差沿着流被拉伸成什么样(4.5 节)。
8常见误区
箭头是速度,不是位移。粒子走一小步后位置变了,所在处的箭头也变了,所以轨迹是把箭头"连起来"的曲线(积分曲线),通常是弯的。用大步长直接按初始箭头走一步,就是 FIG 4 里欧拉法的误差来源。
线性化出 \(T=0,D>0\)(纯虚特征值)时,真实的非线性系统可能是稳定螺旋、不稳定螺旋,也可能真是中心。"摆"的小幅摆动是真中心(因为它有守恒量),但一般情况不能下结论。
散度只管面积(体积)怎么变。旋转、剪切、鞍形场的散度都是 0,但粒子运动得很剧烈,只是面积守恒。反过来,不动点上的场为 0,但散度可以不为 0(FIG 3 的"螺旋汇"在原点)。
步长太大会不稳定、不精确;太小则浪费计算,且在实时控制里受限于周期。更重要的是方法的阶数:RK4 在 \(h=0.3\) 时可能比欧拉在 \(h=0.01\) 更准,代价是每步多算三次 \(F\)。对"对时间离散敏感"的闭环系统(FIG 5),应该用稳定性条件 \(v_0k\Delta t<2\) 选增益或周期,而不是只靠试。
9小练习
10延伸阅读
- Khan Academy, Multivariable Calculus — Grant Sanderson(3Blue1Brown)讲解的向量场、散度与旋度的直观图像
- S. Strogatz, Nonlinear Dynamics and Chaos — 相平面、线性化、迹–行列式分类与极限环(第 5–7 章)
- H. Khalil, Nonlinear Systems — 稳定性与 Lyapunov 方法(本节"间接法"的出处)
- D. R. Nelson, D. B. Barber, T. W. McLain & R. W. Beard, Vector Field Path Following for Miniature Air Vehicles, IEEE Trans. Robotics 23(3), 2007 — FIG 5 中向量场路径跟踪的经典应用
- Y. Lipman, R. Chen, H. Ben-Hamu, M. Nickel & M. Le, Flow Matching for Generative Modeling, ICLR 2023 — 用神经网络学习向量场来生成数据,机器人流匹配策略的基础