Part I · 第 3 章 多元与向量微积分 · 3.6

向量场与流

给空间里每一点配一个向量,就得到一个向量场:风速、水流、磁场,或者"机器人在这里应该朝哪走"的指令。让一个粒子顺着场漂移,它走出的曲线叫积分曲线,所有粒子一起漂移的整体运动叫流。动力系统、速度控制器、势场导航,乃至最新的流匹配 (flow matching) 机器人策略,说的都是同一件事:用一个向量场描述运动。

约 25 分钟 前置:2.5 常微分方程 · 3.2 梯度 · 3.3 雅可比 · 1.11 特征值 5 个交互

    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动手玩:粒子随流漂移

    FIG 1向量场与流
    灰色箭头是场向量(长度饱和显示,只看方向与相对大小);细线是一批随机粒子的近期轨迹。点击放下的琥珀色粒子会留下完整的积分曲线。"极限环"场里,所有粒子最终绕着单位圆转;"摆"的相图里,中心周围是闭合轨道(摆动),远处是转动。
    试一试
    • 点击放下 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\) 在旋转下不变。

    FIG 2迹–行列式图与相图
    迹 T(横)· 行列式 D(纵)
    相图 ẋ = A x
    相图中青色表示衰减方向、琥珀色表示增长方向的特征向量直线(只在特征值为实数时存在)。箭头指示运动方向。这里取 \(A=R\begin{bmatrix}0&1\\-D&T\end{bmatrix}R^\top\),它的迹为 \(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 节)的组合:散度是迹,旋度是反对称部分。

    读数里还有两个直接用粒子圈算出来的量:通过圆周的净流出量除以面积,以及沿圆周的环量除以面积。随着圆变小,它们分别趋近于散度和旋度,这就是散度定理与格林定理的内容。

    FIG 3一小块流体的变形
    淡紫色圆是 \(\tau=0\) 时的小块;琥珀色填充是 \(\tau\) 时刻的像(由每个边界粒子数值积分得到),淡色轮廓是中间时刻。红、绿两条直径跟着一起被搬运,展示转动与拉伸。拖动圆心,调节半径与时间。
    • 选"旋转"场,把 \(\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\) 时刻的解:

    $$ \dot{\mathbf x}(t) = F\big(\mathbf x(t)\big),\qquad \varphi_t(\mathbf x_0)=\mathbf x(t),\qquad \varphi_0=\mathrm{id},\quad \varphi_{t+s}=\varphi_t\circ\varphi_s. $$

    若 \(F\) 满足 Lipschitz 条件(例如连续可微,只要雅可比有界),解存在且唯一(Picard–Lindelöf 定理),所以积分曲线不会相交。复合性质 \(\varphi_{t+s}=\varphi_t\circ\varphi_s\) 说的是"漂移 \(s\) 秒再漂移 \(t\) 秒,等于漂移 \(t+s\) 秒"。

    不动点、线性化与分类

    $$ F(\mathbf x^*)=\mathbf 0,\qquad \dot{\boldsymbol\delta}\approx A\boldsymbol\delta,\ \ A=J_F(\mathbf x^*),\qquad \boldsymbol\delta(t)=e^{At}\boldsymbol\delta_0 ,\qquad \lambda_{1,2}=\tfrac T2\pm\sqrt{\tfrac{T^2}4-D}. $$

    \(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 公式)得

    $$ \frac{\operatorname{area}\big(\varphi_\tau(\Omega)\big)}{\operatorname{area}(\Omega)}\;\approx\;\det\Phi_\tau=\exp\!\Big(\int_0^\tau \hl{div}{\operatorname{div}F}\big(\mathbf x(t)\big)\,dt\Big),\qquad \operatorname{div}F=\operatorname{tr}J_F,\quad \hl{curl}{\operatorname{curl}F}=\partial_xF_y-\partial_yF_x . $$

    用 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(四阶)取四个采样点的加权平均:

    $$ \mathbf x_{k+1}=\mathbf x_k+\tfrac h6\big(\mathbf k_1+2\mathbf k_2+2\mathbf k_3+\mathbf k_4\big),\ \ \mathbf k_1=F(\mathbf x_k),\ \mathbf k_2=F(\mathbf x_k+\tfrac h2\mathbf k_1),\ \mathbf k_3=F(\mathbf x_k+\tfrac h2\mathbf k_2),\ \mathbf k_4=F(\mathbf x_k+h\mathbf k_3). $$

    下图在两个场上比较这三种方法与精确解。旋转场的精确流是一个圆;梯度流 \(\dot{\mathbf x}=-\nabla f\)(\(f=\tfrac12(x^2+6y^2)\))的精确解是指数衰减。把步长 \(h\) 拉大,会发生有意思的事。

    FIG 4欧拉、Heun 与 RK4
    灰色是精确解;红色欧拉,绿色 Heun,蓝色 RK4。每个方法走 \(\lfloor T/h\rceil\) 步到达同一时刻 \(T\)(旋转场 \(T=2\pi\),一圈;梯度流 \(T=4\))。步数较少时,圆点标出每一步的落点。
    • 在"旋转场"上让欧拉法转完一圈后半径超过 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 推广到任意隐式曲线):

    $$ F(\mathbf x)=v_0\,\frac{\hat{\mathbf t}-k\,d\,\hat{\mathbf n}}{\big\|\hat{\mathbf t}-k\,d\,\hat{\mathbf n}\big\|},\qquad \hat{\mathbf n}=\frac{\nabla\alpha}{\|\nabla\alpha\|},\ \ \hat{\mathbf t}=\hat{\mathbf z}\times\hat{\mathbf n},\ \ d\approx\frac{\alpha}{\|\nabla\alpha\|}. $$

    这里 \(\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\),和上一节完全一样。

    FIG 5向量场路径跟踪
    琥珀色曲线是目标路径 \(\alpha=0\),灰色箭头是场 \(F\),紫色折线是机器人(蓝点,可拖动起点)的离散轨迹(总时长 18 s)。读数里的"稳定性指标" \(v_0k\Delta t\) 小于 2 时,横向误差指数衰减;超过 2 时,机器人会在曲线两侧来回颠簸(chatter)。
    • 让机器人从曲线外较远的地方出发,最终贴着曲线走(末段横向误差 < 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常见误区

    误区 1:向量场的箭头就是轨迹

    箭头是速度,不是位移。粒子走一小步后位置变了,所在处的箭头也变了,所以轨迹是把箭头"连起来"的曲线(积分曲线),通常是弯的。用大步长直接按初始箭头走一步,就是 FIG 4 里欧拉法的误差来源。

    误区 2:中心点的线性化结论一定可信

    线性化出 \(T=0,D>0\)(纯虚特征值)时,真实的非线性系统可能是稳定螺旋、不稳定螺旋,也可能真是中心。"摆"的小幅摆动是真中心(因为它有守恒量),但一般情况不能下结论。

    误区 3:把散度为零当成"没有运动"

    散度只管面积(体积)怎么变。旋转、剪切、鞍形场的散度都是 0,但粒子运动得很剧烈,只是面积守恒。反过来,不动点上的场为 0,但散度可以不为 0(FIG 3 的"螺旋汇"在原点)。

    误区 4:步长越小越好

    步长太大会不稳定、不精确;太小则浪费计算,且在实时控制里受限于周期。更重要的是方法的阶数:RK4 在 \(h=0.3\) 时可能比欧拉在 \(h=0.01\) 更准,代价是每步多算三次 \(F\)。对"对时间离散敏感"的闭环系统(FIG 5),应该用稳定性条件 \(v_0k\Delta t<2\) 选增益或周期,而不是只靠试。

    9小练习

    1. 向量场 \(F(x,y)=(-y,\,x)\) 的散度与旋度是?
    \(\operatorname{div}=\partial_x(-y)+\partial_y(x)=0\),\(\operatorname{curl}=\partial_xF_y-\partial_yF_x=1-(-1)=2\)。这是以单位角速度转动的刚体,旋度是转速的两倍。
    2. 某不动点的雅可比 \(A=\begin{bmatrix}-1&2\\-2&-1\end{bmatrix}\)。它是什么类型?
    \(T=-2\),\(D=(-1)(-1)-(2)(-2)=1+4=5\)。\(D>0\) 排除鞍点;\(T^2/4=1<5=D\),特征值是复数 \(-1\pm2i\);实部 \(-1<0\),所以是稳定螺旋。\(T\ne0\) 排除中心。
    3. 对 \(\dot{\mathbf x}=(-y,\,x)\)(半径 1 的圆周运动)用欧拉法,\(h=0.1\),走 100 步。半径大约变成?
    每步放大 \(\sqrt{1+h^2}=\sqrt{1.01}\),100 步后是 \(1.01^{50}=e^{50\ln1.01}\approx e^{0.4975}\approx1.64\)。步长 0.1 看似很小,一圈(约 63 步)就已经偏出 \(\approx1.37\) 倍。
    4. 梯度下降 \(\mathbf x\leftarrow\mathbf x-\eta\nabla f(\mathbf x)\) 可以看成对哪个 ODE 的欧拉离散?它对步长的稳定性要求是什么?
    梯度流 \(\dot{\mathbf x}=-\nabla f\) 在极小点附近线性化为 \(\dot{\boldsymbol\delta}=-H\boldsymbol\delta\),欧拉要求每个特征方向上 \(|1-h\lambda_i|<1\),即 \(h=\eta<2/\lambda_{\max}\),与 3.5 节一致。
    5. 一个小圆盘形的粒子云在向量场里漂移,面积在增大。你能断定?
    面积的相对变化率就是散度,\(\tfrac{d}{dt}\ln A\approx\operatorname{div}F\)。旋度只影响转动;梯度场既可能让面积增大(\(\nabla f\) 的 \(f\) 是凸函数时)也可能缩小;增长不要求在不动点。

    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 — 用神经网络学习向量场来生成数据,机器人流匹配策略的基础