跳转至

专题 7 · 非光滑分析基础:接触力学的数学根基

档位:核心档位 3(博士入学)+ 进阶档位 4(博士毕业+) 建议时长:档位 3 约 14–18 h;档位 4 额外 12–16 h 前置:第二批凸分析(凸集、凸函数、次梯度、对偶);第零批线性代数与实分析(Lipschitz 连续、测度、可测函数);接触力学专题 1(互补问题与 Signorini 条件)、专题 2(摩擦锥) 下游:本章是接触力学全章的**理论天花板**——专题 3(时步法)、专题 5(混合系统/Saltation)、专题 6(接触隐式 MPC)在这里获得它们的解概念与收敛性证明的数学根基


前置自测

📋 前置自测(答不出 ≥ 2 题 → 先回第二批凸分析与本章列出的前置专题复习)

  1. 什么是 Lipschitz 连续?局部 Lipschitz 与全局 Lipschitz 的区别是什么?为什么"Lipschitz 但不可微"的函数(如 \(|x|\))在工程里随处可见?
  2. 凸函数的次梯度(subgradient)如何定义?凸函数的次微分 \(\partial f(x)\) 为什么一定是凸集?\(f(x)=|x|\)\(x=0\) 的次微分是什么?
  3. 写出标量 Signorini 条件 \(0\le \lambda \perp g(q)\ge 0\) 的含义。它表达了接触力学中的什么物理事实?为什么这个条件无法写成一个等式 \(h(\lambda,g)=0\) 而保持光滑?
  4. 常微分方程解的存在唯一性需要右端函数满足什么条件(Picard–Lindelöf 定理)?如果右端函数在某个面上不连续,经典解还存在吗?
  5. Coulomb 摩擦律"静摩擦力大小不超过 \(\mu N\)、滑动时摩擦力反向于滑动速度且大小等于 \(\mu N\)"如何用数学公式表达?当切向速度 \(v_t=0\) 时摩擦力取什么值?

这五题分别对应本章的五个支柱:Lipschitz 与可微性(→ Rademacher 定理)、凸次微分(→ Clarke 次微分的特例)、互补条件(→ 微分包含的右端)、ODE 解理论(→ Filippov 解)、Coulomb 摩擦(→ 全章贯穿的运行示例)。如果第 5 题答不上来,强烈建议先读专题 2 的前两节。


本章目标

学完本章后,你应当能够:

  1. 诊断非光滑的来源:对一个给定的接触/摩擦/碰撞问题,准确指出非光滑性来自单边约束(Signorini)、Coulomb 摩擦的粘滑切换、还是碰撞导致的速度跳变,并说清每一种非光滑在数学上对应哪种对象(集值映射、不可微点、测度)。
  2. 构造与计算 Clarke 广义梯度:从广义方向导数 \(f^\circ(x;v)\) 的定义出发,用 Gradient Formula 计算任意局部 Lipschitz 函数的 Clarke 次微分;亲手算出 \(|x|\)、Coulomb 摩擦律、接触间隙函数 \(\min_i \phi_i(q)\) 的广义梯度。
  3. 区分四种次微分概念:清楚 Fréchet(regular)次微分、limiting(Mordukhovich)次微分、Clarke 次微分、Bouligand 次微分四者的定义、包含关系与适用场景,知道"什么时候用 Clarke、什么时候必须用 Mordukhovich"。
  4. 理解微分包含与 Filippov 解:把不连续右端的微分方程 \(\dot x = f(x)\) 正则化为微分包含 \(\dot x \in F(x)\),写出 Filippov 凸化算子 \(K[f]\),理解 Filippov 解的存在性条件,并用它解释滑模(sliding mode)与 stick-slip。
  5. 建立测度微分包含(MDI)框架:理解为什么刚体碰撞的速度跳变必须把"加速度"提升为测度,写出 Moreau 扫动过程(sweeping process)的形式,把它与时步法(专题 3)的 Moreau–Jean 格式对应起来。
  6. 用非光滑视角统一互补问题:把 LCP/NCP 的互补条件理解为法锥包含、变分不等式、与不可微方程三种等价表述,理解 Fischer–Burmeister 函数为何把互补"压缩"成一个半光滑方程,从而解释半光滑 Newton 法(PATH 求解器内核)的收敛性来源。
  7. 桥接全章:说清本章每个工具如何为专题 1–6 的具体技术(LCP 解映射的 Lipschitz 性、saltation 矩阵的 B-导数推广、IPC barrier 的凸性、CI-MPC 的灵敏度)提供严格证明。

本章知识导航

在深入推导之前,先建立一张全景地图,让你知道"一共要学什么、它们之间什么关系、现在学到哪里"。

本章的核心信念是一句话:接触力学的全部数学困难,归根结底是"经典微积分要求的光滑性在接触、摩擦、碰撞这三件事上系统性失效"。于是我们需要一整套替代品——替代导数(广义梯度、次微分)、替代解概念(Filippov 解、测度解)、替代方程(变分不等式、互补问题)。本章就是这套替代品的系统课。

知识结构分为五个板块,它们的关系是"一个根源、三种数学对象、一个统一视角、一座桥":

                    非光滑的三大物理来源(§1)
              单边约束(Signorini) · Coulomb摩擦 · 碰撞冲击
       ┌────────────────────────┼────────────────────────┐
       │                        │                         │
   替代"导数"               替代"解"                  替代"方程"
       │                        │                         │
  Clarke广义梯度(§2)      微分包含+Filippov(§4)      互补的非光滑视角(§6)
  四种次微分(§3)          测度微分包含+Moreau(§5)    法锥/VI/FB函数
       │                        │                         │
       └────────────────────────┼─────────────────────────┘
                    与接触力学全章的桥接(§7)
        摩擦锥 · 时步法 · 混合系统 · 可微仿真 · CI-MPC

涵盖哪些知识点:本章包含 7 个核心板块——(1) 非光滑来源的系统分类;(2) Clarke 广义梯度与广义方向导数;(3) 四种次微分(Fréchet/limiting/Clarke/Bouligand)的层级;(4) 微分包含与 Filippov 解;(5) 测度微分包含与 Moreau 扫动过程;(6) 互补问题的非光滑视角(法锥、VI、半光滑 Newton);(7) 与接触力学全章的桥接。

知识点之间的关系

板块 依赖 与其他板块的关系
§1 非光滑来源 前置专题 1、2 全章的"动机源",后面每个数学工具都回头解释 §1 的某个现象
§2 Clarke 广义梯度 §1、凸分析 静态非光滑的"导数",是 §3 四种次微分中的一种,是 §4 Filippov 凸化的对偶
§3 四种次微分 §2 把 §2 放进更大的图景;解释"为什么有时 Clarke 不够用"
§4 微分包含 §1、§2、ODE 理论 动态非光滑(不连续右端)的"解",与 §2 通过 Clarke 梯度对偶
§5 测度微分包含 §4、测度论 §4 的进一步推广(连速度都跳变时),直接对应专题 3 时步法
§6 互补的非光滑视角 §1、§2、§3 把专题 1 的 LCP 用 §2/§3 的语言重写,解释半光滑 Newton
§7 桥接 全部 收束:每个工具落到专题 1–6 的一个具体技术

推荐阅读路径:本章有两条线索。理论主线 §1→§2→§3→§4→§5 是"从静态到动态、从导数到解"的递进,建议按顺序读。应用副线 §1→§6→§7 是"从物理到求解器"的捷径,时间紧时可先读这条建立工程直觉,再回头补 §3、§5 的严格证明。§3 与 §5 属于博士论文级深度,第一遍可只读其结论框(带 📌 标记),第二遍再啃证明。

注意:本导航只展示**结构**,不展开具体内容。每个板块的完整推导见对应小节。


前置知识桥接

本章站在三块前置知识之上,这里用几行重新激活它们的核心,让你不必翻回去也能跟上。

回顾第二批凸分析——次梯度:对凸函数 \(f:\mathbb{R}^n\to\mathbb{R}\),点 \(x\) 处的次梯度 \(\xi\) 定义为满足 \(f(y)\ge f(x)+\langle \xi, y-x\rangle\) 对所有 \(y\) 成立的向量,所有次梯度的集合 \(\partial f(x)\) 称为次微分。它的几何含义是"所有支撑超平面的斜率",必然是闭凸集。在那里我们用它刻画凸优化的最优性条件 \(0\in\partial f(x^\star)\)本章把这个工具推广到非凸的局部 Lipschitz 函数——这就是 Clarke 广义梯度(§2),而在凸情形它退化回经典次微分(这是 Clarke 理论自洽性的关键检验)。

回顾接触力学专题 1——Signorini 与 LCP:单边接触的非穿透条件是 \(0\le \lambda \perp g(q)\ge 0\),意思是间隙 \(g\ge 0\)、法向力 \(\lambda\ge 0\)、且二者不能同时为正(要么贴合 \(g=0\) 受力 \(\lambda>0\),要么分离 \(g>0\) 无力 \(\lambda=0\))。线性化后成为 LCP \(0\le z\perp Mz+q\ge 0\)。在那里我们把它当作一个组合优化问题来解(枚举活跃集)。本章揭示它的非光滑本质:互补条件等价于一个法锥包含,也等价于一个不可微方程(§6)——这才解释了为什么 LCP 难、以及现代求解器(半光滑 Newton、IPC barrier)如何绕过组合爆炸。

回顾接触力学专题 2——Coulomb 摩擦:摩擦力 \(F_t\) 在切向速度 \(v_t\ne 0\) 时大小为 \(\mu N\)、方向反于 \(v_t\);在 \(v_t=0\)(粘住)时只要求 \(\|F_t\|\le \mu N\)(可取该圆盘内任意值,由其他约束决定)。在那里我们用二阶锥几何描述它。本章指出这个"在 \(v_t=0\) 处取一整个集合"正是非光滑分析的标志性现象——它是一个集值映射,是 sign 函数的集值化,其 Clarke 广义梯度恰好是区间 \([-\mu N,+\mu N]\)(§2.5)。

回顾实分析——ODE 解理论:Picard–Lindelöf 定理保证:若 \(\dot x=f(x)\) 的右端 \(f\) 关于 \(x\) 局部 Lipschitz,则解存在且唯一。证明靠 Banach 不动点定理(Picard 迭代是压缩映射)。本章处理的是 \(f\) 不连续的情形——此时经典解可能根本不存在(轨迹"想"穿过不连续面却被两侧矛盾的速度场夹住),必须引入 Filippov 解(§4)。


如果跳过本章会怎样

不学本章的非光滑分析,你仍然可以"用"接触力学的工具,但会在两类场景里栽跟头:

场景一:仿真器"莫名其妙"地发散或穿透,你无法定位原因。 比如你用某个时步法仿真一个四足机器人落地,结果脚穿透了地面,或者求解器在某一步报告"无解"。如果不懂 §5 的测度微分包含,你会以为这是"步长太大"的数值问题,盲目调小 \(\Delta t\);但真正的原因可能是你用的格式把"加速度是测度"这件事处理错了(碰撞瞬间加速度是 Dirac,根本不是有限值),调步长治标不治本。又比如求解器报"无解",你不知道这是 Painlevé 佯谬(Coulomb 摩擦 LCP 在某些构型下确实无解),还是代码 bug——§6 告诉你如何区分。

场景二:你想写一篇接触相关的论文,却证不出任何收敛性/稳定性定理。 比如你提出一个新的接触求解器,审稿人问"你的半光滑 Newton 为什么二次收敛?"——这需要 §6 的 Fischer–Burmeister 强半光滑性 + Qi–Sun 定理。又比如你做接触感知的状态估计(Salted Kalman Filter),需要计算落地瞬间的状态雅可比跳变——这需要 §3 的 Bouligand 导数(saltation 矩阵的严格推广)。再比如你声称"我的接触力对关节扰动是 Lipschitz 连续的,所以控制器稳定"——这需要 §3 的 Mordukhovich 判据来严格刻画 LCP 解映射何时局部 Lipschitz。简言之:不学本章仍可做工程;学了本章才能做研究。


预计阅读时间

阅读方式 时间 适合谁
精读(含手推练习与证明) 14–18 h 准备做接触/优化方向研究、需要严格理论支撑的读者
速读(跳过 §3、§5 的证明细节,只读结论框与直觉) 6–8 h 已有工程经验、想建立理论框架图谱的读者
速查(只看符号表、定理速查表、桥接表、故障排查表) 40 min 遇到具体问题(求解器报错、审稿质疑)时回来查

§7.1 非光滑性从哪里来:接触、摩擦、碰撞的系统分类 ⭐⭐

动机:为什么接触力学是"非光滑的",而自由飞行的卫星不是

先做一个对比实验,建立最朴素的直觉。考虑两个力学系统。

系统 A:自由空间中的卫星。 它的动力学是 \(\dot x = f(x,u)\),其中 \(f\) 由万有引力、推进器推力等组成,这些都是状态的光滑(无穷次可微)函数。给定初始状态和控制,轨迹是一条光滑曲线,你可以对它求任意阶导数,可以放心地用 Taylor 展开做线性化(这正是 LQR、卡尔曼滤波、连续 MPC 的前提)。整个经典控制理论——可控性、可观性、Riccati 方程、Lyapunov 稳定性——都默认这种光滑性。

系统 B:在地面上行走的足式机器人。 它的脚时而离地、时而触地;触地瞬间速度可能突变(脚不能穿透地面,向下的速度被"吃掉");脚底与地面之间有摩擦,时而粘住(stick)、时而滑动(slip)。这三件事——触地/离地的切换、碰撞导致的速度跳变、粘滑切换——每一件都破坏了系统 A 所依赖的光滑性。你无法对"脚是否触地"这个布尔事件求导;碰撞瞬间的加速度是无穷大(一个冲量在零时间内改变了动量);摩擦力在粘滑临界点不可微。

这个对比给出本章存在的根本理由:机器人一旦与环境发生接触,经典微积分的工具箱就系统性地失效了。 我们不能再假装一切都是光滑的然后"小心一点"——非光滑不是需要规避的数值麻烦,而是接触物理的本质属性。我们需要一套新的数学语言,它能精确地谈论"在不可微点的导数"、"右端不连续的微分方程的解"、"加速度是测度的运动方程"。这套语言就是**非光滑分析(nonsmooth analysis)**。

本质洞察:接触力学的非光滑性不是建模的"近似缺陷",而是物理实在的忠实反映。真实世界中,刚体确实不能互相穿透(这是一个硬的单边约束,没有光滑过渡),干摩擦确实在静止时能取一整个力的范围(这是一个集值关系),刚性碰撞确实在极短时间内改变动量(这是一个冲量)。如果你用光滑模型(如弹簧-阻尼接触、正则化摩擦)去逼近,你引入的反而是近似误差;非光滑模型才是"零误差"的理想极限。非光滑分析的任务,就是让这个理想极限在数学上严格可操作。

在展开三大来源之前,必须先厘清一件容易混淆的事:"非光滑"在本章有两个层次的含义,它们对应两套不同的数学工具,初学者常把它们搅在一起。

  • 层次一:静态非光滑(函数不可微)。 某个标量函数(如势能、间隙函数、摩擦力关于速度的关系)在某些点不可微,但函数本身是良定义的、连续的(或至少 Lipschitz 的)。处理工具是**广义梯度/次微分**(§2、§3)——给不可微点配一个"导数集合"。
  • 层次二:动态非光滑(方程的解不光滑)。 微分方程的右端不连续,或者解本身(如速度)会跳变。此时"解"是什么都需要重新定义。处理工具是**微分包含 + Filippov 解**(§4)和**测度微分包含**(§5)。

二者通过 Clarke 梯度联系起来(§4 会看到 Filippov 凸化与 Clarke 梯度的对偶),但在学习时务必分清:§2、§3 是给"函数"配导数,§4、§5 是给"方程"配解。下面三大来源的分类,会同时标注每种来源触发的是哪个层次。

如果不这样做会怎样:四种"假装光滑"的失败

在系统建立非光滑工具之前,先看看工程上常见的四种"假装光滑"的做法,以及它们各自在什么地方失败。这不是要否定这些做法(它们在合适场景下都有用),而是要让你看清"光滑化"付出的代价,从而理解为什么我们需要直面非光滑。

做法一:弹簧-阻尼接触(penalty / compliant contact)。 把"不能穿透"这个硬约束换成一个很硬的弹簧:一旦穿透深度 \(d>0\),就施加恢复力 \(\lambda = k_n d + b_n \dot d\)\(k_n\) 很大)。这样一切都光滑了。代价:(1) \(k_n\) 必须取得极大才能让穿透可忽略,导致动力学是"刚性(stiff)"的,显式积分器需要极小步长(数值刚性问题);(2) 物理上引入了不存在的弹性,刚性接触的特征(如完全非弹性碰撞后立即静止)无法精确再现;(3) \(k_n\)\(b_n\) 成了需要手调的"魔法参数",缺乏物理依据。

做法二:正则化摩擦(regularized / smoothed friction)。 把 Coulomb 摩擦在 \(v_t=0\) 处的集值跳变换成一条光滑曲线,例如 \(F_t = -\mu N \tanh(v_t/\varepsilon)\)代价:(1) "静摩擦"消失了——在 \(v_t=0\) 附近,物体总会缓慢蠕动(drift),无法真正静止,这在抓取、装配等需要"夹住不动"的任务里是致命的;(2) \(\varepsilon\) 越小越接近真实但动力学越刚性,又回到做法一的两难。

做法三:事件驱动 + 重置(event-driven hybrid)。 显式检测每个接触事件(触地、离地、粘滑切换),在事件处暂停积分、施加碰撞律(重置映射),再继续光滑积分。代价:(1) 当接触事件密集发生时(如物体落地后的多次微小弹跳,或多点接触同时切换),事件检测会"卡死"——Zeno 现象(无穷多事件在有限时间内发生);(2) 多个接触点的事件组合数爆炸,难以枚举。这正是专题 5(混合系统)单独处理、而专题 3(时步法)选择"不显式检测事件"的原因。

做法四:直接对不连续函数求导(无视非光滑)。 比如在做轨迹优化时,目标/约束里含 \(\min\)\(\max\)\(|\cdot|\)\(\text{sign}\),却直接调用自动微分(autodiff)求"梯度"。代价:autodiff 在不可微点会返回一个**任意的**子梯度(取决于浮点比较的方向),既不是真正的梯度(不存在),优化器据此前进可能在不可微点附近振荡、停滞,或收敛到伪稳定点。§3 会精确解释这里 autodiff 实际返回的是 \(\partial_B\)(Bouligand 子微分)的某一个元素,以及为什么这对半光滑 Newton 恰好够用、对一般梯度下降却危险。

本质洞察:上面四种做法的共同逻辑是"把非光滑藏起来"——藏进大刚度、藏进正则化参数、藏进事件检测、藏进 autodiff 的默认行为。但非光滑性是守恒的:你在一个地方抹平它,它就在另一个地方(数值刚性、物理失真、Zeno、伪梯度)冒出来。非光滑分析的态度截然相反:不藏,而是正面建模。给不可微点一个诚实的"导数集合",给不连续方程一个诚实的"解概念",给冲击一个诚实的"测度"。代价是数学更难,回报是模型更真、求解更稳、且可证明。

历史:非光滑分析如何成为一门学科

非光滑分析作为独立学科的成形有几条并行的线索,值得简要梳理,因为它解释了"为什么有这么多看起来重复的次微分概念"。

凸分析的奠基(1960s–1970s)。 Rockafellar 的 Convex Analysis(1970)系统化了凸函数的次微分理论。但凸性是很强的假设——接触力学里大量函数(如 \(-|x|\)\(\min_i \phi_i\))不是凸的。

Clarke 的突破(1973–1975)。 Frank Clarke 在其博士论文及 1975 年的论文中,定义了**对任意局部 Lipschitz 函数**(不要求凸、不要求可微)都适用的广义方向导数和广义梯度。他的天才之处是:通过取 \(\limsup\) 构造一个**自动凸**的广义方向导数 \(f^\circ(x;v)\),于是可以借用凸分析的全部机器。这是非光滑分析从"凸"走向"一般 Lipschitz"的关键一步。Clarke 1983 年的专著 Optimization and Nonsmooth Analysis(后被 SIAM 收入经典丛书)成为这一领域的开山教材。

Mordukhovich 的非凸路线(mid-1970s 起)。 几乎同时,Boris Mordukhovich 走了一条不同的路:他不要求次微分是凸的,而是通过法锥的极限构造(limiting/basic subdifferential)得到一个可能非凸、但信息更精细的对象。代价是失去了凸性带来的便利,回报是更紧的最优性条件和灵敏度刻画。Clarke 次微分恰好是 Mordukhovich 次微分的凸包——这个关系是 §3 的核心。

Filippov 的微分方程路线(1960 起)。 与上面的"静态"路线并行,A. F. Filippov 从 1960 年起研究右端不连续的微分方程,1988 年的专著 Differential Equations with Discontinuous Righthand Sides 成为这一方向的根。这条线直接服务于控制工程(滑模控制)和接触力学(stick-slip)。

Moreau 的凸分析-力学融合(1960s–1970s)。 Jean-Jacques Moreau 把凸分析直接用于力学,1971 年提出扫动过程(sweeping process),开创了用测度微分包含描述含碰撞的刚体动力学的传统。这条线是专题 3 时步法的直接源头。

Rockafellar–Wets 的大综合(1998)。 最后,Rockafellar 和 Wets 的 Variational Analysis(Springer Grundlehren 317,近 1000 页)把上述所有线索统一进"变分分析(variational analysis)"这一总框架,成为该领域的百科全书。

理解了这段历史,你就明白为什么本章有四种次微分(§3):它们不是冗余,而是不同研究者为不同目的发展的工具,各有其最优适用域。下面我们正式展开三大非光滑来源。

理论:三大非光滑来源的精确刻画

我们用一个统一的记号系统来刻画三大来源。设机器人构型为 \(q\in\mathbb{R}^{n_q}\)(关节角等广义坐标),广义速度为 \(v=\dot q\in\mathbb{R}^{n_v}\),动力学由 Euler–Lagrange 方程给出:

\[M(q)\,\dot v + C(q,v)\,v + g(q) = \tau + J(q)^\top \lambda,\]

其中 \(M(q)\succ 0\) 是质量矩阵,\(C\) 是科氏/离心项,\(g\) 是重力项,\(\tau\) 是关节力矩,\(J(q)\) 是接触雅可比,\(\lambda\) 是接触力(含法向与切向分量)。非光滑性全部藏在 \(\lambda\)\((q,v)\) 的关系里——也就是接触力如何依赖构型和速度。下面逐一拆解。

来源一:单边约束(Signorini 条件)——集值的法向力

接触的第一个非光滑来源是**非穿透的单边性**。设接触间隙函数为 \(\phi(q)\)(两物体最近点的有符号距离,\(\phi>0\) 分离、\(\phi=0\) 接触、\(\phi<0\) 穿透,物理上禁止)。法向接触力 \(\lambda_n\ge 0\)(只能推、不能拉)。物理事实是:

\[\boxed{0 \le \lambda_n \;\perp\; \phi(q) \ge 0,}\]

读作"\(\lambda_n\ge 0\)\(\phi(q)\ge 0\),且 \(\lambda_n\cdot\phi(q)=0\)"。这就是 Signorini 条件(专题 1 已引入,这里从非光滑视角重看)。它说:分离时无力(\(\phi>0\Rightarrow\lambda_n=0\)),受力时贴合(\(\lambda_n>0\Rightarrow\phi=0\))。

非光滑在哪里? 把法向力看作间隙的函数 \(\lambda_n=\Lambda(\phi)\)。Signorini 条件等价于这个"函数"是:

\[\Lambda(\phi) = \begin{cases} 0, & \phi>0 \\ [0,+\infty), & \phi=0 \\ \text{无定义(禁止)}, & \phi<0. \end{cases}\]

注意 \(\phi=0\)\(\Lambda\) 取一整个区间 \([0,+\infty)\)——这不是普通函数,而是一个**集值映射(set-valued map)**。这是层次一(静态)非光滑的典型:关系本身良定义(它精确描述了物理),但无法写成单值光滑函数。

更深刻的刻画用**法锥(normal cone)**。设可行集 \(K=\{q:\phi(q)\ge 0\}\)。回顾凸分析:闭凸集 \(C\) 在点 \(x\) 的法锥是 \(N_C(x)=\{v:\langle v,y-x\rangle\le 0,\ \forall y\in C\}\)(所有"向外"的方向)。可以证明,Signorini 条件等价于法向力属于可行集的法锥:

\[-\lambda_n \nabla\phi(q) \in N_K(q),\quad\text{等价地}\quad \lambda_n \in N_{\mathbb{R}_+}(\phi(q)),\]

其中 \(N_{\mathbb{R}_+}(\phi)\) 是非负实轴 \(\mathbb{R}_+=[0,\infty)\) 在点 \(\phi\) 的法锥:

\[N_{\mathbb{R}_+}(\phi) = \begin{cases} \{0\}, & \phi>0 \\ (-\infty,0], & \phi=0 \\ \varnothing, & \phi<0. \end{cases}\]

阶段小结:到这里我们完成了第一个来源的刻画——单边约束的非光滑性体现为法向力是间隙的**集值函数**,精确语言是"力属于可行集的法锥"。接下来要做的是看第二个来源(摩擦),它的非光滑性更复杂,因为它同时涉及力的大小约束和方向耦合。

这个"力 ∈ 法锥"的表述极其重要,它是后面一切的模板:接触力学里所有的力,都不是构型的光滑函数,而是属于某个锥。法向力属于 \(\mathbb{R}_+\) 的法锥,摩擦力属于摩擦锥的法锥(下面),这个统一视角会在 §6 把所有接触条件压缩成一个变分不等式。

我们用一个对比表总结 Signorini 条件的"不是 X 而是 Y":

直觉(错误) 实际(正确) 为什么
法向力是穿透深度的函数 \(\lambda_n=k\cdot\max(0,-\phi)\) 法向力是间隙的**集值映射**,\(\phi=0\) 处取 \([0,\infty)\) 刚体不允许穿透,没有"深度"可言;力由约束(其他物体、运动)决定,而非由形变决定
Signorini 是一条曲线 Signorini 是一个**互补条件**(两条射线拼成的 L 形集合) \((\lambda_n,\phi)\) 的可行点集是 \(\{\lambda_n=0,\phi\ge0\}\cup\{\lambda_n\ge0,\phi=0\}\),是非光滑的 L 形

来源二:Coulomb 摩擦——集值的切向力与粘滑切换

第二个来源是**干摩擦(dry / Coulomb friction)**,它是接触力学里数学上最不友好的部分(专题 2 已专门讨论其几何,这里聚焦其非光滑结构)。设切向速度为 \(v_t\in\mathbb{R}^2\)(接触平面内),切向摩擦力为 \(\lambda_t\in\mathbb{R}^2\)。Coulomb 律是:

\[\boxed{\begin{cases} \|\lambda_t\| \le \mu\lambda_n, & \text{(摩擦力被摩擦锥约束)}\\[1mm] v_t \ne 0 \;\Rightarrow\; \lambda_t = -\mu\lambda_n \dfrac{v_t}{\|v_t\|}, & \text{(滑动时取最大、反向)}\\[1mm] v_t = 0 \;\Rightarrow\; \|\lambda_t\| \le \mu\lambda_n, & \text{(粘住时可取锥内任意值)}\end{cases}}\]

其中 \(\mu>0\) 是摩擦系数。非光滑在哪里? 把摩擦力看作切向速度的函数 \(\lambda_t = \Phi(v_t)\)(固定 \(\lambda_n\)):

\[\Phi(v_t) = \begin{cases} -\mu\lambda_n \dfrac{v_t}{\|v_t\|}, & v_t\ne 0 \\[2mm] \{\text{圆盘 } \|\lambda_t\|\le\mu\lambda_n\}, & v_t = 0. \end{cases}\]

\(v_t=0\) 处,\(\Phi\) 取一整个圆盘——又是集值映射。这正是 §2.5 的运行示例:一维情形下,\(\Phi(v_t)=-\mu\lambda_n\,\text{Sign}(v_t)\),其中 \(\text{Sign}\) 是集值符号函数

\[\text{Sign}(s) = \begin{cases} +1, & s>0 \\ [-1,+1], & s=0 \\ -1, & s<0, \end{cases}\]

\(-\mu\lambda_n\,\text{Sign}(v_t)\) 恰好是 Clarke 广义梯度 \(\partial(\mu\lambda_n|v_t|)\)(§2 会严格证明)。粘滑切换(stick-slip)的数学根源就是这个集值在 \(v_t=0\) 处的"开口":当物体即将从静止启动,摩擦力可以在区间 \([-\mu\lambda_n,+\mu\lambda_n]\) 内"自由调整"以维持静止,直到外力超过 \(\mu\lambda_n\) 才滑动。

本质洞察:Coulomb 摩擦的非光滑性比 Signorini 更"恶",因为它同时违反三个良态条件:(1) 它**非光滑**(\(v_t=0\) 处集值);(2) 它**非单调**(在 \(v_t>0\) 区域 \(\lambda_t\) 是常数 \(-\mu\lambda_n\),速度增大力不增大,违反"力随速度单调");(3) 当 \(\lambda_n\) 本身也是未知量时(法向与切向耦合),整个问题**非凸**。这三条叠加导致 Painlevé 佯谬——存在无解或多解的构型(专题 2 详述)。本章 §6 会从非光滑视角解释:正是 Coulomb 摩擦让接触 LCP 失去 P-matrix 性质,从而失去解的存在唯一性保证。

把摩擦力也用法锥语言写出来:定义摩擦锥 \(\mathcal{K}_\mu=\{\lambda:\|\lambda_t\|\le\mu\lambda_n\}\)(专题 2 的二阶锥)。Coulomb 律的"最大耗散原理(maximal dissipation)"表述是:摩擦力使切向滑动的功率耗散最大,等价于

\[\lambda_t \in \arg\max_{\|\lambda_t'\|\le\mu\lambda_n} \big(-\langle \lambda_t', v_t\rangle\big) \quad\Longleftrightarrow\quad -v_t \in N_{\{\|\cdot\|\le\mu\lambda_n\}}(\lambda_t),\]

即切向速度的反向属于"摩擦力可行圆盘"在 \(\lambda_t\) 处的法锥。又是"\(\cdot \in\) 法锥"的模板!这进一步印证了上面的洞察:接触力学的所有力都是法锥包含。

来源三:碰撞冲击——速度的跳变与测度

前两个来源是层次一(静态,函数集值),第三个来源是层次二(动态,解跳变),数学上最深。考虑一个刚性碰撞:脚以速度 \(v^-<0\)(向下)撞向刚性地面。碰撞后,脚不能继续向下(非穿透),所以法向速度突变。最简单的完全非弹性碰撞(restitution \(e=0\))令法向速度瞬间归零:\(v^+=0\)。于是速度 \(v(t)\) 在碰撞时刻 \(t^\star\) 不连续(从 \(v^-\) 跳到 \(v^+\))。

非光滑在哪里? 加速度 \(\dot v\) 是速度的导数。但速度在 \(t^\star\) 跳变,跳变函数的导数(在分布意义下)是一个 Dirac 测度\(\dot v = (v^+-v^-)\delta_{t^\star} + (\text{光滑部分})\)。换言之,碰撞瞬间的"加速度"是无穷大、持续零时间、但积分(动量改变量)有限——这正是**冲量(impulse)**。

经典 Euler–Lagrange 方程 \(M\dot v = \ldots + J^\top\lambda\) 此时失效,因为左边 \(M\dot v\) 含 Dirac 测度,右边 \(\lambda\) 也必须是测度(冲量 \(J^\top\Lambda\delta_{t^\star}\))。我们必须把方程理解为**测度的等式**,即对任意时间区间积分后成立:

\[M(q)\,dv + \big(C v + g - \tau\big)\,dt = J(q)^\top\,d\Lambda,\]

其中 \(dv\) 是速度的微分测度(含 Dirac),\(d\Lambda\) 是接触冲量测度。这就是**测度微分包含(measure differential inclusion, MDI)**的雏形,§5 会完整展开,并连接到 Moreau 扫动过程与专题 3 的时步法。

本质洞察:碰撞的非光滑性迫使我们重新定义"运动方程"本身。在自由飞行(系统 A)里,\(\dot v\) 是有限值的函数,方程是逐点(pointwise)成立的等式。在含碰撞的接触里,\(\dot v\) 是测度(含 Dirac),方程只能在测度/积分意义下成立。这不是数学家的吹毛求疵——它直接决定了仿真器的正确写法:正确的时步法离散的是测度(冲量),而不是加速度。这就是为什么 Moreau–Jean 格式以"速度-冲量"为基本变量,而不是"位置-加速度"——专题 3 的核心设计选择,根源在此。

我们用一张穷举式的分类表(认知工具 E:系统性分类)总结三大来源,让你获得"诊断非光滑"的思考框架,而非记忆清单:

来源 物理现象 数学对象 非光滑层次 标志公式 处理工具(本章)
单边约束 非穿透、只推不拉 集值映射 / 法锥 层次一(静态) \(0\le\lambda_n\perp\phi(q)\ge0\) Clarke 梯度(§2)、法锥与 VI(§6)
Coulomb 摩擦 粘滑切换、最大耗散 集值映射 / 集值符号 层次一(静态) \(\lambda_t=-\mu\lambda_n\,\text{Sign}(v_t)\) Clarke 梯度(§2.5)、Mordukhovich(§3)
碰撞冲击 速度跳变、冲量 测度 / Dirac 层次二(动态) \(M\,dv=\ldots+J^\top d\Lambda\) 测度微分包含(§5)、Moreau 扫动(§5)
(派生)粘滑动态 滑模、stick-slip 轨迹 不连续右端 ODE 层次二(动态) \(\dot x=f(x)\)\(f\) 在切换面不连续 微分包含、Filippov 解(§4)

注意最后一行:当 Coulomb 摩擦(层次一)嵌入到动力学中,它会导致右端不连续的微分方程,从而触发层次二——这就是 §4 微分包含的物理来源。三大来源不是孤立的,它们通过动力学耦合,最终都汇入"非光滑动力系统"这个统一对象。

⚠️ 常见陷阱

💡 概念误区:把"非光滑"等同于"不连续" 新手想法:"非光滑分析就是研究不连续函数的,因为接触力会突然出现/消失。" 实际上:非光滑分析的核心对象是 Lipschitz 连续但不可微**的函数(如 \(|x|\)\(\min\)\(\max\)),它们**连续但不可导。真正的不连续(如阶跃函数、不连续右端)是更进一步的层次(§4 的微分包含、§5 的测度),且通常通过"把不连续函数的导数理解为测度"或"把不连续右端凸化为微分包含"来处理。混淆这两者会导致用错工具:对 Lipschitz 函数用 Clarke 梯度(§2),对不连续右端用 Filippov 凸化(§4)。 为什么重要:选错工具,证明就垮。比如对 \(|x|\) 用"测度导数"是杀鸡用牛刀且会出错(它有良定义的 Clarke 梯度 \([-1,1]\));对不连续 sign 函数的 ODE 用 Clarke 梯度则不够(需要 Filippov 凸化得到滑模解)。

💡 概念误区:认为光滑化(penalty/正则化)是"无害的近似" 新手想法:"反正参数取得足够极端(\(k_n\) 足够大、\(\varepsilon\) 足够小),光滑模型就任意接近真实,没有本质区别。" 实际上:光滑化引入的不是"小误差",而是**改变了问题的数学类型**。硬约束 Signorini 是互补问题(组合结构),penalty 把它变成光滑 ODE(连续结构)——后者的解在极限 \(k_n\to\infty\) 下确实收敛到前者,但收敛是奇异的(singular perturbation),伴随刚性、边界层、数值病态。物理上,正则化摩擦永远无法表达真正的静摩擦(恒有蠕动)。 为什么重要:在抓取、装配、精密操作中,"能否真正夹住不动"是任务成败的关键,正则化摩擦在此必然失败。理解这一点,你才会在该用硬约束时坚持用硬约束,而不是图省事光滑化。

🧠 思维陷阱:以为"事件驱动 + 重置"总能处理接触 新手想法:"只要我足够仔细地检测每个接触事件并施加碰撞律,就能精确仿真任何接触系统。" 实际上:事件驱动法在**接触事件密集**时崩溃——Zeno 现象(有限时间内无穷多次碰撞,如小球落地后越弹越快地无穷次弹跳)让事件检测永远无法推进;多接触点的事件组合数随接触对数指数增长。这正是现代时步法(专题 3)故意不显式检测事件、而是用测度微分包含统一处理整个时间步内所有接触的根本原因。 正确思维:面对接触系统,先问"事件是稀疏还是密集?接触点是单个还是多个?"稀疏单点用事件驱动(专题 5 的混合系统);密集多点用时步法(专题 3)。这个判断直接决定仿真架构。

练习

练习 7.1.1(诊断题,在草稿纸上完成) 考虑一个二维方块静止地放在水平桌面上,你用一个缓慢增大的水平力 \(F(t)=ct\)\(c\) 为小常数)推它。请分析整个过程中出现了哪些非光滑来源,分别属于层次一还是层次二,并指出方块从静止到滑动的临界时刻 \(t^\star\) 满足什么条件。(提示:先粘住,摩擦力在 \([-\mu N, \mu N]\) 内调整以平衡 \(F\);当 \(F\) 超过 \(\mu N\) 时开始滑动。临界处涉及集值符号函数的"开口"。)

练习 7.1.2(对比题) 对同一个"小球竖直落到刚性地面并反弹"的问题,分别写出:(a) 用 penalty 接触(弹簧-阻尼)建模时的运动方程(光滑 ODE);(b) 用硬约束 + 碰撞律(restitution \(e\))建模时的运动方程(含测度)。说明在 \(e=0\)(完全非弹性)情形下,两种模型的解在定性上有何不同(提示:penalty 模型小球会有阻尼振荡,硬约束模型小球碰后立即静止贴地)。讨论:随着弹簧刚度 \(k_n\to\infty\)、阻尼调到临界,penalty 解是否收敛到硬约束解?收敛是否"均匀"?

练习 7.1.3(开放思考题) 本节说"非光滑性是守恒的,你在一处抹平它,它在另一处冒出来"。请针对正则化摩擦 \(F_t=-\mu N\tanh(v_t/\varepsilon)\),具体指出:当 \(\varepsilon\to 0\) 时,非光滑性以什么形式"冒出来"?(提示:考虑这个光滑 ODE 的刚性——右端关于 \(v_t\) 的 Lipschitz 常数随 \(\varepsilon\to0\) 如何变化?这对显式积分器的稳定步长意味着什么?)这个练习帮你理解"正则化把非光滑转化为数值刚性"这一守恒律。


§7.2 Clarke 广义梯度:给不可微点配一个"导数集合" ⭐⭐⭐

动机:梯度下降走到尖点,下一步往哪走?

上一节我们看到,接触力学里到处是 Lipschitz 但不可微的函数:\(|x|\)\(\min_i\phi_i(q)\)\(\max\)、集值符号函数背后的 \(|v_t|\)。现在面对一个具体的、迫在眉睫的问题。

假设你在做一个接触相关的优化(比如轨迹优化的内层),目标函数含一项 \(f(x)=|x|\)(一维抽象,代表"某个量的绝对值",如切向滑动距离的代价、或 \(L_1\) 正则)。你想用梯度下降。在 \(x>0\)\(f'(x)=+1\),在 \(x<0\)\(f'(x)=-1\)。一切顺利,直到你走到 \(x=0\)——这是一个尖点(kink),\(f\) 在此不可微。下一步往哪走? 经典导数在这里根本不存在;硬要计算 \(\lim_{h\to0}\frac{|0+h|-|0|}{h}\),从右边得 \(+1\),从左边得 \(-1\),极限不存在。

朴素的应对是"随便选一个"——比如规定 \(f'(0)=0\)(很多自动微分库的默认)。但这会出问题:如果在 \(x=0\) 处真正的最优在别处(比如目标还有别的项把最优推到 \(x>0\)),那么 \(f'(0)=0\) 会让优化器误以为"已经到了驻点"而停下。我们需要的不是"随便选一个数",而是一个**诚实的、包含所有合理斜率的集合**——在 \(x=0\) 处,所有介于 \(-1\)\(+1\) 之间的斜率都是"合理的"(它们是左右导数的所有凸组合)。这个集合 \([-1,+1]\) 就是我们想要的"广义梯度"。

把这个直觉一般化:对一个局部 Lipschitz 函数 \(f\),在不可微点 \(x\),我们希望定义一个集合 \(\partial f(x)\subset\mathbb{R}^n\),它满足:(i) 在 \(f\) 可微的点退化为单点集 \(\{\nabla f(x)\}\)(与经典导数兼容);(ii) 在凸函数情形退化为经典次微分(与凸分析兼容);(iii) 它是凸紧集(便于借用凸分析的机器);(iv) 最优性条件 \(0\in\partial f(x^\star)\) 成立(能用于优化);(v) 有完整的运算法则(和、复合、链式)。Clarke 1975 年构造的广义梯度恰好满足全部五条。这一节就是把这个构造讲透。

本质洞察:广义梯度的哲学是"用集合换确定性"。在光滑世界,每点有唯一的导数(一个向量),它精确告诉你函数局部如何变化。在非光滑世界,不可微点的"变化率"本身是多值的(依赖方向),单个向量无法表达。Clarke 的解决方案不是"挑一个向量假装是导数",而是"诚实地承认有一整个集合的合理斜率,并把这个集合作为一等公民来运算"。这种"用集值对象替代单值对象"的思想,是整个非光滑分析(乃至变分分析)的灵魂——你会在 §3(更多次微分都是集合)、§4(微分包含的右端是集合)、§6(法锥是集合)反复看到它。

如果不这样做会怎样:三种"伪导数"的失败

在给出 Clarke 的正式定义前,看看三种看似合理但失败的"伪导数"定义,理解 Clarke 定义中每个元素的必要性。

伪导数一:只用单侧导数。 定义 \(f'(0)\) 为右导数 \(f'_+(0)=\lim_{h\downarrow0}\frac{f(h)-f(0)}{h}\)。对 \(f=|x|\) 给出 \(+1\)失败:不对称(凭什么用右不用左?),且对很多函数右导数也不存在(如 \(f(x)=x\sin(1/x)\)\(0\) 处)。它丢掉了"\(-1\) 也是合理斜率"这一信息。

伪导数二:用所有方向导数的集合。 定义 \(\partial f(x)=\{f'(x;v):v\in\mathbb{R}^n,\|v\|=1\}\),其中 \(f'(x;v)=\lim_{h\downarrow0}\frac{f(x+hv)-f(x)}{h}\) 是经典方向导数。失败:(a) 方向导数本身可能不存在(极限不存在);(b) 即使存在,这个集合一般不是凸的(如 \(f=-|x|\),方向导数集是 \(\{-1,-1\}\) 退化,但对二维的 \(-\|x\|\) 会得到非凸集),失去凸分析的便利;(c) 它对 \(f\)\(x\) 附近的行为不稳定(不能保证运算法则)。

伪导数三:极限梯度集(不取凸包)。 定义 \(\partial_B f(x)=\{\lim\nabla f(x_k):x_k\to x,\ \nabla f(x_k)\text{ 存在}\}\)(这其实就是 §3 的 Bouligand 子微分)。对 \(f=|x|\) 给出 \(\{-1,+1\}\)(两个孤立点)。部分成功但仍有缺陷:它**不是凸集**(\(\{-1,+1\}\) 中间的 \(0\) 不在其中)。这导致两个问题:(a) 最优性条件 \(0\in\partial_B f\)\(x=0\) 处不成立(尽管 \(0\)\(|x|\) 的最优点!),漏判最优;(b) 缺乏完整的链式法则。

Clarke 的修正:取伪导数三的**凸包**!定义 \(\partial f(x)=\text{conv}\,\partial_B f(x)=\text{conv}\{\lim\nabla f(x_k)\}\)。对 \(|x|\) 给出 \(\text{conv}\{-1,+1\}=[-1,+1]\),凸集,包含 \(0\),最优性条件成立。这就是 Clarke Gradient Formula(§下面 T2),也是计算 Clarke 梯度最实用的公式。但 Clarke 的原始定义走的是另一条路(通过广义方向导数),两条路殊途同归——理解这个"殊途同归"正是掌握本节的关键。

区分 Bouligand 子微分 \(\partial_B f\) 与 Clarke 次微分 \(\partial f\)\(\partial f=\text{conv}\,\partial_B f\)。前者是离散点集("选对分支后的梯度"),后者是其凸包(填满中间)。半光滑 Newton 用 \(\partial_B\)(§6),优化的最优性条件用 \(\partial\)(凸性必要)——这个区别在 §3 会反复出现,是博士级理解的分水岭。

历史:Clarke 1975 的天才一招

Frank Clarke 在 1973 年的博士论文(导师是 Rockafellar)和 1975 年的论文 "Generalized gradients and applications"(Trans. AMS)中给出广义梯度。他面临的难题是:非凸函数没有现成的次微分理论,而 Lipschitz 函数(接触力学的主角)通常非凸。他的天才一招是:不直接定义梯度集合,而是先定义一个"广义方向导数" \(f^\circ(x;v)\),并通过取 \(\limsup\) 让它自动成为凸函数(关于 \(v\)),然后把 \(\partial f(x)\) 定义为这个凸函数的(凸分析意义的)次微分。 这样一来,凸分析的全部机器(支撑函数、对偶、运算法则)都能直接搬过来。

下面我们就沿着 Clarke 的原路走一遍,再证明它等价于上面的 Gradient Formula。

理论:Clarke 广义方向导数与广义梯度

前提:本节始终假设 \(f:\mathbb{R}^n\to\mathbb{R}\)\(x\) 的邻域内**局部 Lipschitz**,即存在邻域 \(U\ni x\) 和常数 \(L>0\) 使 \(|f(y)-f(z)|\le L\|y-z\|\) 对所有 \(y,z\in U\) 成立。这是整套理论的基本工作假设,原因有二:(i) Lipschitz 是接触力学函数的普遍性质(间隙、摩擦势、\(\min/\max\) 都 Lipschitz);(ii) 由 Rademacher 定理(T1),Lipschitz 函数几乎处处可微,这给了 Gradient Formula 立足点。

定义 7.2.1(Clarke 广义方向导数) \(f\)\(x\) 沿方向 \(v\) 的 Clarke 广义方向导数为

\[\boxed{f^\circ(x;v) := \limsup_{\substack{y\to x \\ t\downarrow 0}} \frac{f(y+tv)-f(y)}{t}.}\]

逐字拆解这个定义,每个元素都有用意:

  • \(\limsup\)(上极限)而非 \(\lim\):因为 \(f\) 不可微,普通极限可能不存在。\(\limsup\) 总是存在(可能为 \(+\infty\),但 Lipschitz 保证它有限,\(\le L\|v\|\))。取上极限相当于"取最悲观(最大)的变化率"。
  • \(y\to x\) 而非固定 \(y=x\):这是与经典方向导数 \(f'(x;v)=\lim_{t\downarrow0}\frac{f(x+tv)-f(x)}{t}\) 的关键区别!经典方向导数只看从 \(x\) 出发的差商;Clarke 让基点 \(y\) 也在 \(x\) 附近游走。为什么? 正是这个"基点游走"让 \(f^\circ(x;\cdot)\) 自动成为凸函数(下面定理),并让它"稳定"(对 \(f\)\(x\) 附近的扰动不敏感),从而支持运算法则。这是 Clarke 定义的精髓。
  • \(t\downarrow 0\)(单侧,从正向趋于 0):方向导数天然是单侧的(沿 \(v\) 正方向)。

定理 7.2.2(\(f^\circ\) 的基本性质)\(f\)\(x\) 局部 Lipschitz(常数 \(L\))。则: 1. \(v\mapsto f^\circ(x;v)\) 是**有限的、正齐次的、次可加的**,从而是**凸函数**;且 \(|f^\circ(x;v)|\le L\|v\|\)。 2. \(f^\circ(x;-v) = (-f)^\circ(x;v)\)。 3. \((x,v)\mapsto f^\circ(x;v)\) 是上半连续的。

证明(第 1 条,凸性是关键,完整给出)。

有限性:由 Lipschitz,\(\left|\frac{f(y+tv)-f(y)}{t}\right|\le\frac{L\|tv\|}{t}=L\|v\|\),故差商有界,\(\limsup\) 有限且 \(|f^\circ(x;v)|\le L\|v\|\)

正齐次性\(f^\circ(x;\alpha v)=\alpha f^\circ(x;v)\)\(\alpha>0\)):作变量替换 \(s=\alpha t\)

\[f^\circ(x;\alpha v)=\limsup_{y\to x,t\downarrow0}\frac{f(y+t\alpha v)-f(y)}{t}=\limsup_{y\to x,s\downarrow0}\frac{f(y+sv)-f(y)}{s/\alpha}=\alpha\,f^\circ(x;v).\]

次可加性\(f^\circ(x;v+w)\le f^\circ(x;v)+f^\circ(x;w)\),这是凸性的核心):

\[\begin{aligned} \frac{f(y+t(v+w))-f(y)}{t} &= \frac{f(y+tv+tw)-f(y+tw)}{t} + \frac{f(y+tw)-f(y)}{t}. \end{aligned}\]

第一项中令 \(y':=y+tw\),当 \(y\to x,t\downarrow0\)\(y'\to x,t\downarrow0\),故其 \(\limsup\le f^\circ(x;v)\);第二项 \(\limsup\le f^\circ(x;w)\)。由于 \(\limsup(A+B)\le\limsup A+\limsup B\),得 \(f^\circ(x;v+w)\le f^\circ(x;v)+f^\circ(x;w)\)注意:这一步正是"基点游走 \(y\to x\)"发挥作用的地方——我们把基点从 \(y\) 平移到 \(y'=y+tw\) 仍落在 \(x\) 附近,这只有在 \(y\) 可游走时才合法。若用固定基点的经典方向导数,这一步行不通,次可加性(凸性)就得不到。

正齐次 + 次可加 \(\Rightarrow\) 凸(标准结论:\(f^\circ(x;\lambda v+(1-\lambda)w)\le\lambda f^\circ(x;v)+(1-\lambda)f^\circ(x;w)\) 由两性质直接推出)。\(\blacksquare\)

阶段小结:到这里我们完成了 Clarke 定义的第一步——构造了一个关于方向 \(v\) 自动凸的广义方向导数 \(f^\circ(x;v)\),并看清了"基点游走 \(y\to x\)"是凸性的来源。接下来要做的是:利用这个凸函数,借助凸分析的"支撑函数 ↔ 凸集"对偶,把它翻译成一个凸集——那就是 Clarke 广义梯度。

定义 7.2.3(Clarke 广义梯度 / 次微分) 既然 \(f^\circ(x;\cdot)\) 是凸的正齐次函数,由凸分析它必是某个唯一闭凸集的**支撑函数**。这个集合就是 Clarke 广义梯度:

\[\boxed{\partial f(x) := \{\xi\in\mathbb{R}^n : f^\circ(x;v)\ge\langle\xi,v\rangle\ \text{对所有}\ v\in\mathbb{R}^n\}.}\]

等价地,\(f^\circ(x;v)=\max_{\xi\in\partial f(x)}\langle\xi,v\rangle\)(支撑函数关系)。直觉:\(\partial f(x)\) 收集了所有"斜率向量" \(\xi\),使得沿任意方向 \(v\) 的广义变化率 \(f^\circ(x;v)\) 都不小于 \(\xi\) 在该方向的投影 \(\langle\xi,v\rangle\)

定理 7.2.4(\(\partial f\) 的基本性质)\(f\)\(x\) 局部 Lipschitz(常数 \(L\))。则: 1. \(\partial f(x)\)\(\mathbb{R}^n\) 中**非空、凸、紧**的集合,且 \(\partial f(x)\subseteq\{\xi:\|\xi\|\le L\}\)(被 Lipschitz 常数界住)。 2. 可微相容:若 \(f\)\(x\) 连续可微(\(C^1\)),则 \(\partial f(x)=\{\nabla f(x)\}\)(退化为单点,与经典梯度一致)。 3. 凸相容:若 \(f\) 是凸函数,则 \(\partial f(x)\) 等于凸分析意义的次微分 \(\{\xi:f(y)\ge f(x)+\langle\xi,y-x\rangle,\forall y\}\)。 4. 最优性条件:若 \(x^\star\)\(f\) 的局部极小点,则 \(0\in\partial f(x^\star)\)。 5. 上半连续性(闭图):若 \(x_k\to x\)\(\xi_k\in\partial f(x_k)\)\(\xi_k\to\xi\),则 \(\xi\in\partial f(x)\)

性质 2、3 正是动机里要求的"与经典/凸情形兼容";性质 4 是优化的基石;性质 1 的凸紧是借用凸分析的前提。这五条共同确立了 Clarke 梯度作为"导数的合法推广"的地位。

最优性条件(性质 4)的证明:设 \(x^\star\) 局部极小。对任意方向 \(v\),当 \(t>0\) 足够小时 \(f(x^\star+tv)\ge f(x^\star)\),故差商 \(\frac{f(x^\star+tv)-f(x^\star)}{t}\ge0\)。取基点 \(y=x^\star\)(这是 \(\limsup\) 中允许的一支),得 \(f^\circ(x^\star;v)\ge0\) 对所有 \(v\)。于是 \(\max_{\xi\in\partial f}\langle\xi,v\rangle=f^\circ(x^\star;v)\ge0\) 对所有 \(v\)。若 \(0\notin\partial f(x^\star)\),由凸集分离定理存在 \(v_0\) 使 \(\langle\xi,v_0\rangle<0\) 对所有 \(\xi\in\partial f\),矛盾。故 \(0\in\partial f(x^\star)\)\(\blacksquare\)

计算的利器:Gradient Formula(T2)

定义 7.2.3 在概念上完美,但实际计算 \(f^\circ(x;v)\)\(\limsup\) 很麻烦。所幸有一个等价的、可操作的刻画,这是 Clarke 1983 专著的 Theorem 2.5.1:

定理 7.2.5(Clarke Gradient Formula,T2)\(f\)\(x\) 局部 Lipschitz。设 \(\Omega_f\)\(f\) 不可微的点集(由 Rademacher 定理 T1,\(\Omega_f\) 是零测集),\(S\) 是任意零测集。则

\[\boxed{\partial f(x) = \text{conv}\Big\{\lim_{k\to\infty}\nabla f(x_k) : x_k\to x,\ x_k\notin\Omega_f,\ x_k\notin S\Big\}.}\]

即:在 \(x\) 附近取所有可微点列 \(x_k\to x\),算它们的梯度 \(\nabla f(x_k)\),收集所有收敛子列的极限,再取凸包。(允许额外排除一个零测集 \(S\),因为它不影响结果——这在数值上很有用,可以避开"坏"点。)

为什么 Gradient Formula 成立(直觉论证):Rademacher 定理保证 \(f\) 几乎处处可微,所以 \(x\) 附近"绝大多数"点都有经典梯度。这些梯度的极限点刻画了 \(f\)\(x\) "从各个方向逼近时的斜率";取凸包恰好填补不可微点造成的"缺口",得到凸集。严格证明需要 Lebourg 均值定理(T4)连接差商与梯度,此处从略(见 Clarke 1983 §2.5),但其合理性已由动机里"伪导数三 + 取凸包"的讨论充分预示。

定理 7.2.6(Rademacher 定理,T1) \(\mathbb{R}^n\) 上局部 Lipschitz 的函数在 Lebesgue 测度意义下几乎处处(almost everywhere, a.e.)可微。

Rademacher 定理是 Gradient Formula 的立足石:正因为不可微点是零测集,"取可微点列逼近"才总是可行的。它的物理意义(T1 在接触中的应用):Coulomb 摩擦律作为 Lipschitz 函数,除了 stick-slip 临界点(\(v_t=0\),零测集)外处处可微——这就是为什么"几乎所有时刻"摩擦力是良定义的光滑函数,只在临界瞬间需要广义梯度。

运行示例:从 \(|x|\) 到 Coulomb 摩擦的广义梯度

理论讲完,必须落到接触力学的核心示例——Coulomb 摩擦律的广义梯度。这是本章前后呼应的关键计算,也是 §7.1 来源二留下的"欠条"。

例 1:绝对值 \(f(x)=|x|\)(一维,热身)。\(x\ne0\)\(f\) 可微,\(f'(x)=\text{sign}(x)\in\{-1,+1\}\)。在 \(x=0\) 处用 Gradient Formula:取 \(x_k\to0\),若 \(x_k>0\)\(\nabla f(x_k)=+1\),若 \(x_k<0\)\(-1\)。极限点集为 \(\{-1,+1\}\),凸包为

\[\partial|{\cdot}|(0) = \text{conv}\{-1,+1\} = [-1,+1].\]

验证最优性条件:\(x=0\)\(|x|\) 的全局极小,\(0\in[-1,+1]\) ✓。验证支撑函数:\(f^\circ(0;v)=|v|\)(直接算 \(\limsup\)),而 \(\max_{\xi\in[-1,1]}\xi v=|v|\) ✓。

例 2:一维 Coulomb 摩擦势 \(f(v_t)=\mu\lambda_n|v_t|\) 这是摩擦的"耗散势"——摩擦力是它关于速度的(负)广义梯度。直接由例 1 缩放:

\[\partial f(v_t) = \mu\lambda_n\,\partial|{\cdot}|(v_t) = \begin{cases} \{+\mu\lambda_n\}, & v_t>0 \\ [-\mu\lambda_n,+\mu\lambda_n], & v_t=0 \\ \{-\mu\lambda_n\}, & v_t<0. \end{cases}\]

写成集值符号函数:\(\partial f(v_t)=\mu\lambda_n\,\text{Sign}(v_t)\)摩擦力是耗散势的负广义梯度\(\lambda_t\in-\partial f(v_t)=-\mu\lambda_n\,\text{Sign}(v_t)\)。在 \(v_t=0\) 处,\(\lambda_t\in[-\mu\lambda_n,+\mu\lambda_n]\)——这正是 §7.1 来源二里"粘住时摩擦力可取锥内任意值"的精确数学表达!stick-slip 的数学根源,就是 \(\partial(\mu\lambda_n|\cdot|)\)\(v_t=0\) 处张开成区间 \([-\mu\lambda_n,+\mu\lambda_n]\) 这就是 §7.1 留下的欠条,现在还清了。

本质洞察:摩擦力"在静止时取一整个区间"不是物理的模糊或建模的偷懒,而是 Clarke 广义梯度 \(\partial(\mu\lambda_n|v_t|)\) 在尖点处的精确值 \([-\mu\lambda_n,+\mu\lambda_n]\)。这个区间的宽度 \(2\mu\lambda_n\) 正是"最大静摩擦力的两倍"——它定量地刻画了"物体在被推动前,摩擦力有多大的调整余地"。一旦你接受"导数可以是集合",Coulomb 摩擦从一个"麻烦的特例"变成 Clarke 理论的一个干净推论。这就是非光滑分析的威力:它把工程师眼中的"恶心特例"统一进一个优美的数学框架。

例 3:二维 Coulomb 摩擦(耦合)。 二维切向速度 \(v_t\in\mathbb{R}^2\),耗散势 \(f(v_t)=\mu\lambda_n\|v_t\|\)(欧氏范数)。在 \(v_t\ne0\) 处可微,\(\nabla f=\mu\lambda_n\frac{v_t}{\|v_t\|}\)(单位向量缩放)。在 \(v_t=0\) 处用 Gradient Formula:取 \(v_t^{(k)}\to0\) 沿各个方向,\(\nabla f\) 的极限点是所有单位向量乘 \(\mu\lambda_n\),即半径 \(\mu\lambda_n\) 的**圆周**;取凸包得整个**闭圆盘**

\[\partial f(0) = \{\xi\in\mathbb{R}^2:\|\xi\|\le\mu\lambda_n\}.\]

摩擦力 \(\lambda_t\in-\partial f(0)\) = 半径 \(\mu\lambda_n\) 的圆盘——正是 §7.1 来源二的二维摩擦圆盘。注意这里凸包的作用:极限梯度只是圆周(边界),取凸包才填成实心圆盘,从而 \(0\in\partial f(0)\)(静止可平衡),最优性/平衡条件才对。

例 4:极大值函数 \(f(x)=\max(f_1(x),\dots,f_m(x))\)\(f_i\)\(C^1\))。 这是接触里 \(\max\)(如多接触约束的最严约束)的原型。在某点 \(x\),设**活跃指标集** \(I(x)=\{i:f_i(x)=f(x)\}\)(达到最大的那些 \(f_i\))。则

\[\partial_C f(x) = \text{conv}\{\nabla f_i(x):i\in I(x)\}.\]

推导:在只有一个 \(f_{i^\star}\) 活跃的点,\(f=f_{i^\star}\) 在邻域内光滑,\(\partial_C f=\{\nabla f_{i^\star}\}\)。在多个 \(f_i\) 同时活跃的点,沿不同方向逼近时不同 \(f_i\) 成为最大者,可微点的梯度在 \(\{\nabla f_i:i\in I\}\) 中切换,极限点是这些梯度,取凸包得上式。\(\max\) 函数正则(凸函数的上确界仍"正则",§7.2 正则性分类),故这里是等号而非包含。对比 \(\min\) 函数\(\min_i f_i=-\max_i(-f_i)\),由于取负破坏正则性,\(\min\) 一般**不正则**,其 \(\partial_C(\min_i f_i)(x)\) 只有上包含 \(\subseteq\text{conv}\{\nabla f_i:i\in I\}\)。这正是 §7.1 来源一的间隙函数 \(g(q)=\min_i\phi_i(q)\)(取最近接触)非正则的根源——也是练习 7.2.3 的理论依据。

本质洞察\(\max\) 正则而 \(\min\) 不正则,这个"看似对称却不对称"的事实有深刻的几何根源。\(\max\) 是凸运算(凸函数的上确界仍凸),凸性自动带来正则性(§7.2);\(\min\) 是凹运算,破坏凸性进而破坏正则性。在接触力学里,这意味着"取最严格约束"(\(\max\) 型,如约束违反量 \(\max_i(-\phi_i)\))的灵敏度分析是良态的,而"取最近接触"(\(\min\) 型,如间隙 \(\min_i\phi_i\))的灵敏度分析在多接触同距处是病态的(链式法则只给上界)。这就是为什么多点接触的"哪个接触先激活"在数值上敏感——它本质是 \(\min\) 函数的非正则性。

例 5:距离函数 \(d_C(x)=\min_{y\in C}\|x-y\|\) 与投影(接触间隙的抽象)。\(C\) 闭凸,\(d_C\) 是到 \(C\) 的距离(接触间隙函数的抽象——\(\phi(q)\) 本质是构型空间中到"接触流形"的有符号距离)。\(d_C\) 处处 Lipschitz(常数 1)。在 \(C\) **外部**点 \(x\notin C\),设投影 \(P_C(x)\)\(C\) 上离 \(x\) 最近的点,凸集投影唯一),则 \(d_C\)\(x\) 可微:

\[\nabla d_C(x)=\frac{x-P_C(x)}{\|x-P_C(x)\|}\quad(\text{从 } P_C(x) \text{ 指向 } x \text{ 的单位向量}).\]

\(C\) 边界**点 \(x\in\partial C\)\(d_C(x)=0\)\(d_C\) 的极小(\(d_C\ge0\)),故 \(0\in\partial_C d_C(x)\);具体地 \(\partial_C d_C(x)=N_C(x)\cap\mathbb{B}\)(法锥与单位球的交)。**这把 §7.1 的"接触力 ∈ 法锥"与距离函数的广义梯度联系起来:接触间隙 \(\phi\) 在接触发生处(\(\phi=0\))的广义梯度方向就是接触法向(法锥方向),接触力沿此方向。例 5 是 §7.8.2 prox-regularity 的铺垫——当 \(C\) 非凸("L 形"工件),\(P_C\) 在内凹角点多值、\(d_C\) 不可微且非 \(C^1\),广义梯度退化,这正是接触求解器在角点失稳的根源。

Clarke 次微分的运算法则(calculus)

要在复杂接触问题里实际使用 Clarke 梯度(如对 \(g(q)=\phi(\text{FK}(q))\) 这种复合函数求导),需要运算法则。这里给出三条最常用的,它们是 §7.7 桥接中"计算接触灵敏度"的工具。

定理 7.2.7(数乘与有限和,T 部分)\(f,g\)\(x\) 局部 Lipschitz。 - 数乘:\(\partial(sf)(x)=s\,\partial f(x)\)(对任意标量 \(s\),含负数——注意 \(s<0\) 时仍成立,因 \(\partial(-f)=-\partial f\),这是 Clarke 梯度对凸分析次微分的一大优势,后者只对非负数乘良好)。 - 和法则(包含式):\(\partial(f+g)(x)\subseteq\partial f(x)+\partial g(x)\)(Minkowski 和)。当 \(f,g\) 中至少一个**正则**(见下)时取等号。

定理 7.2.8(Clarke Chain Rule II,T3)\(F:\mathbb{R}^n\to\mathbb{R}^m\) 局部 Lipschitz(分量 \(F_i\)),\(g:\mathbb{R}^m\to\mathbb{R}\) 局部 Lipschitz。则复合 \(h=g\circ F\) 满足

\[\partial h(x) \subseteq \text{conv}\Big\{\sum_{i=1}^m \alpha_i\zeta_i : \zeta_i\in\partial F_i(x),\ \alpha\in\partial g(F(x))\Big\},\]

\(g\) 正则且 \(F\) 连续可微时取等号。这是计算接触间隙 \(g(q)=\phi(\text{FK}(q))\)(正运动学复合接触距离)的 Clarke 导数的工具(T3 的接触应用)。

定理 7.2.9(Lebourg 均值定理,T4)\(f\) 在含线段 \([x,y]\) 的开集上局部 Lipschitz。则存在 \(u\in(x,y)\)(开线段上某点)和 \(\zeta\in\partial f(u)\) 使

\[f(y)-f(x) = \langle\zeta, y-x\rangle.\]

这是光滑情形中值定理 \(f(y)-f(x)=\langle\nabla f(u),y-x\rangle\) 的非光滑推广,区别是 \(\nabla f(u)\) 换成 \(\partial f(u)\) 中的某个 \(\zeta\)。它在估计 Lipschitz 势函数的能量差时极有用(T4 的接触应用:势能差的界估计)。

运算法则的接触应用示范——逐步计算 \(g(q)=\phi(\text{FK}(q))\) 的广义梯度。 这是 T3(链式法则)在接触里最常见的计算:接触间隙 \(g\) 是"正运动学 FK 把关节角 \(q\) 映射到工作空间位姿、再由接触距离 \(\phi\) 度量"的复合。逐步走一遍:

  • Step 1(识别复合结构)\(g=\phi\circ\text{FK}\),其中 \(\text{FK}:\mathbb{R}^{n_q}\to\mathbb{R}^{6}\)(位姿)通常 \(C^\infty\)(光滑,由旋转/平移复合),\(\phi:\mathbb{R}^6\to\mathbb{R}\)(最近距离)一般只 Lipschitz(在棱/角处不可微)。
  • Step 2(外层 \(\phi\) 是否正则?):若接触是"面-面"(光滑接触),\(\phi\) 在该处 \(C^1\),正则;若是"角-面"或涉及 \(\min\)(多候选接触点取最近),\(\phi\) 可能非正则(§7.2 例 5、例 4)。
  • Step 3(应用链式法则 T3):由于内层 \(\text{FK}\) 连续可微(Jacobian \(J_{FK}=\partial\text{FK}/\partial q\) 存在且连续),T3 给出
\[\partial_C g(q)=J_{FK}(q)^\top\,\partial_C\phi(\text{FK}(q)),\]

即"接触距离在工作空间的广义梯度,经正运动学 Jacobian 转置拉回关节空间"。\(\phi\) 在该位姿可微时\(\partial_C\phi=\{\nabla\phi\}\)(单点),上式退化为 \(\nabla g=J_{FK}^\top\nabla\phi\)(经典链式法则)——这就是接触雅可比 \(J=\nabla g^\top\) 的来源! - Step 4(非正则情形的退化):若 \(\phi\) 非正则(角接触/多候选),T3 只给上包含 \(\partial_C g\subseteq J_{FK}^\top\partial_C\phi\),等号可能不成立。此时接触雅可比"多值",灵敏度分析须用 §7.3 的 Bouligand/limiting 工具(这是专题 4 可微仿真在角接触处的难点根源)。

这个逐步计算把抽象的 T3 落到"接触雅可比从哪来"这一具体问题,是 §7.7 桥接二的预演。

Lebourg 均值定理的接触应用示范——势能差的界。 设接触势 \(V(q)\) 局部 Lipschitz(常数 \(L\),如摩擦耗散势或 barrier 势),要估计两个构型 \(q_1,q_2\) 间的势能差。由 T4,存在 \(u\in(q_1,q_2)\)\(\zeta\in\partial_C V(u)\) 使 \(V(q_2)-V(q_1)=\langle\zeta,q_2-q_1\rangle\)。结合 \(\|\zeta\|\le L\)(§7.2 定理 7.2.4,Clarke 梯度被 Lipschitz 常数界住):

\[|V(q_2)-V(q_1)|=|\langle\zeta,q_2-q_1\rangle|\le\|\zeta\|\,\|q_2-q_1\|\le L\,\|q_2-q_1\|.\]

即势能差被 Lipschitz 常数 \(\times\) 构型距离界住——这是证明接触系统能量有界、Lyapunov 函数良态(§7.4 非光滑 Lyapunov)的基础引理。T4 让我们在 \(V\) 不可微时仍能做这种"中值估计",光滑中值定理在此失效(\(\nabla V(u)\) 在不可微点不存在),而 T4 用 \(\partial_C V(u)\) 中的 \(\zeta\) 补上。

正则性(regularity):Clarke 何时"行为良好"

上面的运算法则多是包含式 \(\subseteq\),只在"正则"时取等号。正则性是一个重要概念,也是常见误区的来源。

定义 7.2.10(Clarke 正则) \(f\)\(x\) 处**正则(regular)**,若对所有 \(v\),经典单侧方向导数 \(f'(x;v)=\lim_{t\downarrow0}\frac{f(x+tv)-f(x)}{t}\) 存在,且等于 Clarke 广义方向导数 \(f^\circ(x;v)\)

正则性意味着"广义方向导数没有比经典方向导数提供更多坏消息"——\(f^\circ\)(取 \(\limsup\) 的悲观值)恰好等于 \(f'\)(老老实实的方向导数)。

哪些函数正则?(系统分类,认知工具 E) - \(C^1\) 函数:正则(\(f^\circ=f'=\langle\nabla f,v\rangle\))。 - 凸函数:正则(这是凸分析次微分与 Clarke 次微分一致的原因)。\(f=|x|\)\(0\) 正则。 - 凸函数的非负组合、上确界(max):正则。\(\max_i f_i\)\(f_i\) 凸或 \(C^1\))正则。 - 凹函数(如 \(-|x|\):一般**不正则**!这是最重要的反例。\(f=-|x|\)\(0\)\(f'(0;v)=-|v|\)(经典方向导数存在),但 \(f^\circ(0;v)=|v|\)\(\limsup\) 取到 \(+1\)\(-1\) 的较大变化)。二者不等(\(-|v|\ne|v|\) 除非 \(v=0\)),故不正则。 - \(\min\) 函数(如接触间隙 \(\min_i\phi_i\):一般**不正则**(\(\min\)\(\max\) 取负,凹性使其不正则),链式法则只给上包含。

本质洞察:"正则"不是"光滑"。这是中文社区最常见的误用。正则是 \(f^\circ=f'\) 的局部条件——凸函数、\(C^1\) 函数、max 函数都正则但**不一定光滑**(\(|x|\) 正则但在 \(0\) 不可微)。反过来,凹函数(光滑性不缺,但凹)在尖点处不正则。正则性刻画的是"广义方向导数是否如实反映单侧变化",与可微性是两个独立的维度。记住这个反例 \(-|x|\):它正则性的失败,正是 §3 引入 Mordukhovich 次微分的动机(Clarke 在 \(-|x|\) 处丢失信息,Mordukhovich 不丢)。

⚠️ 常见陷阱

💡 概念误区:把 Clarke 广义梯度当成唯一的非光滑微分概念 新手想法:"非光滑函数的导数就是 Clarke 广义梯度,没有别的。" 实际上:Clarke 对所有 Lipschitz 函数都良定义,但**永远是凸集**——这是优点(便于计算最优性)也是缺点(可能丢失信息)。经典反例:\(f(x)=-|x|\)\(0\) 处,Clarke \(\partial f(0)=[-1,+1]\)(凸区间),但真正"有意义的斜率"只有 \(\{-1,+1\}\) 两个值;Clarke 把中间填满,信息被冲淡。用 Mordukhovich limiting 次微分得 \(\{-1,+1\}\),精准保留。 为什么重要:写论文做灵敏度分析(如证明 LCP 解映射的 Lipschitz 性,§7.7)必须用 Mordukhovich(信息精细),工程实现(求最优性、半光滑 Newton)用 Clarke 即可。选错会导致定理证不出或结论过松。这正是 §3 存在的理由。

💡 概念误区:误以为"Clarke 正则 = 光滑" 新手想法:"如果一个函数是 Clarke 正则的,那它应该是光滑(可微)的。" 实际上:正则是 \(f^\circ(x;v)=f'(x;v)\) 的条件,凸函数、\(C^1\) 函数、max 函数都正则但不一定光滑\(|x|\) 正则但不可微)。反之,凹函数(如 \(-|x|\))通常不正则却"没有更多不可微点"。接触间隙 \(g(q)=\min_i\phi_i(q)\)\(\max\) 取负的形式,一般不正则,链式法则只给上包含 \(\subseteq\)。 为什么重要:若误以为"间隙函数正则"而用等号链式法则,会得到错误的接触梯度,导致灵敏度分析或可微仿真(专题 4)出错。

🧠 思维陷阱:直接用自动微分(autodiff)求不可微函数的"梯度" 新手想法:"代码里有 min/max/abs,我直接 autograd 求梯度就行,框架会处理。" 实际上:autodiff 在不可微点返回的是 \(\partial_B f\)(Bouligand 子微分,§3)中的**某一个**元素(取决于浮点比较走哪个分支),既不是真梯度(不存在)也不是完整的 Clarke 集合。对一般梯度下降,这个"伪梯度"可能让优化在尖点振荡或停在伪驻点;但对半光滑 Newton(§6),取 \(\partial_B\) 的任一元素恰好够用(这是 Newton 比梯度下降"更适合非光滑"的深层原因)。 正确思维:用 autodiff 处理非光滑函数前,先问"我用的算法需要哪种次微分?"梯度下降需要 Clarke 集合的信息(autodiff 不给),慎用;半光滑 Newton 只需 \(\partial_B\) 的一个元素,autodiff 恰好提供。理解这个区别,才能正确选择优化算法。

练习

练习 7.2.1(计算题,在草稿纸上完成) 计算下列函数在指定点的 Clarke 广义梯度,每步注明用了 Gradient Formula 还是定义: (a) \(f(x)=\max(x,0)\)(ReLU)在 \(x=0\); (b) \(f(x_1,x_2)=|x_1|+|x_2|\)\(L_1\) 范数)在 \((0,0)\); (c) \(f(x_1,x_2)=\max(x_1,x_2)\)\(x_1=x_2\); (d) \(f(x)=-|x|\)\(x=0\)(并指出它与 \(|x|\) 的 Clarke 梯度相同这一"信息丢失"现象)。

练习 7.2.2(证明题) 证明:若 \(f\)\(x\) 处可微(经典意义),则 \(\partial f(x)=\{\nabla f(x)\}\)(Clarke 梯度退化为单点)。(提示:用 Gradient Formula,\(f\) 在可微点连续可微的邻域内梯度连续,极限唯一。注意:仅"在 \(x\) 一点可微"还不够保证单点,需 \(f\)\(x\) 邻域 \(C^1\);请讨论"仅在一点可微但邻域不连续可微"的反例,如 \(f(x)=x^2\sin(1/x)\)\(0\),说明此时 Clarke 梯度可能不是单点。)

练习 7.2.3(接触应用,开放思考题) 接触间隙函数 \(g(q)=\min_{i=1,\dots,m}\phi_i(q)\)(取所有接触对中最近的距离,\(\phi_i\)\(C^1\))。(a) 在只有一个 \(\phi_{i^\star}\) 达到最小的"非退化"点,求 \(\partial g(q)\);(b) 在两个间隙相等 \(\phi_1(q)=\phi_2(q)=g(q)\) 的"退化"点(两个接触同时最近),求 \(\partial g(q)\),并说明这对应物理上的什么情形(提示:物体的一条棱同时接近两个面);(c) 讨论 \(g\) 在该退化点是否正则,这对计算接触力的灵敏度(专题 4 可微仿真)有何影响。


§7.3 四种次微分的层级体系:何时 Clarke 不够用 ⭐⭐⭐⭐

动机:Clarke 把信息冲淡了,怎么办?

§7.2 末尾留下一个刺:\(f(x)=-|x|\)\(0\) 处,Clarke \(\partial f(0)=[-1,+1]\),但"真正有意义的斜率"只有 \(\{-1,+1\}\) 两点。Clarke 把它们之间填满,信息被稀释了。对优化(只要 \(0\in\partial f\) 判最优)这无所谓——\(0\in[-1,1]\) 给出"\(0\)\(-|x|\) 的驻点",确实对(\(0\)\(-|x|\) 的极大点)。但对**灵敏度分析**这是灾难:当你想知道"\(-|x|\) 的极小值如何随参数变化"或"某个解映射对扰动的 Lipschitz 模长是多少"时,Clarke 给出的凸集太大,得到的界太松,甚至证不出 Lipschitz 性。

这在接触力学里是真实痛点。考虑 §7.7 会详述的问题:LCP \(0\le x\perp Mx+q\ge0\) 的解 \(x(q)\) 如何随 \(q\) 变化?我们想证"\(x(q)\) 局部 Lipschitz"(这关系到接触力对扰动是否稳定、控制器是否良态)。这个判据(Mordukhovich 判据 T7)需要计算解映射的**余导数(coderivative),而余导数建立在 limiting 法锥之上——**用 Clarke 的凸化版本会让判据失效(凸化后总是满足某些条件,无法区分 Lipschitz 与非 Lipschitz)。

所以我们需要比 Clarke 更精细(不强行凸化)的次微分。本节系统梳理四种次微分,建立它们的层级关系,并明确每一种的最优适用场景。这是全章理论深度的顶点,也是从"会用接触工具"到"能证接触定理"的分水岭。

本质洞察:四种次微分不是冗余的重复造轮子,而是一个**精度-便利权衡谱**上的四个点。一端是 Fréchet 次微分(最精细但可能空、运算法则弱),另一端是 Clarke 次微分(最粗、永远凸非空、运算法则全)。中间的 limiting(Mordukhovich)和 Bouligand 各占一席。选哪个,取决于你的任务对"精度"和"便利"的相对需求:优化求驻点用 Clarke(要凸要全),灵敏度分析用 Mordukhovich(要精细),半光滑 Newton 用 Bouligand(要非奇异)。理解这个谱,你就能在任何非光滑问题前正确选择工具——这是研究者与工程师的分野。

历史:为什么会有这么多次微分

§7.1 的历史已交代:Clarke(1975)走凸化路线图便利,Mordukhovich(1970s 起)走非凸路线图精度,二者并行发展。这里补充逻辑动机。Clarke 次微分的"永远凸"在 1980 年代被发现是把双刃剑:凸性带来运算便利,但在非凸/非正则问题(如 \(-|x|\)\(\min\) 函数、双层优化、最优控制的值函数)上,凸化丢失的信息恰恰是判断稳定性/灵敏度所必需的。Mordukhovich、Ioffe、Kruger 等人发展了不取凸包的 limiting 次微分,证明了它满足精确(exact,非包含式)的运算法则——代价是失去凸性。Rockafellar–Wets 1998 把这一切统一进变分分析,定义了 Fréchet(regular)与 limiting 次微分的标准记号,本节即按其框架展开。Bouligand 次微分则来自数值分析传统(Qi、Pang 等做半光滑 Newton),是"可微点梯度的极限",最贴近计算。

理论:四种次微分的精确定义

\(f:\mathbb{R}^n\to\mathbb{R}\) 局部 Lipschitz(仍是基本假设;limiting/Fréchet 对更一般的下半连续函数也有定义,但本章聚焦 Lipschitz 情形以服务接触应用)。我们按"从精细到粗"的顺序定义。

定义 7.3.1(Fréchet / regular 次微分 \(\hat\partial f\) 向量 \(\xi\)\(f\)\(x\) 的 Fréchet 次梯度,若

\[\liminf_{y\to x,\,y\ne x}\frac{f(y)-f(x)-\langle\xi,y-x\rangle}{\|y-x\|}\ge 0.\]

所有这样的 \(\xi\) 构成 \(\hat\partial f(x)\)。直觉:\(\xi\) 是一个"从下方一阶贴合"\(f\) 的斜率——\(f(y)\ge f(x)+\langle\xi,y-x\rangle+o(\|y-x\|)\)。这是最严格的"次梯度"要求(局部下方支撑),所以 \(\hat\partial f(x)\) 最小,甚至可能**为空**(如 \(f=-|x|\)\(0\),没有任何线性函数能从下方贴合凹尖点,\(\hat\partial f(0)=\varnothing\))。

定义 7.3.2(limiting / Mordukhovich 次微分 \(\partial_L f\)\(\partial_M f\) 通过对 Fréchet 次梯度取"序列外极限"得到:

\[\partial_L f(x) := \Big\{\lim_k\xi_k : x_k\to x,\ f(x_k)\to f(x),\ \xi_k\in\hat\partial f(x_k)\Big\}.\]

即:在 \(x\) 附近找点列 \(x_k\to x\),在每个 \(x_k\) 取 Fréchet 次梯度 \(\xi_k\),收集所有收敛极限。这"修复"了 Fréchet 次微分可能为空的毛病(即使 \(\hat\partial f(x)=\varnothing\),邻近点的 Fréchet 次梯度极限可能非空)。关键:\(\partial_L f\) 一般不取凸包,可能非凸。

定义 7.3.3(Bouligand 次微分 \(\partial_B f\) 对局部 Lipschitz \(f\)

\[\partial_B f(x) := \Big\{\lim_k\nabla f(x_k) : x_k\to x,\ x_k\in D_f\Big\},\]

其中 \(D_f\)\(f\) 的可微点集(其补是零测,由 Rademacher)。即"可微点梯度的所有极限"。这是最贴近计算的定义(直接用经典梯度的极限),也是 §7.2 动机里的"伪导数三"。\(\partial_B f\) 一般非凸(如 \(\partial_B|{\cdot}|(0)=\{-1,+1\}\))。

定义 7.3.4(Clarke 次微分 \(\partial_C f\),回顾 §7.2)\(\partial_B\) 的凸包(Gradient Formula):

\[\partial_C f(x) = \text{conv}\,\partial_B f(x).\]

永远凸、非空、紧。这是 §7.2 反复用的那个。

层级关系:四者如何嵌套

现在给出本节最重要的结论——四种次微分的包含关系。

定理 7.3.5(次微分层级,局部 Lipschitz 情形) 对局部 Lipschitz \(f\) 在点 \(x\)

\[\boxed{\hat\partial f(x) \;\subseteq\; \partial_L f(x) \;\subseteq\; \partial_C f(x) = \text{conv}\,\partial_L f(x) = \text{conv}\,\partial_B f(x),}\]

并且 \(\partial_B f(x)\subseteq\partial_L f(x)\)(Bouligand 是 limiting 的子集,limiting 还含 Fréchet 极限带来的额外点,但在 Lipschitz 情形二者的凸包都等于 Clarke)。

逐一解读这个链条:

  • \(\hat\partial\subseteq\partial_L\):limiting 是 Fréchet 取序列极限,含 Fréchet 自身(取常数列)。极限只会变大。
  • \(\partial_L\subseteq\partial_C\):Clarke 是 limiting 取凸包,凸包只会变大。
  • \(\partial_C=\text{conv}\,\partial_L=\text{conv}\,\partial_B\):这是 §7.3 最实用的等式——Clarke 次微分恰好是 Mordukhovich(或 Bouligand)次微分的凸包(T8)。这把抽象的 limiting 次微分与可计算的 Clarke 联系起来。

定理 7.3.6(Clarke = conv Mordukhovich,T8) 有限维、局部 Lipschitz 情形:\(\partial_C f(x)=\text{conv}\,\partial_L f(x)\)

这是 Rockafellar–Wets 1998 §8J + Thm 9.61 的结论。它一句话概括了 Clarke 与 Mordukhovich 的关系:Clarke 是 Mordukhovich 的凸化。Clarke 永远凸(优点:运算便利、最优性条件干净),Mordukhovich 可非凸(优点:信息精细、运算法则精确)。

我们用四个函数把四种次微分一次性算清楚,这是本节的"压舱石"对比表:

函数 \(f\)\(x=0\) \(\hat\partial f(0)\) (Fréchet) \(\partial_B f(0)\) (Bouligand) \(\partial_L f(0)\) (limiting) \(\partial_C f(0)\) (Clarke)
\(f=\) 常数 \(\{0\}\) \(\{0\}\) \(\{0\}\) \(\{0\}\)
\(f(x)=\|x\|\)(凸尖点) \([-1,1]\) \(\{-1,+1\}\) \([-1,1]\) \([-1,1]\)
\(f(x)=-\|x\|\)(凹尖点) \(\varnothing\) \(\{-1,+1\}\) \(\{-1,+1\}\) \([-1,1]\)
\(f(x)=\|x\|\) 但看作 \(\min(x,-x)\) \([-1,1]\) \(\{-1,+1\}\) \([-1,1]\) \([-1,1]\)

重点看第三行 \(f=-|x|\)(核心反例): - Fréchet \(\hat\partial f(0)=\varnothing\):凹尖点没有下方支撑线,Fréchet 次梯度不存在。 - Bouligand \(\partial_B f(0)=\{-1,+1\}\):可微点(\(x\ne0\))梯度是 \(\mp1\),极限为两点。 - limiting \(\partial_L f(0)=\{-1,+1\}\):等于 Bouligand(此例中 Fréchet 极限不添加新点)。精准保留了"斜率只有 \(\pm1\)"的信息。 - Clarke \(\partial_C f(0)=[-1,+1]\):凸包填满中间。信息被冲淡。

本质洞察\(f=-|x|\) 这一行就是整个 §3 的灵魂。它展示了 Clarke 与 Mordukhovich 的本质差异:在凹尖点,Mordukhovich 说"斜率是 \(-1\)\(+1\),二选一"(这是对的——左半支斜率 \(+1\),右半支斜率 \(-1\)),Clarke 说"斜率在 \([-1,1]\) 间任意"(这把不存在的中间斜率也算进来了)。当你做灵敏度分析、要回答"这个解对扰动有多敏感"时,多出来的中间斜率会让你的估计无谓地变松,甚至让 Lipschitz 判据失效。这就是"何时 Clarke 不够用"的精确答案:当问题非凸/非正则、且你需要精细的一阶信息(灵敏度、稳定性)时,必须用 Mordukhovich。

集值映射的次微分:余导数(coderivative)

接触力学的灵敏度分析(如"LCP 解映射 \(S(q)\) 的 Lipschitz 性")研究的不是标量函数,而是**集值映射** \(S:\mathbb{R}^n\rightrightarrows\mathbb{R}^m\)(一个输入对应一个输出集合)。Mordukhovich 为集值映射定义了对应的"导数"——余导数,这是 §7.7 桥接 LCP 灵敏度的核心工具。

定义 7.3.7(Mordukhovich 余导数 \(D^*S\)\(S:\mathbb{R}^n\rightrightarrows\mathbb{R}^m\) 的图 \(\text{gph}\,S=\{(x,y):y\in S(x)\}\) 闭。在 \((\bar x,\bar y)\in\text{gph}\,S\) 处的余导数 \(D^*S(\bar x|\bar y):\mathbb{R}^m\rightrightarrows\mathbb{R}^n\) 定义为:\(\xi\in D^*S(\bar x|\bar y)(\eta)\) 当且仅当

\[(\xi,-\eta)\in N_{\text{gph}\,S}(\bar x,\bar y),\]

其中 \(N\) 是 Mordukhovich(limiting)法锥。直觉:余导数用图的法锥刻画"输出集合如何随输入变化",是雅可比转置 \(J^\top\) 在集值情形的推广(光滑情形 \(S(x)=\{g(x)\}\) 时,\(D^*S(\bar x)(\eta)=\{\nabla g(\bar x)^\top\eta\}\))。

定义 7.3.8(Aubin 性质 / pseudo-Lipschitz) 集值映射 \(S\)\((\bar x,\bar y)\) 处有 Aubin 性质(也叫 pseudo-Lipschitz、Lipschitz-like),若存在邻域 \(U\ni\bar x\)\(V\ni\bar y\) 和常数 \(\kappa>0\) 使

\[S(x')\cap V \subseteq S(x) + \kappa\|x'-x\|\,\mathbb{B},\quad\forall x,x'\in U,\]

其中 \(\mathbb{B}\) 是单位球。这是集值映射版的"局部 Lipschitz 连续"——输出集合随输入移动的速度被 \(\kappa\) 控制。\(\kappa\) 的下确界称为 Lipschitz 模长 \(\text{lip}\,S(\bar x|\bar y)\)

定理 7.3.9(Mordukhovich 判据,T7)\(\text{gph}\,S\) 闭。则 \(S\)\((\bar x,\bar y)\) 有 Aubin 性质,当且仅当余导数在 \(0\) 处只含 \(0\)

\[\boxed{S\ \text{在}\ (\bar x,\bar y)\ \text{Aubin} \iff D^*S(\bar x|\bar y)(0)=\{0\},}\]

且此时 \(\text{lip}\,S(\bar x|\bar y)=\|D^*S(\bar x|\bar y)\|^+\)(余导数的"模长")。

这是 Rockafellar–Wets 1998 Thm 9.40,是 §7.7 证明"LCP 解映射局部 Lipschitz"的核心引擎。为什么必须用 Mordukhovich 法锥而非 Clarke? 因为 Clarke 法锥总是凸的,凸化后 \(D^*S(\cdot)(0)=\{0\}\) 这个判据会"过度满足"(凸锥更容易只含 \(0\)?不——恰恰相反,凸化使法锥更大,判据更难满足或失去等价性),破坏充要性。判据的精确性依赖 limiting 法锥不取凸包。这就是 §3 开头说"Clarke 在灵敏度分析里不够用"的技术兑现。

📌 结论框(速读读者看这里):四种次微分按精度递减排列 \(\hat\partial\subseteq\partial_L\subseteq\partial_C\),且 \(\partial_C=\text{conv}\,\partial_L\)。Clarke 永远凸、便利,用于优化最优性;Mordukhovich 可非凸、精细,用于灵敏度分析(余导数 + Mordukhovich 判据 T7 刻画集值映射的 Lipschitz 性);Bouligand 是可微点梯度极限,用于半光滑 Newton(取其元素保证非奇异,§6)。记住反例 \(-|x|\):Clarke 给 \([-1,1]\),Mordukhovich 给 \(\{-1,+1\}\)

一个完整的余导数计算:法锥映射 \(N_{\mathbb{R}_+}\)

抽象的余导数定义(定义 7.3.7)需要落到一个能亲手算的例子,否则 Mordukhovich 判据(T7)对你只是一句口号。我们计算接触里最基本的法锥映射 \(S(\cdot)=N_{\mathbb{R}_+}(\cdot)\) 的余导数——它是 LCP 解映射余导数的"积木"(LCP = 法锥包含,由这些标量法锥映射的乘积构成)。

\(S:\mathbb{R}\rightrightarrows\mathbb{R}\)\(S(x)=N_{\mathbb{R}_+}(x)\),即

\[S(x)=\begin{cases}\{0\}, & x>0\\ (-\infty,0], & x=0\\ \varnothing, & x<0.\end{cases}\]

它的图 \(\text{gph}\,S=\{(x,y):y\in N_{\mathbb{R}_+}(x)\}\) 是平面上的一个 L 形集合

\[\text{gph}\,S = \underbrace{\{(x,0):x\ge0\}}_{\text{正 } x \text{ 轴}}\ \cup\ \underbrace{\{(0,y):y\le0\}}_{\text{负 } y \text{ 轴}}.\]

这正是 §7.6 命题 7.6.1 里互补条件 \(0\le x\perp -y\ge0\) 的可行点集(互补的几何面孔就是这个 L 形)!现在按定义 7.3.7,余导数 \(\xi\in D^*S(\bar x|\bar y)(\eta)\iff(\xi,-\eta)\in N_{\text{gph}\,S}(\bar x,\bar y)\),需要算 L 形集合在各点的 limiting 法锥。分情形(这是 T7 应用的核心计算):

情形 1:\(\bar x>0,\bar y=0\)(接触分离,间隙为正)。 局部 \(\text{gph}\,S\) 就是 \(x\) 轴(光滑 1 维流形),法锥是垂直方向:\(N_{\text{gph}\,S}(\bar x,0)=\{0\}\times\mathbb{R}\)。于是 \((\xi,-\eta)\in\{0\}\times\mathbb{R}\Rightarrow\xi=0\)\(\eta\) 任意)。故

\[D^*S(\bar x|0)(\eta)=\{0\}\quad\forall\eta.\]

情形 2:\(\bar x=0,\bar y<0\)(接触受力,间隙为零)。 局部 \(\text{gph}\,S\)\(y\) 轴,法锥水平:\(N=\mathbb{R}\times\{0\}\)\((\xi,-\eta)\in\mathbb{R}\times\{0\}\Rightarrow\eta=0\)\(\xi\) 任意)。故

\[D^*S(0|\bar y)(\eta)=\begin{cases}\mathbb{R}, & \eta=0\\ \varnothing, & \eta\ne0.\end{cases}\]

情形 3:\(\bar x=0,\bar y=0\)(临界点,间隙与力同时为零,"弱激活")。 这是 L 形的**拐角**,最微妙。limiting 法锥是拐角处所有"邻近光滑点法锥的极限"的并:从正 \(x\) 轴一侧逼近得 \(\{0\}\times\mathbb{R}\),从负 \(y\) 轴一侧逼近得 \(\mathbb{R}\times\{0\}\),拐角本身还贡献第三象限方向。结果

\[N_{\text{gph}\,S}(0,0)=\big(\{0\}\times\mathbb{R}\big)\cup\big(\mathbb{R}\times\{0\}\big)\cup\big(\mathbb{R}_-\times\mathbb{R}_-\big)\ \text{的 limiting 闭包}.\]

应用判据:\(D^*S(0|0)(0)=\{\xi:(\xi,0)\in N_{\text{gph}\,S}(0,0)\}\)。由于 \(\mathbb{R}\times\{0\}\subseteq N\),得 \(\xi\) 可取整个 \(\mathbb{R}\)?——不,需仔细取 limiting 部分;标准结论是在拐角处 \(D^*S(0|0)(0)\) 不止含 \(\{0\}\)(含非零 \(\xi\)),故**判据 \(D^*S(0)=\{0\}\) 在拐角处失败**。

物理解读(这是计算的全部意义): - 情形 1、2(严格激活/严格分离)判据满足 → 解映射在这些点局部 Lipschitz(接触状态明确时,接触力对扰动稳定)。 - 情形 3(弱激活,间隙与力同时为零,恰好"将接触未接触")判据失败 → 解映射在此可能**非 Lipschitz**(接触状态临界时,微小扰动可能让接触突然激活/失活,接触力剧烈跳变)。

这就是 §7.3 开头说"Mordukhovich 判据刻画 LCP 解映射 Lipschitz 性"的具体兑现——它精确地告诉你:接触力的稳定性在"严格激活/分离"时有保证,在"弱激活临界"时可能失稳。这对控制器设计是关键警示:避免让机器人长期处于"恰好将接触"的临界状态(如脚尖虚点地面),因为那里接触力对扰动最敏感。注意全程用 limiting 法锥:若用 Clarke 法锥(凸化),L 形拐角的法锥会被凸化成更大的锥,判据的充要性丧失,得不到这个精确的"临界点失稳"结论——这是 §7.3 反复强调"灵敏度必须用 Mordukhovich"的技术兑现。

强正则性与 Robinson 定理

灵敏度分析还有一个更强的概念——强正则性,它刻画的不只是"解 Lipschitz",而是"解唯一且 Lipschitz 可微样"。这是 §7.7 桥接 NMPC 灵敏度(与第五批控制理论相连)的工具。

定义 7.3.10(广义方程与强正则性) 形如 \(0\in f(x)+N_C(x)\) 的关系称**广义方程**(generalized equation),它统一了方程(\(N_C=\{0\}\))、变分不等式、互补问题、KKT 系统。Robinson(1980)称解 \(x^\star\) 处**强正则(strongly regular)**,若把 \(f\)\(x^\star\) 线性化后得到的广义方程,其解映射(关于扰动参数)单值且局部 Lipschitz。

定理 7.3.11(Robinson 强正则性,T9) 广义方程 \(0\in f(x)+N_C(x)\) 在解 \(x^\star\) 强正则,当且仅当其线性化广义方程有单值 Lipschitz 逆。此时 KKT 系统对参数 \(p\) 的依赖是"\(C^1\)-样"(Lipschitz 且方向可微)。

Robinson 1980(Math. Oper. Res.)是灵敏度分析的奠基。Dontchev–Rockafellar 2014(Implicit Functions and Solution Mappings)把强正则性与 Aubin 性质(T7)统一——强正则 ⟹ Aubin,但 Aubin 不要求单值。在接触语境:强正则保证"接触力对扰动唯一且 Lipschitz 依赖"(控制器良态的最强保证),Aubin 只保证"局部 Lipschitz 但可能多值"(仍可用,但需处理多解)。

强正则性在"严格互补"下的具体形态

抽象的强正则性需要落到可检验的条件。在最常见的"严格互补(strict complementarity)"情形,强正则性退化为一个**可计算的矩阵非奇异条件**——这是它在工程中真正被使用的形态。考虑带单边约束的 KKT 系统(接触平衡的抽象):

\[\nabla_q L(q,\lambda)=0,\qquad 0\le\lambda\ \perp\ \phi(q)\ge0,\]

其中 \(L=f(q)-\lambda^\top\phi(q)\) 是 Lagrange 函数,\(\lambda\) 是接触力(乘子)。在解 \((q^\star,\lambda^\star)\) 处,把约束分为:

  • 强激活(strongly active)\(\phi_i(q^\star)=0\)\(\lambda_i^\star>0\)(接触受力,间隙为零)——指标集 \(\mathcal{A}^+\)
  • 非激活(inactive)\(\phi_i(q^\star)>0\)\(\lambda_i^\star=0\)(分离,无力)——指标集 \(\mathcal{I}\)
  • 弱激活(weakly active / degenerate)\(\phi_i(q^\star)=0\)\(\lambda_i^\star=0\)(恰好"将接触未受力")——指标集 \(\mathcal{A}^0\)

严格互补**意味着 \(\mathcal{A}^0=\varnothing\)(没有弱激活约束)。此时局部行为完全由强激活约束决定(非激活约束在邻域内保持非激活,可"冻结"\(\lambda_i=0\))。把强激活约束当作等式约束 \(\phi_{\mathcal{A}^+}(q)=0\),KKT 退化为光滑等式系统,其线性化(隐函数定理)的雅可比是 **KKT 矩阵

\[\mathcal{K}=\begin{bmatrix}\nabla_{qq}^2 L & -J_{\mathcal{A}^+}^\top\\ J_{\mathcal{A}^+} & 0\end{bmatrix},\qquad J_{\mathcal{A}^+}=\frac{\partial\phi_{\mathcal{A}^+}}{\partial q}\Big|_{q^\star}.\]

定理(严格互补下强正则 ⟺ KKT 矩阵非奇异):在严格互补假设下,KKT 系统在 \((q^\star,\lambda^\star)\) 强正则,当且仅当 \(\mathcal{K}\) 非奇异。这通常由**二阶充分条件**(\(\nabla_{qq}^2 L\)\(J_{\mathcal{A}^+}\) 的零空间上正定)+ 约束规范 LICQ\(J_{\mathcal{A}^+}\) 行满秩)保证。

这把抽象的 T9 落到接触工程(认知工具 D): - 严格互补 + 二阶条件 + LICQ ⟹ KKT 矩阵非奇异 ⟹ 强正则 ⟹ 接触力 \(\lambda^\star(p)\) 对参数 \(p\)(如目标位姿、外力)Lipschitz 且方向可微依赖 ⟹ 控制器良态、可做灵敏度反传(CI-MPC,§7.7 桥接五)。 - 弱激活(\(\mathcal{A}^0\ne\varnothing\),违反严格互补)则破坏这一切——它正是 §7.3 余导数计算里"L 形拐角"的情形(间隙与力同时为零),KKT 矩阵的活跃集不确定,强正则性失败,接触力对扰动可能非 Lipschitz。这与那个余导数计算(情形 3 失败)完全呼应,从两个角度(余导数 / KKT 矩阵)指向同一个结论:弱激活临界点是接触灵敏度的病态源。

本质洞察:强正则性、Mordukhovich 判据、KKT 矩阵非奇异,是同一件事(接触灵敏度良态)在三个抽象层次的表述——变分分析层(T9 强正则)、集值分析层(T7 余导数判据)、数值线性代数层(KKT 矩阵非奇异 + 二阶条件 + LICQ)。它们在"严格互补"假设下完全等价,且都在"弱激活"时同步失败。理解这个"三位一体",你就能在任意抽象层次诊断接触灵敏度问题:写论文用 T9/T7,做数值用 KKT 矩阵条件数。这是本章理论与工程缝合得最紧密的一处。

⚠️ 常见陷阱

💡 概念误区:误以为 Mordukhovich 次微分是凸集 新手想法:"次微分不都是凸集吗?Clarke 是凸的,Mordukhovich 应该也是。" 实际上:\(\partial_L f(x)\) 是 Fréchet 次梯度的序列**外极限**,一般非凸。正是 Clarke 对它取凸包才得 \(\partial_C f=\text{conv}\,\partial_L f\)。反例 \(f=-|x|\)\(\partial_L f(0)=\{-1,+1\}\)(两个孤立点,非凸),\(\partial_C f(0)=[-1,1]\)(凸包)。 为什么重要:在半光滑 Newton(§6)里,取 \(V\in\partial_B F(x)\)(Bouligand 子微分,也非凸)的元素才能保证 Newton 矩阵非奇异;若误用 Clarke 的凸组合 \(V\in\text{conv}\),则 \(V\) 可能是"奇异的平均"(两个非奇异矩阵的凸组合可以奇异),导致 Newton 步崩溃。这是 §6 选 \(\partial_B\) 而非 \(\partial_C\) 的根本原因。

💡 概念误区:把 Bouligand 子微分的元素当成 Clarke 集合的"代表" 新手想法:"反正 \(\partial_B\subseteq\partial_C\),从 \(\partial_B\) 取一个元素就代表了 Clarke 梯度。" 实际上:\(\partial_B\) 的元素是"选对某个活跃分支后的真实梯度"(极值点),\(\partial_C\) 的内部点是这些极值点的凸组合(不对应任何真实分支)。二者用途不同:\(\partial_B\) 用于 Newton(要真实梯度的非奇异性),\(\partial_C\) 用于最优性(要凸集含 \(0\))。混用会导致:在 Newton 里若用 \(\partial_C\) 内部点会丢非奇异性,在最优性判断里若只用 \(\partial_B\) 会漏判(\(0\) 可能在凸包内但不在 \(\partial_B\) 中,如 \(|x|\)\(0\))。

🧠 思维陷阱:灵敏度分析里图省事用 Clarke 代替 Mordukhovich 新手想法:"Clarke 运算法则全、计算方便,灵敏度分析也用 Clarke 吧。" 实际上:灵敏度分析(如 Mordukhovich 判据 T7 判断 LCP 解映射 Lipschitz)依赖 limiting 法锥的**精确**信息。Clarke 法锥是其凸包,凸化破坏了判据 \(D^*S(0)=\{0\}\) 的充要性——用 Clarke 余导数会得到必要不充分(或充分不必要)的条件,结论不可靠。 正确思维:判断"是什么"(最优性、可行性)可用 Clarke;判断"如何变化"(灵敏度、Lipschitz 模长、解的存在唯一性对扰动的保持)必须用 Mordukhovich。一个口诀:静态问题用 Clarke,动态/参数化问题用 Mordukhovich。

练习

练习 7.3.1(计算题,在草稿纸上完成) 对函数 \(f(x)=|x_1|-|x_2|\)(在 \(\mathbb{R}^2\))在原点 \((0,0)\),分别计算 \(\hat\partial f\)\(\partial_B f\)\(\partial_L f\)\(\partial_C f\),并验证层级关系 \(\hat\partial\subseteq\partial_L\subseteq\partial_C\)\(\partial_C=\text{conv}\,\partial_L\)。(提示:\(f\) 在四个象限内部光滑,梯度为 \((\pm1,\mp1)\) 共四种组合;注意 \(-|x_2|\) 的凹性使 Fréchet 次微分可能为空。)

练习 7.3.2(证明题) 证明:若 \(f\) 是凸函数,则四种次微分全部相等 \(\hat\partial f=\partial_L f=\partial_B f=\partial_C f\),且都等于凸分析的次微分。(提示:凸函数处处有下方支撑线,Fréchet 次微分非空且等于凸次微分;凸函数正则,Clarke 不增大。这解释了为什么在凸优化里"次微分"无歧义——四种重合。)

练习 7.3.3(接触应用,研究级开放题) 考虑 LCP \(0\le x\perp Mx+q\ge0\) 的解映射 \(S(q)\)。(a) 当 \(M\) 是 P-matrix(所有主子式正)时,经典结果说解唯一,故 \(S\) 单值;查阅 Mordukhovich 判据 T7,叙述如何用 \(D^*S(\bar q|\bar x)(0)=\{0\}\) 证明 \(S\) 局部 Lipschitz(不必完成全部细节,写出证明骨架即可)。(b) 当 \(M\) 不是 P-matrix(如 Coulomb 摩擦导致的非对称 \(M\),专题 2),解可能多值或不存在(Painlevé);此时 Aubin 性质可能失败,说明这对应物理上的什么现象(接触力对微小扰动剧烈跳变 / 无解)。(c) 讨论:为什么这个分析必须用 Mordukhovich 余导数而非 Clarke?


§7.4 微分包含与 Filippov 解:当右端不连续时"解"是什么 ⭐⭐⭐

动机:摩擦让微分方程的右端不连续,经典解消失了

前面 §7.2、§7.3 处理的是层次一(静态)非光滑——给不可微函数配导数集合。现在转向层次二(动态):当非光滑进入动力学,使微分方程的**右端不连续**时,连"解"是什么都要重新定义。这是接触力学动态行为(stick-slip 轨迹、滑模)的数学基础。

看一个具体的、最小的例子——干摩擦下的滑块。一个质量为 \(m\) 的滑块在水平面上,受常值外力 \(F\),摩擦系数 \(\mu\),法向力 \(N=mg\)。设位置 \(x\)、速度 \(v=\dot x\)。牛顿方程是

\[m\dot v = F - \mu mg\,\text{sign}(v),\]

其中 \(\text{sign}(v)\) 是经典符号函数(\(v>0\)\(+1\)\(v<0\)\(-1\)\(v=0\) 处?)。问题立刻来了:这个方程的右端在 \(v=0\) 处不连续(从 \(+\) 侧趋于 \(F-\mu mg\),从 \(-\) 侧趋于 \(F+\mu mg\),二者不等)。

现在假设 \(|F|<\mu mg\)(外力不足以克服最大静摩擦)。物理上我们知道:滑块应该**保持静止**(\(v\equiv0\))。但数学上,经典解(绝对连续的 \(x(t)\) 使方程几乎处处成立)能给出 \(v\equiv0\) 吗?如果 \(v\equiv0\),则 \(\dot v=0\),方程要求 \(0=F-\mu mg\,\text{sign}(0)\),即 \(\text{sign}(0)=F/(\mu mg)\)。但经典 \(\text{sign}(0)\) 通常定义为 \(0\),给出 \(0=F\ne0\),矛盾!经典解理论无法表达"静止"这个最基本的物理事实。

根源在于:经典 \(\text{sign}(0)=0\)(单值)太狭窄,它不允许摩擦力在 \(v=0\) 时取 \([-\mu mg,+\mu mg]\) 中的值来平衡外力 \(F\)。我们需要把右端"加厚"成一个集合——这正是 §7.2 例 2 算出的集值符号函数 \(\text{Sign}(v)\)!把方程改写为

\[m\dot v \in F - \mu mg\,\text{Sign}(v),\quad \text{Sign}(0)=[-1,+1].\]

现在在 \(v=0\) 处,右端是集合 \(F-\mu mg[-1,+1]=[F-\mu mg,\,F+\mu mg]\),由于 \(|F|<\mu mg\),这个区间**包含 \(0\)!于是 \(\dot v=0\in\) 右端,\(v\equiv0\) 成为合法解。物理静止得救了。这个"把不连续右端加厚成集值右端"的对象,就是**微分包含(differential inclusion, DI)

本质洞察:微分包含 \(\dot x\in F(x)\) 不是"模糊版"的微分方程,而是**比微分方程更基本**的对象。微分方程 \(\dot x=f(x)\) 是 DI 在 \(F(x)=\{f(x)\}\) 单值时的特例。当 \(f\) 不连续,强行保持单值会导致解不存在(如上例的静止);把右端加厚成集值,解就回来了。这与 §7.2 的哲学完全一致——"用集合换确定性"在静态是次微分,在动态就是微分包含。接触力学的动态本质上是微分包含,而非微分方程,这一认知转变是理解专题 3、5 的前提。

如果不这样做会怎样:三种处理不连续右端的失败尝试

尝试一:在不连续面上"随便定义"右端的值。 比如规定 \(\text{sign}(0)=0\)。失败:如上所示,无法表达静止;更一般地,无论你给 \(\text{sign}(0)\) 赋什么单一值,都会在某些 \(F\) 下与物理矛盾(你赋的值固定了,但物理要求的摩擦力随 \(F\) 变化)。

尝试二:正则化(光滑化)右端。\(\tanh(v/\varepsilon)\) 替代 \(\text{sign}(v)\),得到光滑 ODE,经典解存在唯一。失败:(1) 静止变成"缓慢蠕动"(§7.1 已述);(2) \(\varepsilon\to0\) 时刚性爆炸(练习 7.1.3);(3) 最致命的——正则化解在 \(\varepsilon\to0\) 时收敛到的极限,恰好就是微分包含的 Filippov 解(这是 Filippov 解的合理性来源之一),所以正则化只是"绕远路逼近 Filippov 解",不如直接用 DI。

尝试三:事件驱动(检测 \(v=0\) 时刻,切换方程)。 失败:在滑模/stick-slip 中,轨迹可能"粘"在不连续面 \(v=0\) 上一整段时间(不是瞬间穿过),事件驱动无法处理这种"驻留在切换面上"的情形——它需要的恰恰是 DI 在切换面上的凸组合解(下面的滑模)。

历史:Filippov 1960 的凸化构造

A. F. Filippov 从 1960 年起研究右端不连续的微分方程,核心贡献是给出了一个**典范的凸化构造**,把任意(可测、局部有界)的不连续右端 \(f\) 转化为一个集值映射 \(K[f]\),使得"\(\dot x\in K[f](x)\) 的解"成为不连续 ODE 的合理解概念。他 1988 年的专著 Differential Equations with Discontinuous Righthand Sides(Kluwer)是这一理论的根,深刻影响了滑模控制(Utkin)和接触力学(stick-slip、hybrid 系统)。Filippov 构造的精妙在于:它**不依赖于 \(f\) 在不连续面上的具体值**(那些值是零测的,物理上无意义),只看 \(f\) 在不连续面附近的极限行为,取凸包——这与 Clarke Gradient Formula"排除零测集、取可微点极限的凸包"如出一辙,二者确有深刻对偶(下面)。

理论:Filippov 凸化与 Filippov 解

定义 7.4.1(Filippov 集值映射 / 凸化算子)\(f:\mathbb{R}^n\to\mathbb{R}^n\) 可测、局部有界(不要求连续)。\(f\)\(x\) 的 Filippov 集值映射定义为

\[\boxed{K[f](x) := \bigcap_{\delta>0}\ \bigcap_{\mu(S)=0}\ \overline{\text{conv}}\,\big\{f(y) : y\in B(x,\delta)\setminus S\big\},}\]

其中 \(B(x,\delta)\) 是半径 \(\delta\) 的球,内层交遍历所有零测集 \(S\)(排除这些"坏点"),\(\overline{\text{conv}}\) 是闭凸包。逐层解读:

  • 最内层 \(\{f(y):y\in B(x,\delta)\setminus S\}\)\(x\) 附近(排除零测集 \(S\))所有点的右端值。
  • \(\overline{\text{conv}}\)(闭凸包):把这些值的所有凸组合都纳入。这是凸化的核心——它允许"两侧速度场的加权平均",正是滑模的数学机制。
  • \(\bigcap_{\mu(S)=0}\)(对所有零测集取交):排除任意零测集的影响,使定义不依赖 \(f\) 在零测集上的值。
  • \(\bigcap_{\delta>0}\)(对 \(\delta\) 取交,即 \(\delta\to0\):聚焦到 \(x\) 的局部行为。

定义 7.4.2(Filippov 解) 不连续 ODE \(\dot x=f(x)\)Filippov 解,是指绝对连续函数 \(x:[0,T]\to\mathbb{R}^n\),使得对几乎所有 \(t\)

\[\dot x(t)\in K[f](x(t)).\]

即:Filippov 解是凸化后的微分包含 \(\dot x\in K[f](x)\) 的(Carathéodory 意义的)解。

计算 \(K[f]\) 的实用规则:实际中 \(f\) 通常分片连续,由若干光滑区域 \(\mathcal{R}_i\) 拼成,区域间是不连续面(switching surface)。则: - 在 \(\mathcal{R}_i\) 内部\(f\) 连续点):\(K[f](x)=\{f(x)\}\)(单值,退化为经典)。 - 在两个区域 \(\mathcal{R}_1,\mathcal{R}_2\) 的**分界面**上(点 \(x\)):\(K[f](x)=\text{conv}\{f_1(x),f_2(x)\}=\{(1-\alpha)f_1(x)+\alpha f_2(x):\alpha\in[0,1]\}\),其中 \(f_i\) 是从 \(\mathcal{R}_i\) 一侧的极限。即分界面上的速度场是两侧速度场的**线段**(所有凸组合)。

滑模(sliding mode):解被锁在切换面上

Filippov 凸化最重要的动态现象是**滑模**——轨迹不是穿过切换面,而是"滑行"在切换面上一段时间。这是 stick-slip、滑模控制、足式机器人脚底"既不完全粘也不完全滑"等现象的统一数学描述。

设切换面 \(\Sigma=\{x:\sigma(x)=0\}\)\(\sigma\) 是光滑标量函数,\(\nabla\sigma\ne0\)),把空间分为 \(\sigma<0\)(区域 1,速度场 \(f_1\))和 \(\sigma>0\)(区域 2,速度场 \(f_2\))。在 \(\Sigma\) 上,Filippov 速度是 \(f_\alpha=(1-\alpha)f_1+\alpha f_2\)。关键问题:轨迹会穿过 \(\Sigma\) 还是滑行在 \(\Sigma\) 上?

判据看两侧速度场在 \(\Sigma\) 法向 \(\nabla\sigma\) 上的投影: - 若 \(\langle\nabla\sigma,f_1\rangle>0\)\(\langle\nabla\sigma,f_2\rangle>0\)(两侧都"想穿过去",同向):轨迹**横穿(crossing)\(\Sigma\),不滑模。 - 若 \(\langle\nabla\sigma,f_1\rangle>0\)\(\langle\nabla\sigma,f_2\rangle<0\)(区域 1 想往 \(\sigma>0\) 走、区域 2 想往 \(\sigma<0\) 走,**两侧速度场都指向 \(\Sigma\),互相"挤压"):轨迹被锁在 \(\Sigma\) 上,进入**滑模(sliding)**。

滑模时,存在唯一的 \(\alpha^\star\in(0,1)\) 使 Filippov 速度切于 \(\Sigma\)(法向分量为零):

\[\langle\nabla\sigma,\,(1-\alpha^\star)f_1+\alpha^\star f_2\rangle=0 \;\Rightarrow\; \alpha^\star=\frac{\langle\nabla\sigma,f_1\rangle}{\langle\nabla\sigma,f_1-f_2\rangle}.\]

\(\alpha^\star\)Filippov 凸系数,对应的速度 \(f_{\alpha^\star}\) 是**等效动力学(equivalent dynamics)**——轨迹沿 \(\Sigma\) 滑行所遵循的有效速度场。

阶段小结:到这里我们完成了 Filippov 解理论的核心——用凸化算子 \(K[f]\) 把不连续右端加厚为集值,定义了 Filippov 解,并区分了横穿与滑模两种行为。接下来要把这套抽象理论落到接触力学的运行示例(stick-slip 滑块),看 \(\alpha^\star\) 在那里的物理含义。

运行示例回归:摩擦滑块的 stick-slip。 回到动机里的滑块 \(m\dot v\in F-\mu mg\,\text{Sign}(v)\)。切换面是 \(\Sigma=\{v=0\}\)\(\sigma=v\)\(\nabla\sigma=1\),针对状态 \((x,v)\) 中的 \(v\) 分量)。两侧速度场(指 \(\dot v\)):\(v>0\)\(f_2=\frac1m(F-\mu mg)\)\(v<0\)\(f_1=\frac1m(F+\mu mg)\)。 - 若 \(F>\mu mg\)\(f_1,f_2\) 同正(都加速向正),横穿——滑块持续加速滑动,无静止。 - 若 \(|F|<\mu mg\)\(f_1>0\)(从负速度区被推向 \(v=0\))、\(f_2<0\)(从正速度区被推向 \(v=0\)),两侧都指向 \(\Sigma\)——滑模!等效动力学 \(\alpha^\star\) 给出 \(f_{\alpha^\star}=0\),即 \(\dot v=0\),滑块**保持静止(stick)**。这就是静摩擦!Filippov 凸系数 \(\alpha^\star\) 对应的是"摩擦力在 \([-\mu mg,\mu mg]\) 内取的恰好平衡 \(F\) 的那个值"。

这是本章最美的统一之一:宏观的 stick(静摩擦保持静止)= Filippov 解的滑模(轨迹锁在 \(v=0\) 上);宏观的 slip(滑动)= 横穿。Coulomb 摩擦的粘滑切换,在 Filippov 理论里就是横穿与滑模的切换。

完整走一遍:stick-slip 振荡器(传送带上的弹簧滑块)

把 Filippov 理论落到一个完整、有丰富动态的经典例子——stick-slip 振荡器,它是地震断层、刹车尖叫、提琴弓弦发声的统一模型,也是 Filippov 解"横穿与滑模交替"的最佳演示。

设定:质量 \(m\) 的滑块由弹簧(刚度 \(k\))连到固定墙,置于以恒定速度 \(v_b>0\) 移动的传送带上。摩擦系数 \(\mu\)、法向力 \(N\),最大静摩擦 \(F_s=\mu N\)。设滑块位置 \(x\)(弹簧自然长度处 \(x=0\)),速度 \(v=\dot x\)相对速度 \(v_{rel}=v-v_b\) 决定摩擦方向。运动方程:

\[m\dot v = -kx - \mu N\,\text{Sign}(v_{rel}) = -kx-\mu N\,\text{Sign}(v-v_b).\]

切换面 \(\Sigma=\{v=v_b\}\)(滑块与传送带同速,相对静止)。这是一个**两阶段极限环**:

阶段一(stick,粘滞):当滑块与传送带同速 \(v=v_b\),若弹簧力 \(|{-kx}|\le\mu N\)(不超过最大静摩擦),滑块**被传送带带着匀速移动**(\(v\equiv v_b\),滑模!)。此阶段是 Filippov 滑模:两侧摩擦力场把轨迹锁在 \(v=v_b\) 上。滑块随传送带前进 \(x\) 增大,弹簧力 \(-kx\)(拉回墙)增大(绝对值)。stick 持续到弹簧力达到最大静摩擦\(kx=\mu N\),即 \(x=x_{slip}:=\mu N/k\)

阶段二(slip,滑动):当 \(x>x_{slip}\),弹簧力超过最大静摩擦,滑块开始相对传送带向后滑(\(v<v_b\)\(v_{rel}<0\),摩擦力 \(+\mu N\) 向前)。运动方程变为光滑 ODE:

\[m\dot v=-kx+\mu N\quad(v<v_b).\]

这是一个**平移的简谐振子**(平衡点在 \(x=\mu N/k=x_{slip}\))。滑块荡出去再荡回来,速度 \(v\) 先减后增,当 \(v\) 重新升到 \(v_b\) 时——回到 stick 阶段。如此 stick→slip→stick 循环,形成 stick-slip 极限环(锯齿形 \(x(t)\)、间歇的 \(v(t)\))。

逐步分析极限环的一个周期(设初始处于 stick,\(x(0)=-x_{slip}\) 即弹簧另一端到最大静摩擦): - Step 1(stick 段)\(v=v_b\)\(x\)\(-x_{slip}\) 线性增到 \(+x_{slip}\),耗时 \(T_{stick}=2x_{slip}/v_b=2\mu N/(kv_b)\)。 - Step 2(slip 起点)\(x=x_{slip}\) 时弹簧力 \(=\mu N\) 恰好克服静摩擦,进入 slip,初速度 \(v=v_b\)。 - Step 3(slip 段):简谐运动绕 \(x_{slip}\),角频率 \(\omega=\sqrt{k/m}\)。滑块荡出(\(x\) 先增后减),\(v\) 降到负值再回升。由能量/对称性,当 \(v\) 回到 \(v_b\)\(x\) 回到某个 \(x<x_{slip}\),重新 stick。 - Step 4(回到 stick):循环重复。

Filippov 视角的关键:stick 段是**滑模**(\(v\equiv v_b\) 锁在切换面),slip 段是**自由流动**(离开切换面)。判据:在 \(\Sigma=\{v=v_b\}\) 上,slip 段结束时两侧 \(\dot v\) 是否都指向 \(\Sigma\)?stick 段成立的条件正是 \(|kx|\le\mu N\)(弹簧力在静摩擦区间内),这等价于 Filippov 滑模判据(两侧摩擦场指向 \(\Sigma\))。离开 stick 的临界 \(x=x_{slip}\),正是滑模判据从"满足"转为"不满足"的边界。

本质洞察:stick-slip 振荡器展示了 Filippov 解的全部精髓——它不是"光滑 ODE 偶尔碰到不连续面",而是**滑模(stick)与自由流动(slip)的交替才构成完整动态**。极限环的存在性、周期、振幅,全部依赖正确处理切换面上的滑模——如果用正则化(\(\tanh\))抹平摩擦,stick 段会退化成"缓慢蠕动",极限环的锯齿形被破坏,定性行为错误。这就是为什么研究 stick-slip(刹车尖叫、地震、乐器发声)必须用 Filippov 解而非正则化——非光滑性在这里不是细节,而是现象本身的成因。这也是 §7.1"非光滑是物理本质而非建模缺陷"在动态层面的最强例证。

Filippov 凸化与 Clarke 梯度的对偶

§7.1 历史里提到 Filippov 凸化与 Clarke 梯度"如出一辙"。这里点明这个深刻联系(认知工具 A:双重解读)。考虑势力系统 \(\dot x\in-\partial_C V(x)\),其中 \(V\) 是 Lipschitz 势(如摩擦耗散势 \(V=\mu mg|x|\) 的某种意义)。一方面,\(\partial_C V\) 是 §7.2 的 Clarke 梯度(可微点梯度的凸包);另一方面,\(-\nabla V\) 作为速度场在尖点不连续,其 Filippov 凸化 \(K[-\nabla V]\) 恰好等于 \(-\partial_C V\)。即:

\[K[-\nabla V](x) = -\partial_C V(x)\quad(\text{在 } V \text{ 的不可微点}).\]

两条看似无关的路(静态的"给函数配导数集合"vs 动态的"给不连续右端配解")在这里交汇:Clarke 梯度的凸包构造 = Filippov 速度场的凸化构造,都是"排除零测集、取邻近值的凸包"。这就是 §7.1 历史脉络里 Clarke 路线与 Filippov 路线的数学统一点(专题 3.1 进阶里提到的"与 Clarke 梯度的 Stampacchia 对偶"即指此)。

存在性与解的性质

定理 7.4.3(Filippov 解的存在性)\(f:\mathbb{R}^n\to\mathbb{R}^n\) 可测、局部有界,则微分包含 \(\dot x\in K[f](x)\) 对任意初值 \(x(0)=x_0\) 在某区间 \([0,T]\) 上至少存在一个 Filippov 解(绝对连续)。

存在性的证明思路:\(K[f]\) 由构造保证是**上半连续、非空、紧、凸值**的集值映射,满足微分包含存在性定理(基于集值映射的不动点/选择定理,类似 ODE 的 Peano 定理)的条件。注意:Filippov 解一般不唯一(凸化引入的多值性可能导致多解,如某些 Painlevé 构型)。唯一性需额外条件(如单侧 Lipschitz / 单调性,对应专题 1 的 P-matrix 在动态情形的推广)。

与微分包含的关系:Filippov 解是微分包含 \(\dot x\in F(x)\)\(F=K[f]\) 上半连续凸值)的解。更一般地,微分包含 \(\dot x\in F(x)\) 可以来自多种"加厚"方式:Filippov 凸化 \(K[f]\) 是一种,Krasovskii 正则化(不排除零测集)是另一种,控制系统 \(\dot x=f(x,u),u\in U\) 写成 \(\dot x\in\{f(x,u):u\in U\}\) 也是。它们共享同一套解理论。本章聚焦 Filippov 凸化,因为它直接对应接触摩擦的物理。

运行示例:从头计算一个二维滑模 Filippov 解(继电系统)

前面的 stick-slip 振荡器物理丰富但计算交织在物理里。这里给一个**纯数学、可逐步手算到底**的二维例子,把"判横穿/滑模 → 求凸系数 → 解等效动力学"的完整流程走一遍。它是控制论"继电系统(relay system)"的最小模型,也是练习 7.4.1 的扩展范本(认知工具 A:把抽象定义落到可算实例)。

系统\(\dot x_1=-\,\text{sign}(x_1)+2x_2\)\(\dot x_2=-x_1\)。切换面 \(\Sigma=\{x_1=0\}\)\(\sigma=x_1\)\(\nabla\sigma=(1,0)\))。两侧速度场:

  • 区域 \(x_1>0\)\(f_2=(-1+2x_2,\ -x_1)\),在 \(\Sigma\) 上(\(x_1=0^+\))取极限 \(f_2|_\Sigma=(-1+2x_2,\ 0)\)
  • 区域 \(x_1<0\)\(f_1=(+1+2x_2,\ -x_1)\),在 \(\Sigma\) 上(\(x_1=0^-\))取极限 \(f_1|_\Sigma=(+1+2x_2,\ 0)\)

Step 1:写出 \(\Sigma\) 上的 Filippov 集值映射。 由分片连续的实用规则,\(\Sigma\) 上是两侧极限的凸包:

\[K[f]|_\Sigma=\text{conv}\{f_1|_\Sigma,\ f_2|_\Sigma\}=\big\{((1-2\alpha)+2x_2,\ 0):\alpha\in[0,1]\big\}.\]

(第一分量在 \(1+2x_2\)\(-1+2x_2\) 间线性插值,第二分量恒为 \(0\)。)

Step 2:判横穿还是滑模。 看两侧速度场在法向 \(\nabla\sigma=(1,0)\) 上的投影(即第一分量的符号):

  • \(\langle\nabla\sigma,f_1|_\Sigma\rangle=1+2x_2\)\(\langle\nabla\sigma,f_2|_\Sigma\rangle=-1+2x_2\)
  • 滑模条件(两侧都指向 \(\Sigma\),即 \(f_1\) 法向分量 \(>0\)\(f_2\) 法向分量 \(<0\)):\(1+2x_2>0\)\(-1+2x_2<0\),即 \(-\tfrac12<x_2<\tfrac12\)
  • 在这个 \(x_2\) 区间内,轨迹一旦到达 \(\Sigma\) 就**滑模**;区间外(\(|x_2|>\tfrac12\))两侧同号,横穿

Step 3:求滑模凸系数 \(\alpha^\star\)(让 Filippov 速度切于 \(\Sigma\))。 令第一分量(法向)为零:

\[(1-2\alpha^\star)+2x_2=0\;\Rightarrow\;\alpha^\star=\frac{1+2x_2}{2}.\]

验证 \(\alpha^\star\in(0,1)\):当 \(-\tfrac12<x_2<\tfrac12\)\(\alpha^\star\in(0,1)\) ✓(与 Step 2 滑模区间一致,自洽)。也可直接套 §7.4 公式 \(\alpha^\star=\frac{\langle\nabla\sigma,f_1\rangle}{\langle\nabla\sigma,f_1-f_2\rangle}=\frac{1+2x_2}{(1+2x_2)-(-1+2x_2)}=\frac{1+2x_2}{2}\),结果相同 ✓。

Step 4:解等效动力学(滑模上的约化运动)。 滑模时 \(x_1\equiv0\),代入第二分量方程 \(\dot x_2=-x_1=0\),故 \(x_2\) 在滑模段**保持常值**。即:轨迹滑到 \(\Sigma\) 后,停在当前 \(x_2\) 处(\(x_1=0,x_2=\text{const}\)),这是一个滑模平衡。等效速度 \(f_{\alpha^\star}=(0,0)\)(两分量都为零)。

几何图景:从 \(|x_2|<\tfrac12\) 区域内任一点出发,轨迹螺旋/直线趋向 \(\Sigma=\{x_1=0\}\),触及后被锁住(滑模),停在该 \(x_2\)。这就是继电控制把状态"逼到并锁在"切换面的标准行为——与摩擦滑块"被锁在 \(v=0\)"是同一个 Filippov 机制(练习 7.4.3)。整个计算只用了"取凸包 → 法向投影判据 → 解 \(\alpha^\star\) → 代回求约化动力学"四步,这四步是分析任何 Filippov 滑模系统的通用流程,务必亲手走一遍。

多个切换面相交:凸包从线段升级为多胞形

§7.4 的滑模讨论假设单个切换面 \(\Sigma\)(两个区域)。但机器人有**多个接触/摩擦同时切换**(如多足同时触地、多指同时粘滑),对应**多个切换面相交**。此时 Filippov 凸化的几何更丰富,是 Dieci–Lopez 等人(搜索结果中"Sliding Motion in Filippov Differential Systems",SIAM J. Numer. Anal.)研究的难点。

设有两个切换面 \(\Sigma_1=\{\sigma_1=0\}\)\(\Sigma_2=\{\sigma_2=0\}\),把局部空间分为四个区域,速度场分别为 \(f_{++},f_{+-},f_{-+},f_{--}\)(下标表示 \(\sigma_1,\sigma_2\) 的符号)。在两面的**交线** \(\Sigma_1\cap\Sigma_2\) 上,Filippov 集值映射是四个速度场的凸包:

\[K[f] = \text{conv}\{f_{++},f_{+-},f_{-+},f_{--}\}.\]

这是一个**四点凸包(四面体或四边形),而非单面情形的线段(两点凸包)。求滑模等效速度(切于交线,法向分量为零)现在需要解一个**两个方程的线性系统(在 \(\nabla\sigma_1,\nabla\sigma_2\) 两个法向上同时为零),凸系数 \((\alpha_{++},\alpha_{+-},\alpha_{-+},\alpha_{--})\) 满足 \(\sum\alpha=1,\alpha\ge0\) 且两个相切条件——一般有**多解**(凸包维数高于约束数),这导致 Filippov 解在多面交线上**不唯一**!

物理对应(认知工具 D):多接触同时切换时(如四足机器人四脚同时触地的瞬间),系统状态可能有多个一致的演化方向——这正是 Filippov 解多值性的物理体现。工程上的应对:(1) 加入更多物理(如接触顺序的微小时间差打破对称);(2) 用时步法(专题 3)的隐式离散,它通过求解整步互补问题"自动选择"一个一致解,避开 Filippov 多值的显式处理。这解释了为什么多接触仿真比单接触难得多——不只是计算量,而是解概念本身在交线上多值。

微分包含的 Lyapunov 稳定性:非光滑控制的根基

微分包含还需要稳定性理论(滑模控制、接触系统的镇定都要证稳定)。经典 Lyapunov 理论(要求 \(V\) 光滑、\(\dot V<0\))在非光滑系统失效,需要推广。

定理 7.4.4(非光滑 Lyapunov 定理,基于 Clarke 梯度) 设微分包含 \(\dot x\in F(x)\)\(F\) 上半连续凸值),\(V:\mathbb{R}^n\to\mathbb{R}\) 局部 Lipschitz、正定。若沿所有解的"集值导数"

\[\dot{\bar V}(x):=\{\langle\xi,w\rangle:\xi\in\partial_C V(x),\ w\in F(x)\}\]

满足 \(\max\dot{\bar V}(x)<0\)(对 \(x\ne0\)),则原点渐近稳定。

这里用了 §7.2 的 Clarke 梯度 \(\partial_C V\)——非光滑 Lyapunov 函数(如 \(V=\|x\|_1\)\(V=\max_i|x_i|\),在滑模控制中常用)的"导数"是集值的,稳定性要求**集值导数的最大值**(最悲观方向)仍为负。这是 §7.2 Clarke 梯度在动态稳定性分析中的直接应用,也是滑模控制鲁棒性证明的标准工具(Bacciotti–Ceragioli 等人发展)。

接触应用:足式机器人的接触镇定、抓取的力闭合稳定性,常用非光滑 Lyapunov 函数(因为接触约束让光滑 Lyapunov 函数难以构造)。本定理把 §7.2(静态广义梯度)与 §7.4(动态微分包含)缝合成"非光滑系统的稳定性分析"完整工具——这是本章两大层次(静态/动态)协同工作的又一例证。

Filippov 凸化不是唯一选择:与 Krasovskii、Utkin 的对比

读到这里你可能会问:把不连续右端"加厚成集值"的方式只有 Filippov 凸化一种吗?答案是否定的——理解这一点对避免接触/滑模建模中的隐蔽错误至关重要(认知工具 B:对比性思维)。这里把三种主流"解概念/正则化"并置,说清它们的边界(像与不像,R7)。

对比一:Filippov 凸化 vs Krasovskii 正则化。 二者都对不连续右端取闭凸包,区别**只在一个交集**:

\[K_{\text{Fil}}[f](x)=\bigcap_{\delta>0}\bigcap_{\mu(S)=0}\overline{\text{conv}}\,f\big(B(x,\delta)\setminus S\big),\qquad K_{\text{Kras}}[f](x)=\bigcap_{\delta>0}\overline{\text{conv}}\,f\big(B(x,\delta)\big).\]

Krasovskii 不排除零测集 \(S\)——它对所有邻近点(包括不连续面本身那些零测点)取凸包。后果:当 \(f\) 在不连续面上被赋了某个"古怪"的单值(如人为令 \(\text{sign}(0)=5\)),Krasovskii 会把这个孤立值也纳入凸包,而 Filippov 会排除它。物理上 Filippov 更合理——不连续面是零测集,\(f\) 在那里的取值"无物理意义"(你无法在传感器上分辨"速度恰好为零"这个零测事件),应当排除。结论:

\[K_{\text{Fil}}[f](x)\subseteq K_{\text{Kras}}[f](x),\]

且当 \(f\) 在不连续面上的取值"行为良好"(等于某侧极限或落在凸包内)时二者相等。接触摩擦的 \(\text{Sign}\) 满足这一点,故两套理论给出相同的 stick-slip 解——这就是为什么实践中很少需要区分二者。但当你**人为设计**控制律的开关值时(如把 \(\text{sign}(0)\) 设成一个不在 \([-1,1]\) 的值),二者会分叉,此时必须明确用哪个。

对比二:Filippov 解 vs Utkin 等效控制(滑模的"乘积歧义")。 滑模时,Filippov 给等效速度 \(f_{\alpha^\star}\)(凸组合,§7.4 滑模小节)。控制论里 Utkin 用**等效控制(equivalent control):把控制 \(u\) 解出使 \(\dot\sigma=0\),再代回。对**控制仿射**系统 \(\dot x=g(x)+h(x)u\)\(u=\text{sign}(\sigma)\),二者给出**相同**的滑动动力学。但对**控制非仿射**系统(\(u\) 以乘积/非线性方式进入,如 \(\dot x=g(x)+h(x)\,u\,\phi(x,u)\)),Filippov 凸化(先取 \(u\in[-1,1]\) 再算 \(\dot x\) 集合的凸包)与 Utkin 等效控制(先解 \(u_{eq}\) 再代回)**可能不一致——这就是著名的 Aizerman–Pyatnitskii 歧义

本质洞察:"把不连续加厚成集值"看似只有一种自然做法,实则是一个**有选择的建模决策**。对接触摩擦(控制仿射、\(\text{Sign}\) 行为良好),Filippov、Krasovskii、Utkin 三者一致,你可以放心混用。但一旦系统是控制非仿射的(如某些气动/液压执行器、含乘性噪声的接触阻抗),三种解概念分叉,必须显式声明用哪个——否则你"证明"的稳定性可能对应一个与仿真器实际行为不同的解。这是 R7 语言精确性在解概念层面的体现:"不连续系统的解"不是一个无歧义的词,写论文时必须标明 Filippov / Krasovskii / Utkin。 接触力学之所以能岁月静好地不区分,是因为 Coulomb 摩擦恰好落在三者一致的"良性"区域。

完整走一遍:两面相交的滑模等效速度(多接触切换的最小模型)

§7.4 前面给了两面相交的凸包升级(线段→四面体),但没算等效速度。这里用一个最小可手算的二维例子把它走通,它是"两个接触同时在粘滑边界"的抽象(认知工具 A:把抽象的多面交线落到可算实例)。

设定:二维状态 \(x=(x_1,x_2)\),两个切换面 \(\Sigma_1=\{x_1=0\}\)\(\sigma_1=x_1\)\(\nabla\sigma_1=(1,0)\))、\(\Sigma_2=\{x_2=0\}\)\(\sigma_2=x_2\)\(\nabla\sigma_2=(0,1)\)),交于原点。四个象限的速度场取(指向原点的简单设计):

\[f_{++}=(-1,-1),\quad f_{+-}=(-1,+1),\quad f_{-+}=(+1,-1),\quad f_{--}=(+1,+1),\]

(下标 \(\pm\pm\)\(\sigma_1,\sigma_2\) 的符号;每个场都"指向"两条轴)。在交线(原点)上,Filippov 集值映射是四点凸包 \(\text{conv}\{f_{++},f_{+-},f_{-+},f_{--}\}\),即正方形 \([-1,1]^2\)

求等效速度:滑模锁在交线(即原点这一点,二维交"线"退化为点;为看清机制,设想 \(x_2\) 仍可演化的三维版,这里取交线为 \(\{x_1=0\}\) 上的滑动)。等效速度 \(f_{eq}=\sum\alpha_{ij}f_{ij}\) 须满足 \(\sum\alpha=1,\alpha\ge0\),且在**两个法向**上分量为零(同时切于 \(\Sigma_1,\Sigma_2\)):

\[\langle\nabla\sigma_1,f_{eq}\rangle=0,\quad\langle\nabla\sigma_2,f_{eq}\rangle=0\;\Rightarrow\; f_{eq,1}=0,\ f_{eq,2}=0\;\Rightarrow\; f_{eq}=(0,0).\]

代入四点凸组合:\(f_{eq,1}=-\alpha_{++}-\alpha_{+-}+\alpha_{-+}+\alpha_{--}=0\)\(f_{eq,2}=-\alpha_{++}+\alpha_{+-}-\alpha_{-+}+\alpha_{--}=0\),配合 \(\sum\alpha=1\)。这是 3 个方程、4 个未知数——欠定!通解是一维仿射族,例如 \(\alpha_{++}=\alpha_{--}=s\)\(\alpha_{+-}=\alpha_{-+}=\tfrac12-s\)\(s\in[0,\tfrac12]\) 保证非负)。所有这些 \(\alpha\) 都给出同一个等效速度 \(f_{eq}=(0,0)\),但凸系数本身不唯一。

这说明什么(认知工具 D):等效速度(轨迹的实际走向)唯一(这里 \(=0\),停在原点),但"四个速度场各贡献多少"(凸系数 \(\alpha\)不唯一。物理上,\(\alpha_{ij}\) 对应"四个接触状态各占多少比例",它在交线上不可观测、不唯一——这正是 §7.4 多面交线"Filippov 解多值"的精确机制:多值性出现在凸系数(不可观测的内部分配)层面,而非轨迹(可观测的宏观运动)层面,除非约束数少于凸包维数导致连等效速度也不唯一。对四足同时触地,这意味着"宏观质心轨迹可能确定,但四脚各自承担的冲量分配不唯一"——工程上要靠额外物理(接触刚度差、微小时序差)或隐式时步法的整步求解来挑一个解。

⚠️ 常见陷阱

💡 概念误区:以为不连续 ODE 的解可以靠"在不连续面上定义右端值"解决 新手想法:"\(\text{sign}(0)\) 没定义?那我定义 \(\text{sign}(0)=0\) 不就行了,方程就有解了。" 实际上:在零测的不连续面上给右端赋任何单一值,都无法表达物理(如静摩擦需要 \(\text{sign}(0)\) 取依赖外力的值 \(F/(\mu mg)\))。正确做法是 Filippov 凸化——把右端加厚成集值 \(\text{Sign}(0)=[-1,1]\),让解自己"选"合适的值。 为什么重要:滑模控制、stick-slip、足式机器人接触切换全靠 Filippov 解描述;用"赋单值"的错误方法,会得到不存在解或错误轨迹,仿真表现为"卡在切换面附近高频抖振"(chattering),其实是没正确实现滑模。

💡 概念误区:把 Filippov 解的滑模当成"数值抖振"而去消除它 新手想法:"仿真在 \(v=0\) 附近来回跳,这是 bug,我要加阻尼/平滑把它压掉。" 实际上:滑模(轨迹锁在切换面上)是**物理正确的**(对应静摩擦保持静止);数值上表现为抖振是因为离散积分器没有正确处理 Filippov 凸组合(在切换面上应取等效速度 \(f_{\alpha^\star}\),而非在两侧速度间硬切换)。正确的处理是用专门的滑模积分器或时步法(专题 3 的 Moreau–Jean 隐式格式天然处理这点)。 为什么重要:盲目加阻尼/平滑会重新引入 §7.1 的正则化弊病(蠕动、刚性);正确识别"这是物理滑模而非数值 bug",才能选对积分方法。

🧠 思维陷阱:认为微分包含只是"理论玩具",工程上不需要 新手想法:"微分包含太抽象,工程仿真用光滑 ODE + 小步长就够了。" 实际上:现代接触仿真器(Siconos、Moreau–Jean 格式、专题 3)的数学基础**就是**微分包含(及其测度推广 §5)。它们不是"光滑 ODE + 修正",而是直接离散微分包含。理解微分包含,才能理解为什么这些仿真器用"速度-冲量"变量、用隐式格式、为什么它们在 stick-slip 上比正则化方法稳定得多。 正确思维:微分包含是接触动力学的"母语",光滑 ODE 是它的特例(在无接触段)。掌握母语,才能读懂专题 3 的所有设计选择。

练习

练习 7.4.1(计算题,在草稿纸上完成) 对二维系统 \(\dot x_1=-\text{sign}(x_1)\)\(\dot x_2=x_1\)(一个典型的滑模例子):(a) 写出切换面 \(\Sigma=\{x_1=0\}\) 上的 Filippov 集值映射 \(K[f]\);(b) 判断从初值 \((1,0)\) 出发的轨迹是横穿还是滑模到达 \(\Sigma\) 后的行为;(c) 若滑模,求等效动力学(\(x_1\equiv0\)\(x_2\) 如何演化)。

练习 7.4.2(接触应用,证明题) 对摩擦滑块 \(m\dot v\in F-\mu mg\,\text{Sign}(v)\),严格证明:当 \(|F|<\mu mg\) 时,\(v(t)\equiv0\)(从 \(v(0)=0\) 出发)是 Filippov 解;当 \(F>\mu mg\) 时,\(v\equiv0\) 不是 Filippov 解(滑块必加速)。(提示:检验 \(\dot v=0\) 是否属于 \(\frac1m(F-\mu mg\,\text{Sign}(0))=\frac1m[F-\mu mg,F+\mu mg]\)。)

练习 7.4.3(开放思考题) 本节证明了"宏观静摩擦 = Filippov 滑模"。请反过来思考:滑模控制(sliding mode control)中,工程师**主动设计**一个不连续控制律 \(u=-k\,\text{sign}(\sigma(x))\) 把系统轨迹"逼"到滑模面 \(\sigma=0\) 上滑行,从而获得鲁棒性。这与摩擦的"被动滑模"在数学上是同一个 Filippov 机制吗?二者的相同点和不同点各是什么?(提示:相同——都是两侧速度场指向切换面导致滑模;不同——摩擦的切换面由物理(\(v=0\))决定,控制的切换面由设计者选(\(\sigma(x)=0\) 可以是任意期望流形)。这正是 R6A 类比的"像与不像"。)

练习 7.4.4(计算题,在草稿纸上完成) 仿照"运行示例:二维滑模 Filippov 解"的四步流程,分析继电系统 \(\dot x_1=-2\,\text{sign}(x_1)+x_2\)\(\dot x_2=-x_1+1\)。(a) 写出 \(\Sigma=\{x_1=0\}\) 上的 Filippov 集值映射;(b) 求滑模成立的 \(x_2\) 区间;(c) 求滑模凸系数 \(\alpha^\star(x_2)\);(d) 解滑模上的等效动力学(\(x_1\equiv0\)\(x_2\) 如何演化),并指出是否存在滑模平衡点。

练习 7.4.5(对比辨析题,开放性) §7.4 给出了 Filippov、Krasovskii、Utkin 三种"加厚不连续右端"的方式。请构造一个**控制非仿射**的标量系统(如 \(\dot x=a(x)+b(x)\,u\,(1+cu)\)\(u=\text{sign}(\sigma)\)),使 Filippov 凸化的解动力学与 Utkin 等效控制的解动力学**不同**(Aizerman–Pyatnitskii 歧义)。明确写出两者的等效动力学表达式,并讨论:若你在仿真器里用"先解 \(u_{eq}\) 再代回",而在论文里用 Filippov 凸化证稳定,会出现什么不一致?(这道题训练 R7 解概念的精确声明。)

练习 7.4.6(综合应用题,需结合接触) 把"四步滑模流程"应用到接触:考虑一个箱子在斜面上、由切向摩擦决定下滑还是静止。(a) 写出切向运动方程含 \(\text{Sign}(v_t)\) 的微分包含;(b) 用四步流程判定"箱子静止(stick)"对应的斜面倾角条件(即静摩擦判据),并说明它如何对应 Filippov 滑模判据;(c) 当倾角超过临界值,箱子开始下滑(横穿),求等效下滑加速度。验证你的临界倾角与经典"\(\tan\theta_c=\mu\)"一致——这把本章抽象的 Filippov 滑模与中学物理的斜面摩擦缝合起来。


§7.5 测度微分包含与 Moreau 扫动过程:当速度也跳变 ⭐⭐⭐⭐

动机:碰撞让速度跳变,连微分包含都不够了

§7.4 的 Filippov 解是**绝对连续**的——速度 \(v(t)\) 虽然不光滑,但至少连续(不跳变)。这对 stick-slip(速度连续地从滑变粘)够用。但接触力学还有一个更"硬"的现象——刚性碰撞,它让速度**不连续地跳变**(§7.1 来源三)。此时连 Filippov 解都不够,必须再上一个台阶:测度微分包含。

回到 §7.1 的例子:脚以速度 \(v^-<0\) 撞向刚性地面,完全非弹性碰撞后 \(v^+=0\)。速度在碰撞时刻 \(t^\star\) 跳变,所以 \(v(t)\) 不是绝对连续的(它有跳点),Filippov 解理论(要求绝对连续)不适用。更要命的是加速度:\(\dot v\)\(t^\star\) 处是 Dirac 测度 \((v^+-v^-)\delta_{t^\star}\)(一个有限的动量改变发生在零时间内)。经典的 \(\dot v\in F\)(无论 \(F\) 多大都是有限集合)无法容纳 Dirac。

我们需要把微分包含里的"\(\dot v\)"从"函数"提升为"测度"。即不再写 \(\dot v\in F\),而是写 \(dv\in\ldots\)\(dv\) 是速度的微分测度,可含 Dirac)。这就是**测度微分包含(measure differential inclusion, MDI)**,由 Moreau 引入以严格描述含碰撞的刚体动力学。它是本章理论深度的另一个顶点,也是专题 3 时步法的直接数学根基。

本质洞察:从"微分方程"到"微分包含"再到"测度微分包含",是一个**解的正则性逐级降低、而数学对象逐级提升**的阶梯。微分方程:解 \(C^1\)(速度可微)。微分包含:解绝对连续(速度连续但不可微,stick-slip)。测度微分包含:解仅有界变差(BV,速度可跳变,碰撞)。每降一级正则性,就需要把导数提升一级(导数 → 集值 → 测度)。接触力学的完整动力学恰好处在最底层——速度是 BV 函数,加速度是测度。专题 3 的时步法之所以以"速度-冲量"为基本变量、用积分(测度)形式而非微分形式,根源就是动力学本质上是 MDI。 这是本章对专题 3 最重要的理论贡献。

如果不这样做会怎样:用有限加速度描述碰撞的失败

尝试:把碰撞建模为"很大但有限的加速度"。 即假设碰撞在很短时间 \(\Delta\tau\) 内完成,加速度 \(\approx(v^+-v^-)/\Delta\tau\)(很大但有限)。失败:(1) 这就是 penalty/正则化(§7.1),\(\Delta\tau\to0\) 时加速度 \(\to\infty\),数值刚性爆炸;(2) 它需要知道碰撞的"内部细节"(接触如何在 \(\Delta\tau\) 内演化),而刚体假设下这个细节不存在(碰撞是瞬时的);(3) 多体碰撞时,各碰撞的 \(\Delta\tau\) 如何协调?无法自洽。正确的刚体碰撞模型必须接受"加速度是测度"这一事实,用冲量(测度的积分)而非加速度(测度的密度)作为基本量。

历史:Moreau 1971 的扫动过程

Jean-Jacques Moreau 在 1971 年的蒙彼利埃凸分析讨论班("travaux du séminaire d'analyse convexe de Montpellier")提出**扫动过程(sweeping process / processus de rafle),这是测度微分包含的奠基。Moreau 把凸分析(他本人也是凸分析的奠基者之一,"Moreau 包络""Moreau 分解"皆以他命名)直接用于力学,开创了用测度和法锥描述含约束、含碰撞的力学系统的传统。这条线经 Monteiro Marques、Schatzman 等人发展,最终由 Moreau 本人和 Jean 在 1980–90 年代发展出 **Moreau–Jean 时步法(time-stepping)——专题 3 的主角。扫动过程的现代综合见 Brogliato 的 Nonsmooth Mechanics(多版),是接触力学非光滑建模的标准参考。

理论:从有界变差到测度微分包含

要谈"速度跳变",先要有合适的函数类。

定义 7.5.1(有界变差 BV 与微分测度) 函数 \(v:[0,T]\to\mathbb{R}^n\) 是**有界变差(bounded variation, BV)的,若其总变差 \(\text{Var}(v)=\sup\sum_i\|v(t_{i+1})-v(t_i)\|\)(上确界遍历所有分割)有限。BV 函数在每点有左极限 \(v^-(t)\) 和右极限 \(v^+(t)\),至多有可数个跳点。BV 函数 \(v\) 诱导一个 \(\mathbb{R}^n\) 值的 **微分测度(differential measure) \(dv\),它满足对任意 \([a,b]\)

\[\int_{[a,b]}dv = v^+(b)-v^-(a).\]

\(dv\) 可分解为 \(dv = \dot v\,dt + \sum_k(v^+(t_k)-v^-(t_k))\delta_{t_k} + (\text{Cantor 部分})\),即"绝对连续部分(普通加速度 \(\dot v\))+ 跳跃部分(碰撞冲量 \(\delta\))+ 奇异连续部分(力学中通常无)"。这个分解是 MDI 的关键:它让一个测度同时容纳光滑运动(\(\dot v\,dt\))和碰撞(\(\delta\))。

定义 7.5.2(测度微分包含 MDI,接触动力学形式) 含接触的刚体动力学写为测度微分包含:

\[\boxed{M(q)\,dv + \big(C(q,v)v + g(q) - \tau\big)\,dt \;=\; J(q)^\top\,d\Lambda,}\]

配合**速度层面的接触互补条件**(对测度 \(d\Lambda\) 及右速度 \(v^+\))和**碰撞律**。其中 \(dv\) 是速度的微分测度(含碰撞跳跃),\(d\Lambda\) 是接触冲量测度(法向冲量 \(\ge0\)、切向冲量在摩擦锥内)。这个方程在测度意义下成立——对任意时间区间积分后是动量平衡:

\[\underbrace{M(v^+(b)-v^-(a))}_{\text{动量改变}} + \underbrace{\int_a^b(Cv+g-\tau)\,dt}_{\text{光滑力的冲量}} = \underbrace{\int_{[a,b]}J^\top d\Lambda}_{\text{接触冲量}}.\]

碰撞律(restitution):碰撞时刻 \(t_k\),法向右速度与左速度由 Newton 碰撞律联系 \(v_n^+(t_k)=-e\,v_n^-(t_k)\)\(e\in[0,1]\) 恢复系数,\(e=0\) 完全非弹性、\(e=1\) 完全弹性)。Moreau 给出更一般的"Moreau 碰撞律",用左右速度的中点 \(\frac{v^++ev^-}{1+e}\) 满足约束,保证能量耗散正确。

Moreau 扫动过程:测度微分包含的优雅特例

MDI 的一个特别优雅、且直接对应专题 3 时步法的特例是 Moreau 扫动过程。它描述"一个点被一个移动的凸集'扫'着走"——这恰好是接触约束(可行域随构型变化)的抽象。

定义 7.5.3(一阶扫动过程)\(t\mapsto C(t)\) 是一族移动的闭凸集。扫动过程是微分包含

\[-\,dv \in N_{C(t)}(v(t)),\quad v(0)=v_0\in C(0),\]

含义:只要 \(v(t)\)\(C(t)\) 内部,\(N_{C(t)}(v)=\{0\}\),故 \(dv=0\)\(v\) 不动);一旦 \(C(t)\) 移动到要把 \(v\) "推出"边界,法锥 \(N_{C(t)}(v)\) 非零,\(v\) 被"扫"着沿法向移动以保持在 \(C(t)\) 内。这正是接触的本质:物体自由运动(间隙 \(>0\),可行域内部,无接触力)直到撞上约束边界(间隙 \(=0\),可行域边界),约束力(法锥方向)把它"挡住"。

把 §7.1 的"接触力 ∈ 法锥"与扫动过程对照:扫动过程的 \(-dv\in N_{C(t)}(v)\) 就是"速度的改变(含碰撞冲量)由约束法锥提供"——这是 §7.1 三大来源(单边约束 + 碰撞)的统一测度形式。法向力属于 \(\mathbb{R}_+\) 的法锥(Signorini),碰撞冲量也属于法锥(瞬时),扫动过程把二者用同一个 \(N_{C(t)}\) 收纳。

阶段小结:到这里我们建立了测度微分包含与 Moreau 扫动过程,看清接触动力学本质上是"速度被移动的凸约束集扫动"。接下来要做的是把这个连续测度形式离散化——这一步直接产出专题 3 的 Moreau–Jean 时步法,是本章理论落地为算法的关键桥梁。

时间离散:从 MDI 到专题 3 的 Moreau–Jean 时步法

现在做本章对专题 3 最直接的贡献:把连续 MDI 离散成可计算的时步法。关键设计原则(来自 MDI 的数学结构):离散测度(冲量),不离散密度(加速度)。

在一个时间步 \([t_k,t_{k+1}]\)(步长 \(h\))上,对 MDI 积分。设 \(v_k\approx v^-(t_k)\)\(v_{k+1}\approx v^+(t_{k+1})\)。动量平衡的离散:

\[M(q_k)(v_{k+1}-v_k) + h\big(C v_k + g_k - \tau_k\big) = J(q_k)^\top P_{k+1},\]

其中 \(P_{k+1}=\int_{[t_k,t_{k+1}]}d\Lambda\) 是这一步的**接触冲量(impulse),不是接触力——这是 Moreau–Jean 格式的标志性变量选择,**根源就是 MDI 里 \(d\Lambda\) 是测度,其在一步上的积分(冲量)才是有限可算的量。配合冲量层面的互补条件(对右速度 \(v_{k+1}\) 和冲量 \(P_{k+1}\) 写 Signorini + 摩擦),整步成为一个(凸或线性互补)问题,无需检测碰撞时刻、无需区分"碰撞步"与"光滑步"——碰撞作为冲量自然涌现。

这解释了专题 3 的三个核心设计选择(理论-工程桥接,认知工具 D): 1. 为什么用速度-冲量而非位置-加速度? 因为加速度是测度(碰撞时为 Dirac),无法离散;冲量(测度的积分)是有限值,可离散。 2. 为什么用隐式格式(对 \(v_{k+1}\) 写约束)? 因为约束是对右速度 \(v^+\) 的(碰撞后不穿透),隐式才能正确处理碰撞步。显式格式会"先穿透再修正",错误。 3. 为什么不显式检测事件? 因为 MDI 统一处理光滑段和碰撞(都在一个测度方程里),离散后自然包含两者,无需事件检测(这也避免了 §7.1 的 Zeno 问题)。

碰撞律的能量与多体推广:从 Newton 到 Moreau

§7.5 给出了单点 Newton 碰撞律 \(v_n^+=-e\,v_n^-\),但多体系统(多个接触同时碰撞,或碰撞通过刚体耦合影响其他关节)需要更细致的处理。这里推导碰撞冲量的求解方式,并说明能量守恒/耗散。

单点碰撞冲量求解。 碰撞瞬时(光滑力的 \(dt\) 项贡献为零,因为时间为零),动量平衡退化为

\[M(v^+-v^-)=J_n^\top P_n,\]

其中 \(J_n\) 是法向接触雅可比,\(P_n\ge0\) 是法向冲量(标量,单点)。配合碰撞律 \(v_n^+=J_n v^+=-e\,J_n v^-=-e\,v_n^-\)。从动量平衡解出 \(v^+=v^-+M^{-1}J_n^\top P_n\),代入碰撞律:

\[J_n(v^-+M^{-1}J_n^\top P_n)=-e\,J_n v^- \;\Rightarrow\; P_n=-\frac{(1+e)\,v_n^-}{J_n M^{-1}J_n^\top}.\]

分母 \(J_n M^{-1}J_n^\top>0\) 是接触点的**有效逆质量**(Delassus 算子的标量版),分子 \(-(1+e)v_n^-\) 在碰撞前 \(v_n^-<0\)(接近)时为正,故 \(P_n>0\)(合法的推力冲量)✓。这就是单点碰撞冲量的闭式解,是时步法在碰撞步的核心计算。

能量分析。 碰撞前后动能变化 \(\Delta T=\tfrac12 v^{+\top}Mv^+-\tfrac12 v^{-\top}Mv^-\)。代入 \(v^+=v^-+M^{-1}J_n^\top P_n\) 并化简,可证

\[\Delta T=-\tfrac12(1-e^2)\,\frac{(v_n^-)^2}{J_n M^{-1}J_n^\top}\le0\quad(0\le e\le1).\]

即**碰撞耗散能量**(\(e<1\) 时严格耗散,\(e=1\) 时守恒)。这验证了碰撞律的物理自洽性——刚性碰撞不会凭空产生能量。\(e=0\)(完全非弹性)耗散最多\(\Delta T=-\tfrac12\frac{(v_n^-)^2}{J_nM^{-1}J_n^\top}\)),对应"碰后贴合不反弹",这是足式机器人落地的常见建模(脚不弹起)。

多点碰撞的 Delassus 算子。\(k\) 个接触同时碰撞,法向雅可比 \(J_n\in\mathbb{R}^{k\times n_v}\),冲量 \(P_n\in\mathbb{R}^k\)。动量平衡 \(M(v^+-v^-)=J_n^\top P_n\) 配合**冲量层互补**(每个接触:\(0\le P_{n,i}\perp v_{n,i}^+ + e_i v_{n,i}^-\ge0\))。消去 \(v^+\) 得关于 \(P_n\) 的 LCP:

\[0\le P_n\ \perp\ \underbrace{J_n M^{-1}J_n^\top}_{=:W,\ \text{Delassus 算子}}P_n + (1+e)J_n v^-\ \ge0.\]

Delassus 算子 \(W=J_n M^{-1}J_n^\top\) 是对称 PSD(因为 \(M^{-1}\succ0\)),所以这个**法向碰撞 LCP 是 P-matrix 良态的**(对应凸 QP,§7.6 命题 7.6.1b),唯一可解!这就是为什么**无摩擦多点碰撞总能稳定求解**——它落在 §7.6 的"良态"一侧。一旦加入切向摩擦,\(W\) 被非对称的摩擦耦合污染,回到病态(Painlevé),这与 §7.6 P-matrix 分析完全呼应。

本质洞察:碰撞的本质是一个 LCP,其矩阵是 Delassus 算子 \(W=JM^{-1}J^\top\)。无摩擦时 \(W\) 对称 PSD(良态、凸、唯一解),有摩擦时 \(W\) 失去对称性(病态、可能无解)。这把"碰撞"和"持续接触"统一在同一个数学结构(LCP + Delassus 算子)下——它们的区别仅在于时间尺度(碰撞瞬时、接触持续),数学骨架相同。理解这一点,你就明白为什么时步法能用**同一套**互补求解器处理碰撞步和接触步,无需区分——这是 Moreau–Jean 格式优雅性的深层来源。

Delassus 算子的谱与条件数:为什么有的碰撞"难解"

Delassus 算子 \(W=JM^{-1}J^\top\) 不只是"是否 PSD"这么简单——它的**谱(特征值分布)**直接决定碰撞 LCP 的数值难度和能量在多接触间的分配方式。这是把 §7.5 抽象框架与"为什么这个仿真步慢/不稳"挂钩的关键(认知工具 D)。

谱的物理含义\(W\)\(k\) 个接触点张成的"接触空间"中的有效逆质量矩阵。它的特征值 \(\lambda_i(W)\) 对应接触空间的"主方向逆惯量":

  • 大特征值(接触点轻、易动方向):该接触方向上单位冲量产生大速度改变,碰撞响应"灵敏"。
  • 小特征值(接触点重、被多刚体连接的方向):单位冲量只产生小速度改变,碰撞响应"迟钝"。
  • 条件数 \(\kappa(W)=\lambda_{\max}/\lambda_{\min}\):衡量"最灵敏方向"与"最迟钝方向"的比值。\(\kappa\) 大意味着 LCP 病态——迭代求解器(PGS/投影 Gauss–Seidel,专题 3)收敛慢,因为不同接触点的尺度差异大。

一个干净的两点对称例子。设两个相同质量 \(m\) 的质点用一根刚度无穷的杆(视为刚体)连接,两端各与地面有一个法向接触,两接触雅可比为 \(J_n=\begin{bmatrix}1&0\\0&1\end{bmatrix}\)(解耦)或含耦合项(杆传递)。解耦时 \(W=\tfrac1m I\),特征值都是 \(1/m\)\(\kappa=1\)(完美良态,两点碰撞独立)。一旦杆把两端刚性耦合,\(M\) 出现非对角项,\(W\) 的非对角元非零——一端受冲量会通过杆传到另一端,\(\kappa>1\),两点碰撞**耦合求解**。这解释了为什么"刚性连接的多接触"(如桌子四条腿同时落地)比"独立的多接触"(如散落的四个球同时落地)数值上更难:前者 \(W\) 病态(强耦合),后者 \(W\) 近似对角(弱耦合)。

碰撞冲量在多接触间的传播。多点碰撞 LCP \(0\le P_n\perp WP_n+(1+e)J_nv^-\ge0\) 的解,通过 \(W^{-1}\) 把"碰撞前速度"映射为"各点冲量"。\(W^{-1}\) 的非对角元就是**冲量传播路径**:在 \(i\) 点施加冲量如何影响 \(j\) 点的法向速度。对运动链(如机械臂、足式腿),\(W\) 的稀疏/带状结构反映运动学拓扑——相邻连杆的接触强耦合(\(W\) 对应元大),远端连杆弱耦合。这与专题 1 LCP 求解器利用稀疏性加速、专题 3 时步法的 contact graph 着色(并行 PGS)直接相关:\(W\) 的稀疏结构 = 接触约束图的邻接结构

切向冲量的测度形式:完整的摩擦 Moreau–Jean NCP

前面的多点碰撞只写了法向(Delassus + 法向互补)。完整的接触动力学还有**切向摩擦冲量**,它把 §7.2 的摩擦锥、§7.4 的 Filippov 滑模、§7.5 的测度形式三者缝合成专题 3 时步法的最终方程。这里把它完整写出(这是练习 7.7.2 的理论支撑)。

设法向、切向接触雅可比 \(J_n,J_t\),一步内法向冲量 \(P_n\ge0\)、切向冲量 \(P_t\)。完整的摩擦时步法在一步 \([t_k,t_{k+1}]\) 上是如下**非线性互补问题(NCP)**:

\[\begin{cases} M(v_{k+1}-v_k)+h(Cv_k+g_k-\tau_k)=J_n^\top P_n+J_t^\top P_t & \text{(动量平衡)}\\[2pt] 0\le P_n\ \perp\ J_n v_{k+1}+E P_n\ \ge0 & \text{(Signorini, 对右速度)}\\[2pt] P_t\in\arg\min_{\|P_t'\|\le\mu P_n}\ \langle J_t v_{k+1},\,P_t'\rangle & \text{(最大耗散 / 摩擦锥)} \end{cases}\]

第三行的"最大耗散"是 §7.2 摩擦力 = 耗散势负广义梯度在**冲量层面**的离散版:切向冲量在摩擦圆盘 \(\{\|P_t\|\le\mu P_n\}\) 内取使切向速度耗散最大的方向。它等价于切向 VI(§7.6)\(-J_tv_{k+1}\in N_{\{\|\cdot\|\le\mu P_n\}}(P_t)\),也等价于 §7.4 的 Filippov 滑模条件——stick(粘滞)对应 \(P_t\) 在圆盘内部、\(J_tv_{k+1}=0\);slip(滑动)对应 \(P_t\) 在圆盘边界、方向与 \(J_tv_{k+1}\) 反向

本质洞察:这一组方程是本章三大主干(替代导数 §7.2、替代解 §7.4/7.5、替代方程 §7.6)的**汇流处**。动量平衡来自 §7.5 测度积分(冲量而非力);法向互补来自 §7.6 法锥包含;切向最大耗散来自 §7.2 广义梯度 + §7.6 VI;而它的 stick/slip 二态正是 §7.4 Filippov 横穿/滑模在离散冲量层的投影。专题 3 的时步法每一步求解的就是这个 NCP——整本《非光滑分析基础》的所有工具,最终都为了让你看懂并能亲手写出这九行方程。 摩擦使其非对称(\(\mu P_n\) 把法向耦进切向约束的边界),这是它比无摩擦碰撞 LCP 难解、可能多解/无解(Painlevé)的根源,与下一小节呼应。

运行示例:两点同时碰撞的 Delassus LCP 手算

把 §7.5 的多点碰撞理论落到一个可逐步手算的最小例子——一根均质杆两端同时触地,演示 Delassus 算子如何把"两点碰撞"耦合成一个 \(2\times2\) LCP,并解出冲量分配(认知工具 A)。

设定:一根长 \(2L\)、质量 \(m\)、对中心转动惯量 \(I=\tfrac13 mL^2\) 的均质杆,水平下落(无旋转)以速度 \(v_0<0\)(向下)同时撞击地面,杆两端各有一个法向接触点(点 A 在 \(-L\)、点 B 在 \(+L\))。完全非弹性 \(e=0\)。广义坐标取质心竖直位移 \(y\) 与转角 \(\theta\)\(M=\text{diag}(m,I)\)

Step 1:写法向接触雅可比。 两端竖直速度 \(=\) 质心竖直速度 \(\pm\) 转动贡献:点 A 竖直速度 \(\dot y - L\dot\theta\),点 B 竖直速度 \(\dot y + L\dot\theta\)。故

\[J_n=\begin{bmatrix} 1 & -L\\ 1 & +L \end{bmatrix},\quad v^-=(v_0,\ 0)^\top\ \Rightarrow\ J_n v^-=(v_0,\ v_0)^\top.\]

Step 2:算 Delassus 算子 \(W=J_nM^{-1}J_n^\top\) \(M^{-1}=\text{diag}(1/m,\ 1/I)\)\(I=\tfrac13mL^2\)\(1/I=3/(mL^2)\)

\[W=\begin{bmatrix}1&-L\\1&L\end{bmatrix}\begin{bmatrix}1/m&0\\0&3/(mL^2)\end{bmatrix}\begin{bmatrix}1&1\\-L&L\end{bmatrix}=\frac1m\begin{bmatrix}1+3&1-3\\1-3&1+3\end{bmatrix}=\frac1m\begin{bmatrix}4&-2\\-2&4\end{bmatrix}.\]

\(W\) 对称 PSD ✓(特征值 \(\tfrac{2}{m},\tfrac{6}{m}>0\),条件数 \(\kappa(W)=3\)——两端通过杆刚性耦合,故非对角元 \(-2/m\ne0\),体现 §7.5"刚性连接多接触耦合")。

Step 3:写碰撞 LCP 并求解。 \(e=0\) 时 LCP 为 \(0\le P_n\perp WP_n+J_nv^-\ge0\),即(设两点都活跃,\(P_n>0\),则 \(WP_n+J_nv^-=0\)):

\[\frac1m\begin{bmatrix}4&-2\\-2&4\end{bmatrix}\begin{bmatrix}P_A\\P_B\end{bmatrix}+\begin{bmatrix}v_0\\v_0\end{bmatrix}=0\;\Rightarrow\;\begin{bmatrix}P_A\\P_B\end{bmatrix}=-mW^{-1}\!\begin{bmatrix}v_0\\v_0\end{bmatrix}.\]

由对称性 \(P_A=P_B=:P\),代入第一行 \(\tfrac1m(4P-2P)+v_0=0\Rightarrow \tfrac{2P}{m}=-v_0\Rightarrow P=-\tfrac{m v_0}{2}>0\)(因 \(v_0<0\))✓。两端冲量相等且为正,物理合理(对称下落对称受冲量)。

Step 4:验证碰后速度与互补。 \(v^+=v^-+M^{-1}J_n^\top P_n\)。竖直方向:\(\dot y^+=v_0+\tfrac1m(P_A+P_B)=v_0+\tfrac1m(2P)=v_0+\tfrac1m(-mv_0)=0\) ✓(碰后质心静止,\(e=0\) 贴地)。转动:\(\dot\theta^+=0+\tfrac{3}{mL^2}(-LP_A+LP_B)=\tfrac{3}{mL^2}\cdot L(P_B-P_A)=0\) ✓(对称无旋转)。两端碰后竖直速度 \(J_nv^+=0\),与 \(P_n>0\) 满足互补(边界)✓。

本质洞察:这个例子展示了 Delassus 算子的全部作用——它把"两个看似独立的碰撞点"通过质量矩阵 \(M\)(这里是杆的平动 + 转动惯量)耦合成一个 \(2\times2\) LCP,非对角元 \(-2/m\) 量化了"在 A 端施加冲量会通过杆的转动影响 B 端"的耦合强度。若杆变成两个不相连的质点(无转动耦合),\(W\) 退化为对角 \(\tfrac1mI\),两点碰撞完全独立、可分别求解。多接触求解的全部难度,都浓缩在 \(W\) 的非对角结构里——这正是 §7.5 Delassus 谱小节的论点在一个三行手算里的兑现,也是专题 3 时步法为何要整体(而非逐点)求解接触的根本原因。

Painlevé 佯谬:测度解如何化解"无解"

§7.6 提到 Coulomb 摩擦下 LCP 可能无解(Painlevé)。这里说明测度微分包含如何化解它——这是 §7.5 测度框架"不可或缺"的最有力证据。

Painlevé 构型:一根刚性杆斜抵在粗糙地面上滑动,在高摩擦系数(\(\mu\) 大)和特定倾角下,经典刚体 + Coulomb + 单边约束的方程组要求"法向力为负"(地面拉杆,物理上不可能)或"法向加速度自相矛盾"。用 LCP 语言:该构型下 LCP 的矩阵非 P-matrix,且 \(q\) 落在"无解锥"内,LCP 无解。物理上,杆"想"穿透地面但又被禁止,经典(绝对连续速度)解不存在。

测度解的化解:MDI 框架允许速度在**没有显式碰撞**的情况下也发生跳变("切向冲击 / impact without collision")。在 Painlevé 构型,正确的解是:杆在某时刻速度**瞬间跳变**(一个切向冲量瞬时改变杆的运动状态),从"滑动"切换到"卡住"或"翘起",从而避开无解构型。这个跳变是测度(Dirac),只有在 §7.5 的 BV/测度框架下才合法——绝对连续解(§7.4 Filippov)无法表达它。Stewart 2000(SIAM Review)严格证明了:用测度微分包含 + 适当的冲击律,Painlevé 构型有良定义的(测度)解,化解了佯谬。

这是本章理论层级"逐级提升"的最强论据:层次一(次微分)处理静态摩擦集值;层次二的微分包含(§7.4)处理 stick-slip 连续切换;但只有层次二的**测度**微分包含(§7.5)能处理 Painlevé 这种"无碰撞却需速度跳变"的极端情形。每一级理论都有其不可替代的物理对应。

高阶扫动过程与状态跳变

扫动过程还可推广到含状态跳变的高阶情形(一阶扫动处理速度约束,二阶处理位置约束 + 速度跳变)。二阶扫动过程(second-order sweeping process) 直接对应含单边位置约束的刚体动力学:约束在位置层面 \(\phi(q)\ge0\),速度在碰撞时跳变。这是 Schatzman、Monteiro Marques 等人的工作,是接触力学 MDI 的完整形式。高阶扫动过程还可纳入状态跳变(通过高阶分布),应用于状态约束下的动态优化和含理想二极管的电路(搜索结果中 Acary 等人的工作),与专题 5 的混合系统(显式状态跳变)形成"隐式跳变 vs 显式跳变"的对照。

碰撞律的选择:Newton、Poisson 与 Moreau 三种恢复模型

§7.5 前面用了 Newton 碰撞律 \(v_n^+=-e\,v_n^-\),但这只是三种主流碰撞律之一。碰撞律不是 MDI 框架本身规定的,而是补充的本构关系——MDI 给出动量平衡(测度方程),碰撞律告诉你"碰撞后速度如何选取"。理解三者的区别,对正确建模多体碰撞(尤其是同时多点碰撞)至关重要(认知工具 B:对比性思维 + E:系统性分类)。

模型一:Newton 碰撞律(运动学恢复)。最简单:\(v_n^+=-e\,v_n^-\),恢复系数 \(e\in[0,1]\) 直接关联碰前碰后法向速度。优点:直观、易算(§7.5 的闭式冲量公式即基于它)。致命缺陷:多体系统中可能**违反能量守恒**——某些构型下 Newton 律会让系统碰后动能高于碰前("能量泵入"),物理上荒谬。原因是它只看局部法向速度,不顾全局能量。

模型二:Poisson 碰撞律(动力学恢复 / 冲量分相)。把碰撞分两相:压缩相(法向速度从 \(v_n^-\)\(0\),积累压缩冲量 \(P_c\))和恢复相(释放冲量 \(P_r=e\,P_c\))。总冲量 \(P_n=(1+e)P_c\)。优点:以**冲量比**而非速度比定义恢复,在多体碰撞中**不违反能量守恒**(因为恢复相释放的能量受压缩相储存量上界约束)。这是 Stronge 等人推荐的、刚体碰撞理论上更自洽的模型。代价:需追踪压缩/恢复两相,比 Newton 律复杂。

模型三:Moreau 碰撞律(速度层凸投影)。Moreau 把碰后速度定义为对**可行速度锥的加权投影**:\(v^+\) 使 \(\frac{v^++e\,v^-}{1+e}\) 满足约束(落在可行速度集 \(V(q)=\{v:J_nv\ge0\}\) 内)。等价地,\(v^+=\text{prox}_{V}^{M}\big(v^-\big)\) 的某种恢复加权版。优点:(1) 天然多点一致——它对整个接触速度锥投影,自动协调所有同时接触点;(2) 保证能量耗散(投影是非扩张的,\(\|v^+\|_M\le\|v^-\|_M\)\(e=0\));(3) 直接嵌入扫动过程/时步法——它就是 §7.5 扫动过程 \(-dv\in N_{C}(v)\) 的碰撞律版本,与 Moreau–Jean 离散无缝衔接。这是接触仿真器(Siconos)实际采用的模型。

碰撞律 定义方式 多体能量守恒 多点一致性 主要采用者
Newton 速度比 \(v_n^+=-ev_n^-\) 可能违反 需逐点协调 教学、单点碰撞
Poisson 冲量比 \(P_r=eP_c\) 保证 较好 Stronge 刚体碰撞理论
Moreau 速度锥投影 保证(投影非扩张) 天然一致 Siconos、时步法

Newton's cradle(牛顿摆)的判别例子。五个等质量钢球悬挂相切,从一端拉起一个释放。实验现象:撞击端一球,另一端恰好弹出一球(中间三球不动)。这个看似简单的现象其实是碰撞律的"试金石":

  • 若把五球的多点同时碰撞用 Newton 律 + 集中处理(一次解五点 LCP),会得到"多球同时弹出、速度分配不唯一"的非物理解——因为 Newton 律 + Delassus LCP 在这种全对称、零间隙构型下解不唯一(§7.5 Delassus 谱:零间隙刚性链 \(W\) 高度病态)。
  • 真实的"一进一出"需要**碰撞按接触刚度/微小间隙的顺序逐对传播**(波动模型),或承认刚体理想化在此构型下不足以确定唯一解。

本质洞察:Newton's cradle 揭示了刚体碰撞理论的一个深刻局限——碰撞律 + 刚体假设在"同时多点碰撞 + 高对称"构型下可能不足以确定唯一物理解,必须引入额外信息(接触刚度、波动、微小时序)。这不是数学框架(MDI)的缺陷,而是"刚体瞬时碰撞"这一理想化本身的信息缺失:真实碰撞有有限持续时间和波传播,刚体把它压缩成零时间,丢掉了决定分配的信息。这与 §7.4 多面交线的 Filippov 多值、§7.5 Delassus 病态是同一现象在碰撞律层面的体现——高对称多接触的解不唯一性,是接触力学的固有难点,不同碰撞律是不同的"补全缺失信息"的方式。工程上:要么接受非唯一(取任一物理解),要么引入软接触(有限刚度,恢复唯一性,§7.8.5 GPU 软接触路线)。

完整走一遍:弹跳球的测度解与 Zeno 现象

把 §7.5 的测度框架落到一个完整可算的例子——弹跳球,并直面 Zeno(练习 7.5.3 预告的"比 BV 更坏"的情形)。这是测度解、碰撞律、Zeno 三个概念的集成演示。

设定:球质量 \(m=1\),重力 \(g=10\)(取整便于手算),从高度 \(h_0=5\) 静止落下,地面在 \(y=0\),恢复系数 \(e=0.5\)。自由飞行段是光滑 ODE \(\ddot y=-g\);触地(\(y=0\)\(\dot y<0\))时速度跳变 \(\dot y^+=-e\,\dot y^-\)

第一次落地:自由落体 \(y(t)=5-\tfrac12\cdot10\cdot t^2\),落地 \(y=0\)\(t_1=1\),落地速度 \(\dot y^-(t_1)=-g t_1=-10\)。碰撞冲量(§7.5 单点公式,\(J_n=1\)\(M=1\)\(J_nM^{-1}J_n^\top=1\)):

\[P_1=-(1+e)\dot y^-(t_1)=-(1.5)(-10)=15.\]

碰后速度 \(\dot y^+(t_1)=\dot y^-+P_1=-10+15=+5\)(向上弹起,等于 \(-e\dot y^-=0.5\times10=5\) ✓)。速度在 \(t_1\)\(-10\) 跳到 \(+5\)这个跳变在微分测度 \(dv\) 里是 \(\delta_{t_1}\) 项,幅度 \(15\)

后续弹跳:每次落地速度幅值乘 \(e=0.5\)。第 \(k\) 次弹起速度 \(u_k=5\cdot(0.5)^{k-1}\)\(u_1=5,u_2=2.5,\dots\))。第 \(k\) 次弹起后到第 \(k+1\) 次落地的飞行时间 \(\Delta t_k=2u_k/g=2\cdot5\cdot(0.5)^{k-1}/10=(0.5)^{k-1}\)\(\Delta t_1=1,\Delta t_2=0.5,\dots\))。

Zeno 时刻(无穷多次弹跳的总时间):从第一次落地 \(t_1=1\) 起,后续飞行时间总和

\[\sum_{k=1}^\infty\Delta t_k=\sum_{k=1}^\infty(0.5)^{k-1}=\frac{1}{1-0.5}=2.\]

故 Zeno 时刻 \(t_\infty=t_1+2=3\)——在有限时间 \(t=3\) 内,球完成了无穷多次弹跳! \(t>3\) 后球静止贴地(\(\dot y\equiv0,y\equiv0\),扫动过程的"被约束集挡住")。

这对解概念意味着什么(练习 7.5.3 的答案): - 速度 \(\dot y(t)\)\([0,3)\) 上是 BV 吗?总变差 \(=\sum_k(\text{每次跳变幅度})=\sum_k(1+e)u_k=\sum_k 1.5\cdot5\cdot(0.5)^{k-1}=1.5\cdot5\cdot2=15<\infty\)总变差有限,所以 \(\dot y\)\([0,3]\) 上仍是 BV!(跳变幅度按几何级数衰减,求和收敛。) - 但跳点有**无穷多个**(\(t_1,t_2,\dots\) 聚于 \(t_\infty=3\)),这逼近了 BV 的极限——若 \(e=1\)(无耗散),跳变幅度不衰减,总变差发散,\(\dot y\) 不再是 BV,测度解理论也需要进一步推广(或物理上 \(e=1\) 永不停止弹跳,无 Zeno)。

现代时步法如何"越过"Zeno:事件驱动法(专题 5)在 Zeno 点卡死(要检测无穷多次碰撞)。而**时步法(专题 3)以固定步长 \(h\) 推进**,当 \(h>\) 剩余弹跳的时间尺度时,一步内"吸收"了无穷多次微小弹跳——离散互补问题自动给出"贴地静止"的解,无痛越过 \(t_\infty\)。这是时步法相对事件驱动法的又一关键优势,其根源正是 §7.5 的测度框架(碰撞作为冲量在步内累积,无需逐个解析)。

本质洞察:Zeno 现象(有限时间无穷多事件)是接触动力学最反直觉的特征之一,它彻底击溃了"事件驱动 + 重置"的范式(§7.1 陷阱已预警)。但在测度微分包含的视角下,Zeno 不再可怕——只要恢复系数 \(e<1\)(有耗散),速度仍是 BV(总变差因几何衰减而有限),测度解良定义;时步法以固定步长"吸收"Zeno 点附近的无穷多次微小碰撞,自然过渡到静止。这再次印证 §7.5 的核心论点:接受"加速度是测度、速度是 BV",许多经典框架下的"病态"(Zeno、Painlevé)都变成了良定义的常态。 测度框架不是更复杂的麻烦,而是更诚实、更稳健的语言。

⚠️ 常见陷阱

💡 概念误区:把碰撞的"加速度"当成有限值 新手想法:"碰撞时加速度很大但有限,仿真时取一个大数就行。" 实际上:刚性碰撞的加速度在数学上是 Dirac 测度(无穷大、零时间、有限积分),不是有限值。把它当有限值就是 penalty 正则化(§7.1),带来刚性和失真。正确的量是**冲量**(加速度测度的积分),它有限可算。 为什么重要:这决定了仿真器的基本变量选择。用加速度的仿真器(显式 ODE 积分器)在碰撞时必然要么穿透、要么刚性爆炸;用冲量的仿真器(Moreau–Jean 时步法)天然正确。理解"加速度是测度",才能理解专题 3 为何那样设计。

💡 概念误区:以为 BV 函数和绝对连续函数差别不大 新手想法:"速度连续或跳变,无所谓,反正都能积分。" 实际上:绝对连续函数的导数是普通函数(可积),微分包含(§4)够用;BV 函数的导数是**测度**(含 Dirac),必须用测度微分包含(§5)。stick-slip(速度连续)用 §4,碰撞(速度跳变)必须用 §5。混淆会导致:用 §4 的 Filippov 解理论处理碰撞,得到"解不存在"(因为碰撞解不是绝对连续的,不在 Filippov 解的函数类里)。 为什么重要:选错解概念,整个分析的函数空间就错了。判断标准:速度是否跳变?跳变(碰撞)→ MDI/BV;不跳变(仅 stick-slip)→ DI/绝对连续。

🧠 思维陷阱:试图用更小的步长"积分穿过"碰撞 新手想法:"碰撞处解有跳变,那我把步长取得极小,总能精确捕捉这个跳变。" 实际上:碰撞是**瞬时**的(零时间内速度跳变),无论步长多小,跳变都发生在"一步之内",无法靠减小步长"展开"它。正确做法是接受跳变、在那一步求解冲量(隐式 + 互补),而非试图"积分穿过"。减小步长只会增加计算量、并不能让显式格式正确处理碰撞。 正确思维:碰撞不是"快速但连续的过程",而是"瞬时跳变"。处理跳变的正确工具是测度(冲量)+ 隐式约束,不是小步长。这是 §5 区别于 §4、专题 3 区别于普通 ODE 积分的核心。

练习

练习 7.5.1(计算题,在草稿纸上完成) 一个质量 \(m=1\) 的小球从高度 \(h_0\) 自由落下(重力 \(g\)),撞击刚性地面,恢复系数 \(e\)。(a) 写出包含碰撞的速度微分测度 \(dv\) 在第一次碰撞时刻 \(t_1\) 的分解(绝对连续部分 + Dirac 部分);(b) 用动量平衡(MDI 积分形式)求第一次碰撞的法向冲量 \(P_1\);(c) 当 \(e=0\) 时验证碰后小球速度为零、贴地(对应扫动过程的"被约束集挡住")。

练习 7.5.2(接触应用,推导题) 从连续 MDI \(M\,dv+(Cv+g-\tau)\,dt=J^\top d\Lambda\) 出发,在时间步 \([t_k,t_{k+1}]\)(步长 \(h\))上积分,推导 Moreau–Jean 离散动量平衡 \(M(v_{k+1}-v_k)+h(Cv_k+g_k-\tau_k)=J^\top P_{k+1}\)。明确指出:(a) 哪一项的积分给出冲量 \(P_{k+1}\);(b) 为什么 \(P_{k+1}\)(冲量)有限可算而瞬时接触力 \(\lambda\) 在碰撞步是测度(不可直接离散);(c) 这一推导如何解释专题 3"用速度-冲量为基本变量"的设计。

练习 7.5.3(开放思考题) 本节说"动力学正则性阶梯:微分方程(\(C^1\))→ 微分包含(绝对连续)→ 测度微分包含(BV)"。请思考:是否存在比 BV 更"坏"的情形——速度连有界变差都不是(如在有限时间内无穷次碰撞,总变差发散)?这对应什么物理现象?(提示:Zeno 现象——小球越弹越快地无穷次弹跳,在有限时间 \(t_\infty\) 内完成无穷次碰撞。讨论:\(e<1\) 时小球弹跳的速度幅值如何衰减?无穷次弹跳的总时间是否有限?这是否导致速度不是 BV?现代时步法如何"越过"Zeno 点继续仿真?)

练习 7.5.4(计算题,在草稿纸上完成) 仿照"两点同时碰撞的 Delassus LCP 手算",考虑一根长 \(2L\)、质量 \(m\) 的均质杆,但这次**质心偏置**(质心在距 A 端 \(\tfrac{L}{2}\) 处,两接触点仍在杆的两端)。(a) 重新写法向雅可比 \(J_n\);(b) 算 Delassus 算子 \(W\)(注意此时 \(W\) 的两个对角元不再相等);(c) 求完全非弹性(\(e=0\))水平下落的两端冲量 \(P_A,P_B\),验证它们**不相等**(偏置导致非对称分配);(d) 计算 \(\kappa(W)\) 并与对中情形(\(\kappa=3\))比较,说明质心偏置如何影响碰撞 LCP 的病态度。

练习 7.5.5(对比辨析题,开放性) §7.5 给出了 Newton、Poisson、Moreau 三种碰撞律。请针对一个**两体链式碰撞**(球 1 撞静止的球 2,球 2 再撞静止的球 3,等质量、一维、\(e=1\)):(a) 用 Newton 律逐对计算碰后速度,验证"动量与动能同时守恒"是否唯一确定结果;(b) 解释为什么"集中处理三球同时碰撞"(一次解三点 LCP)会丢失"一进一出"的物理解;(c) 联系 Newton's cradle,讨论刚体瞬时碰撞理想化在高对称构型下的信息缺失,以及软接触(有限刚度)如何恢复唯一性。

练习 7.5.6(推导题,在草稿纸上完成) 写出本节"切向冲量的测度形式"给出的完整摩擦 Moreau–Jean NCP(动量平衡 + Signorini + 最大耗散三式)。(a) 对一个单点接触(一维法向 + 一维切向)把它具体化为标量方程组;(b) 分别写出 stick(\(|P_t|<\mu P_n\)\(J_tv_{k+1}=0\))与 slip(\(|P_t|=\mu P_n\)\(P_t\)\(J_tv_{k+1}\) 反向)两种情形下方程组的形态;(c) 说明这个 stick/slip 二分如何对应 §7.4 Filippov 的滑模/横穿,以及它为何使整步问题非对称(联系 §7.6"摩擦破坏 P-matrix")。


§7.6 互补问题的非光滑视角:法锥、变分不等式与半光滑 Newton ⭐⭐⭐

动机:专题 1 把 LCP 当组合问题解,但组合数会爆炸

专题 1 把 Signorini 条件线性化为 LCP \(0\le z\perp Mz+q\ge0\),并指出"解 LCP = 枚举活跃集(哪些约束 \(z_i=0\)、哪些 \(z_i>0\))"。这在小规模可行,但有一个致命问题:\(n\) 对接触有 \(2^n\) 种活跃集组合。机器人灵巧手抓取、足式机器人多点接触动辄几十个接触对,\(2^{50}\) 的组合数让枚举法彻底失效。

更糟的是,§7.1 已指出 Coulomb 摩擦让 LCP 失去 P-matrix 性质,导致解可能不存在(Painlevé)或多个(专题 2),活跃集枚举可能找不到一致的活跃集(每个候选活跃集都自相矛盾)。

现代求解器(PATH、半光滑 Newton、IPC barrier)如何绕过组合爆炸?答案藏在**互补条件的非光滑视角**里:把 LCP 不看成组合问题,而看成一个**不可微方程** \(\Phi(z)=0\)(用 NCP 函数),然后用半光滑 Newton 法解它。整个组合结构被"溶解"进一个非光滑方程的解析结构中,Newton 的每一步都是连续优化(线性方程组),没有组合枚举。本节用 §7.2、§7.3 的非光滑工具揭示这一机制,把专题 1 的 LCP 与本章的理论闭合。

本质洞察:互补条件 \(0\le a\perp b\ge0\) 有三副面孔——组合面孔(活跃集枚举,专题 1)、几何面孔(法锥包含 / 变分不等式,§7.1 反复出现的"力 ∈ 法锥")、解析面孔(不可微方程 \(\Phi(a,b)=0\),本节)。三副面孔数学等价,但导向完全不同的算法:组合面孔 → pivoting(Lemke 算法,组合数爆炸);几何面孔 → 投影方法(projected Gauss-Seidel);解析面孔 → 半光滑 Newton(PATH,二次收敛,绕过组合爆炸)。理解"同一个互补条件可以从三个视角看",是理解所有接触求解器分野的钥匙——这正是 R6A 多视角理解在接触求解器选型上的兑现。

视角一:互补即法锥包含(几何面孔)

回顾 §7.1:Signorini 条件 \(0\le\lambda_n\perp\phi\ge0\) 等价于 \(\lambda_n\in N_{\mathbb{R}_+}(\phi)\)(法向力属于非负轴的法锥)。这不是巧合,而是互补条件的一般几何本质。

命题 7.6.1(互补 = 法锥包含)\(a,b\in\mathbb{R}^n\)(逐分量),

\[0\le a\perp b\ge0 \iff -b\in N_{\mathbb{R}^n_+}(a) \iff a\in N_{\mathbb{R}^n_+}(b) \iff a=\text{proj}_{\mathbb{R}^n_+}(a-b).\]

证明(标量情形 \(n=1\),逐分量推广):\(N_{\mathbb{R}_+}(a)=\{0\}\)\(a>0\)\(=(-\infty,0]\)\(a=0\)\(=\varnothing\)\(a<0\)。"\(-b\in N_{\mathbb{R}_+}(a)\)"展开:\(a>0\Rightarrow -b=0\Rightarrow b=0\)(且需 \(a\ge0\));\(a=0\Rightarrow -b\le0\Rightarrow b\ge0\)。合起来正是 \(a\ge0,b\ge0,ab=0\)。投影刻画:\(a=\text{proj}_{\mathbb{R}_+}(a-b)=\max(0,a-b)\),逐情形验证等价。\(\blacksquare\)

这个命题把 LCP \(0\le z\perp Mz+q\ge0\) 写成法锥包含 \(-(Mz+q)\in N_{\mathbb{R}^n_+}(z)\),进而是一个**变分不等式**(下面)。投影刻画 \(z=\text{proj}_{\mathbb{R}^n_+}(z-(Mz+q))\) 把 LCP 写成不动点方程,直接导出投影迭代法(projected Gauss-Seidel,许多物理引擎如 ODE、Bullet 的接触求解器内核)。

视角二:互补即变分不等式(VI)

定义 7.6.2(变分不等式 VI) 给定闭凸集 \(C\) 和映射 \(F:C\to\mathbb{R}^n\),变分不等式 \(\text{VI}(C,F)\) 是求 \(z^\star\in C\) 使

\[\langle F(z^\star),\,z-z^\star\rangle\ge0,\quad\forall z\in C.\]

几何含义:\(-F(z^\star)\) 属于 \(C\)\(z^\star\) 的法锥 \(N_C(z^\star)\)LCP 是 VI 的特例(取 \(C=\mathbb{R}^n_+\)\(F(z)=Mz+q\)):\(\text{VI}(\mathbb{R}^n_+,Mz+q)\) 就是 LCP。更一般地,接触问题(含摩擦锥约束)是 \(\text{VI}(\mathcal{K},F)\)\(\mathcal{K}\) 是摩擦锥(专题 2)。

VI 视角统一了 §7.1 的所有"力 ∈ 法锥":单边约束是 \(\text{VI}(\mathbb{R}_+,\cdot)\),摩擦是 \(\text{VI}(\text{摩擦圆盘},\cdot)\),整个接触问题是一个大 VI。VI 的解存在性(如 \(F\) 单调 + \(C\) 紧)、唯一性(\(F\) 强单调)理论,直接给出接触问题的适定性条件——而 Coulomb 摩擦破坏单调性(§7.1 洞察),正是接触问题难的根源。这把专题 2 的"摩擦非单调"提升为 VI 适定性的语言。

极大单调算子视角:摩擦律的"半正则"结构

VI 的良态性依赖单调性。这里深入一层,用**极大单调算子(maximal monotone operator)**的语言精确刻画摩擦律的单调结构——这解释了为什么"切向摩擦本身单调,但法-切耦合破坏单调",是 §7.1 洞察的精细化。

定义 7.6.2b(单调与极大单调算子) 集值映射 \(T:\mathbb{R}^n\rightrightarrows\mathbb{R}^n\) 单调,若对任意 \((x,u),(y,w)\in\text{gph}\,T\)\(\langle u-w,x-y\rangle\ge0\)。若其图不能再扩大而保持单调,称**极大单调**。凸函数的次微分 \(\partial f\) 是极大单调算子(Rockafellar 经典定理)——这是凸分析与单调算子理论的桥梁。

摩擦律的单调结构(基于 §7.2 例 2/3):固定法向力 \(\lambda_n\),切向摩擦力作为切向速度的(负)函数 \(\lambda_t\in-\mu\lambda_n\,\partial\|\cdot\|(v_t)\)。由于 \(\|\cdot\|\) 是凸函数,其次微分 \(\partial\|\cdot\|\) 是**极大单调**的;故 \(v_t\mapsto-\lambda_t\in\mu\lambda_n\partial\|v_t\|\) 单调。结论:固定法向力时,切向摩擦是极大单调算子——这是良态的(VI 有解、可用单调算子的分裂算法求解)。

更一般地(搜索结果中 set-valued friction 的结构):一般的集值摩擦模型(含 Stribeck、Stiction 等)可写为"Lipschitz 连续函数 + 凸 lsc 函数的次微分",后者在 \(\mathbb{R}^2\) 上是极大单调——所以**固定法向力的摩擦总是极大单调** + Lipschitz 扰动,保持良态。

为什么完整接触问题仍非单调(关键,桥接 §7.1):上面的良态性建立在**固定 \(\lambda_n\)** 之上。但完整接触问题中,法向力 \(\lambda_n\) 本身是未知量,且摩擦圆盘半径 \(\mu\lambda_n\) 依赖 \(\lambda_n\)——这个"约束集依赖于待求变量"的耦合使整个映射**不再单调**(它成为**拟变分不等式(quasi-variational inequality, QVI)**,约束集 \(\mathcal{K}(\lambda_n)\) 随解变化)。这就是 §7.1 洞察"法-切耦合使问题非凸/非单调"的精确机制:

\[\underbrace{\text{固定 }\lambda_n:\ \text{摩擦极大单调(良态 VI)}}_{\text{可分裂算法求解}}\ \xrightarrow{\ \lambda_n\text{ 未知,圆盘半径耦合}\ }\ \underbrace{\text{完整问题:QVI(非单调)}}_{\text{Painlevé、多解、难}}.\]

本质洞察:接触问题的"病态"可以精确归因到一处——摩擦圆盘的半径 \(\mu\lambda_n\) 依赖于待求的法向力 \(\lambda_n\)。把这个耦合切断(固定 \(\lambda_n\)),摩擦立刻变成极大单调的良态 VI;耦合上(\(\lambda_n\) 未知),问题升级为 QVI,非单调、可能无解。这解释了现代接触求解器的一大类策略——交替/不动点迭代(如 projected Gauss-Seidel、Staggered projections):固定 \(\lambda_n\) 解切向(单调子问题),再更新 \(\lambda_n\),交替直到收敛。它们本质是把 QVI 拆成一系列单调 VI 子问题。理解极大单调结构,你就理解了这类求解器为何这样设计、以及它们何时(耦合太强时)收敛困难。

LCP 的代数-几何结构:QP-KKT 等价与 P-matrix(专题 1 的理论深化)

VI 视角还揭示了 LCP 与二次规划(QP)的深刻联系——这是专题 1 用过、但本章用非光滑语言讲清的核心结构,也是理解"LCP 何时良态"的关键。

命题 7.6.1b(对称 LCP = QP 的 KKT)\(M\) 对称半正定(\(M=M^\top\succeq0\))时,LCP \(0\le z\perp Mz+q\ge0\) 恰好是凸 QP

\[\min_{z\ge0}\ \tfrac12 z^\top Mz + q^\top z\]

的 KKT 条件。推导:该 QP 的 Lagrange 函数 \(L=\tfrac12 z^\top Mz+q^\top z-\nu^\top z\)\(\nu\ge0\)\(z\ge0\) 的乘子),KKT 条件为 \(\nabla_z L=Mz+q-\nu=0\)(即 \(\nu=Mz+q\))、\(\nu\ge0\)\(z\ge0\)\(\nu^\top z=0\)。代入 \(\nu=Mz+q\)\(0\le z\perp Mz+q\ge0\)——正是 LCP!

这个等价的意义(认知工具 A,双重解读):对称 LCP 有两副等价面孔——互补问题(找满足互补的 \(z\))和**凸优化**(最小化二次能量)。前者难(组合),后者易(凸 QP 有多项式算法)。这解释了为什么**无摩擦接触**(法向 LCP 对称 PSD,因为它来自能量最小化原理)可以高效求解:它是凸 QP。而**有摩擦接触**的 \(M\) 非对称(切向耦合破坏对称性),LCP 不再对应凸 QP,回到组合难题——这从代数层面解释了 §7.1 洞察"摩擦让接触变难"。

P-matrix 与解的存在唯一性(专题 1/2 反复提及,这里给出本章视角的精确刻画):

定义 7.6.1c(P-matrix) 方阵 \(M\)P-matrix,若其所有主子式(principal minors)为正。等价刻画:对所有 \(z\ne0\),存在指标 \(i\) 使 \(z_i(Mz)_i>0\)

定理 7.6.1d(P-matrix ⟺ LCP 唯一可解,Murty 经典定理) \(M\) 是 P-matrix,当且仅当 LCP \(0\le z\perp Mz+q\ge0\) 对**所有** \(q\) 有唯一解。此时解映射 \(S(q)\) 单值且(分片线性、全局)Lipschitz——这正是 §7.3 练习 7.3.3 用 Mordukhovich 判据 T7 验证的结论。

为什么 Coulomb 摩擦不是 P-matrix(关键反例,桥接专题 2):无摩擦法向 LCP 的 \(M\) 是 PSD(且常 PD),是 P-matrix,解唯一。但加入 Coulomb 摩擦后,切向与法向耦合产生**非对称**项,且摩擦系数 \(\mu\) 较大时主子式可能变负——\(M\) 不再是 P-matrix。后果:(1) 解可能不唯一(多个一致的接触状态);(2) 解可能不存在(Painlevé 佯谬——经典例子是一根斜放的杆在高摩擦、特定角度下,刚体 + Coulomb + 单边约束的 LCP 无解,物理上对应"理论预测的法向力为负"的悖论,需要测度解或切向冲量来化解,见 §7.5 与 Stewart 2000)。

本质洞察:P-matrix 性质是接触问题"良态"与"病态"的数学分水岭。它的物理对应极其清晰——无摩擦接触良态(P-matrix,凸 QP,唯一解),有摩擦接触病态(非 P-matrix,非凸,可能无解/多解)。整个现代接触求解的技术路线(凸松弛 CCP/SAP 把非凸摩擦"投影"回凸问题、IPC barrier 绕过互补、半光滑 Newton 在 P-matrix 邻域二次收敛)都是在与"摩擦破坏 P-matrix"这一根本困难搏斗。理解了 P-matrix,你就理解了接触力学全部数值困难的源头。

视角三:互补即不可微方程(解析面孔,半光滑 Newton 的入口)

前两个视角是几何的。第三个视角——把互补条件压缩成一个**不可微方程**——才是绕过组合爆炸的关键。核心工具是 NCP 函数。

定义 7.6.3(NCP 函数) 函数 \(\psi:\mathbb{R}^2\to\mathbb{R}\)NCP 函数(互补函数),若

\[\psi(a,b)=0 \iff a\ge0,\ b\ge0,\ ab=0.\]

\(\psi\) 的零点恰好刻画互补条件。有了 NCP 函数,LCP \(0\le z\perp Mz+q\ge0\) 等价于**方程组**

\[\Phi(z)=0,\quad \Phi(z)_i=\psi(z_i,(Mz+q)_i),\ i=1,\dots,n.\]

组合结构(活跃集)被编码进 \(\psi\) 的非光滑性,方程 \(\Phi(z)=0\)\(n\) 个方程 \(n\) 个未知数——没有组合枚举了!代价:\(\Phi\) 不可微(\(\psi\) 在某些点不光滑),需要非光滑(半光滑)Newton 法。

最重要的 NCP 函数——Fischer–Burmeister(FB)函数

\[\boxed{\psi_{FB}(a,b) = \sqrt{a^2+b^2} - (a+b).}\]

验证它是 NCP 函数\(\psi_{FB}(a,b)=0\iff\sqrt{a^2+b^2}=a+b\)。两边须 \(a+b\ge0\),平方得 \(a^2+b^2=(a+b)^2=a^2+2ab+b^2\),即 \(ab=0\)。配合 \(a+b\ge0\)\(ab=0\),得 \(a,b\) 不同时负、且乘积为零 \(\Rightarrow a\ge0,b\ge0,ab=0\) ✓。

FB 函数的妙处:它在 \((a,b)\ne(0,0)\) 处光滑(\(\sqrt{a^2+b^2}\) 光滑),只在原点 \((0,0)\) 不可微。更重要的是——它强半光滑(下面),这保证了半光滑 Newton 的二次收敛。

最小函数 NCP:另一个常用 NCP 函数是 \(\psi_{\min}(a,b)=\min(a,b)\)(验证:\(\min(a,b)=0\iff a\ge0,b\ge0\) 且至少一个为 \(0\))。它更简单但只半光滑(非强半光滑),收敛阶略低。

半光滑函数与半光滑 Newton

要讲清半光滑 Newton 为何收敛,需要 §7.3 的 Bouligand 子微分,并引入半光滑性。

定义 7.6.4(半光滑与强半光滑,Qi–Sun 1993) 局部 Lipschitz 的 \(F:\mathbb{R}^n\to\mathbb{R}^n\)\(x\) 处**半光滑(semismooth)**,若 \(F\) 方向可微,且对所有 \(V\in\partial_C F(x+h)\)(Clarke 广义 Jacobian):

\[Vh - F'(x;h) = o(\|h\|)\quad(h\to0).\]

\(Vh-F'(x;h)=O(\|h\|^2)\),称**强半光滑(strongly semismooth)**。直觉:半光滑意味着"用 \(x+h\) 处的广义 Jacobian 乘 \(h\),能以高于一阶的精度逼近方向导数"——这正是 Newton 法收敛所需的"局部线性化质量"。

定义 7.6.5(半光滑 Newton 法)\(F(x)=0\) 的半光滑 Newton 迭代:

\[x_{k+1} = x_k - V_k^{-1}F(x_k),\quad V_k\in\partial_B F(x_k).\]

注意:取的是 Bouligand 子微分 \(\partial_B F\)(§7.3)的元素,不是 Clarke 的凸包 \(\partial_C F\)!这是 §7.3 陷阱里强调的——\(\partial_B\) 的元素是"真实分支的 Jacobian",保证非奇异;\(\partial_C\) 的凸组合可能奇异。

定理 7.6.6(Qi–Sun 半光滑 Newton 收敛,T5)\(F\) 在解 \(x^\star\) 处半光滑,且 \(\partial_B F(x^\star)\)(或 \(\partial_C F(x^\star)\))的所有元素非奇异。则半光滑 Newton 局部**超线性收敛**;若 \(F\)\(x^\star\) 强半光滑,则**二次收敛**。

这是 Qi–Sun 1993(Math. Program. 58:353–367,T5)的核心定理,是所有 NCP/VI 求解器收敛性的理论保证。证明骨架:由半光滑性 \(\|F(x_k)-F(x^\star)-V_k(x_k-x^\star)\|=o(\|x_k-x^\star\|)\)(强半光滑则 \(O(\|\cdot\|^2)\)),结合 \(V_k\) 非奇异(\(\|V_k^{-1}\|\) 有界),代入迭代式得 \(\|x_{k+1}-x^\star\|=o(\|x_k-x^\star\|)\)(超线性)或 \(O(\|x_k-x^\star\|^2)\)(二次)。这与光滑 Newton 的收敛证明结构相同,只是把"可微 + Jacobian 连续"换成"半光滑 + \(\partial_B\) 非奇异"。

定理 7.6.7(FB 函数强半光滑,T6) Fischer–Burmeister 函数 \(\psi_{FB}\)\(\mathbb{R}^2\) 上处处强半光滑;其向量/锥推广(SOC、SDC 上)由 Sun–Sun 2005(Math. Program. 103:575–581,T6)证明强半光滑。

T6 是 T5 的"燃料":因为 FB 强半光滑,所以基于 FB 的半光滑 Newton 二次收敛。这就是 PATH 求解器(Dirkse–Ferris)、KNITRO、Drake 接触求解器的理论内核——把接触 NCP 用 FB 改写为 \(\Phi(z)=0\),半光滑 Newton 二次收敛求解,全程无组合枚举。

FB 函数的广义 Jacobian:半光滑 Newton 的具体装配

要真正实现半光滑 Newton,必须能算出 \(\Phi(z)=0\) 的广义 Jacobian 元素 \(V\in\partial_B\Phi(z)\)。对逐分量定义的 \(\Phi_i(z)=\psi_{FB}(z_i,(Mz+q)_i)\),链式法则给出 Jacobian 的第 \(i\) 行。设 \(a=z_i\)\(b=(Mz+q)_i\)\(r=\sqrt{a^2+b^2}\)

情形 A:\((a,b)\ne(0,0)\)(光滑点)。 FB 可微,偏导

\[\frac{\partial\psi_{FB}}{\partial a}=\frac{a}{r}-1,\qquad\frac{\partial\psi_{FB}}{\partial b}=\frac{b}{r}-1.\]

\(i\) 行(对变量 \(z\) 求导,\(\partial b/\partial z=M_{i,:}\)\(M\) 的第 \(i\) 行,\(\partial a/\partial z=e_i^\top\)):

\[V_{i,:}=\Big(\frac{a}{r}-1\Big)e_i^\top + \Big(\frac{b}{r}-1\Big)M_{i,:}.\]

情形 B:\((a,b)=(0,0)\)(不可微点,对应 \(z_i\)\((Mz+q)_i\) 同时为零,"弱激活"接触)。 FB 在原点不可微,取 Bouligand 子微分的元素:\(\partial_B\psi_{FB}(0,0)=\{(\gamma_a-1,\gamma_b-1):(\gamma_a,\gamma_b)\in\partial_B\|\cdot\|(0,0)\}\),其中 \(\partial_B\|\cdot\|(0,0)\) 是单位圆周(任意单位向量 \((\gamma_a,\gamma_b)\)\(\gamma_a^2+\gamma_b^2=1\))。实现时**取任一单位向量**(如 \((\gamma_a,\gamma_b)=(1,0)\) 或归一化的随机方向),得

\[V_{i,:}=(\gamma_a-1)e_i^\top+(\gamma_b-1)M_{i,:}.\]

关键:这里取 \(\partial_B\) 的**一个元素**(一个单位方向),而非凸包平均——这正是 §7.3、§7.6 陷阱强调的。autodiff 在原点恰好返回这样一个元素(取决于浮点比较),所以 autodiff + 半光滑 Newton 自然兼容。

完整走一遍:标量 LCP 的半光滑 Newton 迭代

把上面装配成完整迭代,走一个最小的标量例子 \(0\le z\perp z-1\ge0\)(即 \(M=1,q=-1\),解显然是 \(z^\star=1\),此时 \(z=1>0\)\(Mz+q=0\),互补满足)。用 FB:\(\Phi(z)=\psi_{FB}(z,z-1)=\sqrt{z^2+(z-1)^2}-(z+(z-1))=\sqrt{2z^2-2z+1}-(2z-1)\)

迭代公式\(z_{k+1}=z_k-\Phi(z_k)/V_k\)\(V_k=\Phi'(z_k)\)(标量,光滑点导数)。

\[\Phi'(z)=\frac{2z-1}{\sqrt{2z^2-2z+1}}-2.\]

初值 \(z_0=3\)(远离解): - \(r_0=\sqrt{2\cdot9-6+1}=\sqrt{13}\approx3.606\)\(\Phi(z_0)=3.606-5=-1.394\)\(\Phi'(z_0)=5/3.606-2=-0.613\)。 - \(z_1=3-(-1.394)/(-0.613)=3-2.274=0.726\)

\(z_1=0.726\): - \(r_1=\sqrt{2\cdot0.527-1.452+1}=\sqrt{0.602}\approx0.776\)\(\Phi(z_1)=0.776-0.452=0.324\)\(\Phi'(z_1)=0.452/0.776-2=-1.418\)。 - \(z_2=0.726-0.324/(-1.418)=0.726+0.229=0.955\)

\(z_2=0.955\): - \(r_2=\sqrt{2\cdot0.912-1.910+1}=\sqrt{0.914}\approx0.956\)\(\Phi(z_2)=0.956-0.910=0.046\)\(\Phi'(z_2)\approx0.910/0.956-2=-1.048\)。 - \(z_3=0.955-0.046/(-1.048)=0.955+0.044=0.999\)

\(z_3=0.999\)\(\Phi(z_3)\approx0.001\)\(z_4\approx1.0000\)

观察误差序列 \(|z_k-1|\)\(2.0\to0.274\to0.045\to0.001\to\sim10^{-6}\)每步误差大致平方\(0.274^2\approx0.075\sim0.045\)\(0.045^2\approx0.002\sim0.001\))——这就是 T5/T6 保证的**二次收敛**的数值体现!全程无活跃集枚举,纯 Newton 迭代。这个手算例子让你亲眼看到"FB + 半光滑 Newton 二次收敛"不是抽象定理,而是可验证的数值事实(累积项目 verify_semismooth_newton.py 把它推广到 \(n=50\))。

阶段小结:到这里我们用三个视角(法锥、VI、不可微方程)重看了互补条件,深化了 LCP 的 P-matrix 良态性分析,并沿"NCP 函数 → 广义 Jacobian 装配 → 半光滑 Newton 二次收敛"的链条(含一个手算迭代)解释了现代接触求解器如何绕过组合爆炸。接下来 §7.7 把本章所有工具系统地映射到接触力学全章的具体技术,完成知识闭环。

对比:互补的三个视角导向三类求解器

用一张系统分类表(认知工具 E)总结,让你在面对接触求解器时能"按视角归类":

视角 数学形式 导向的算法 代表求解器 优劣
组合面孔 活跃集枚举 Pivoting(Lemke) 经典 LCP 求解器 小规模精确;\(2^n\) 爆炸,仅 P-matrix 保证
几何面孔 法锥/VI + 投影 Projected Gauss-Seidel ODE、Bullet、PGS 简单、并行;收敛慢、精度低
解析面孔 NCP 函数方程 \(\Phi=0\) 半光滑 Newton PATH、Drake、KNITRO 二次收敛、大规模;需 \(\partial_B\) 非奇异
(去互补) barrier 内罚 投影 Newton IPC(专题 4/进阶 2.5) 无穿透、Hessian SPD;引入参数 \(\hat d\)

最后一行"去互补"(IPC barrier)是本章进阶部分(与原文 2.5 节呼应)的方向——它干脆**不写互补条件**,用 barrier 把单边约束 \(d\ge0\) 替换为内罚 \(-(d-\hat d)^2\log(d/\hat d)\),从而避开互补的非光滑性,换来 Newton Hessian 半正定、全局收敛(专题 4 与进阶资源详述)。这是 2020 年后接触仿真"从互补转向 barrier"范式转变的核心(原文档前沿地图的主线)。

为什么摩擦破坏 P-matrix 性质:非对称化的代数根源

§7.5 反复说"无摩擦碰撞 LCP 良态(\(W\) 对称 PSD),加摩擦后病态"。这里从代数上说清**摩擦究竟如何破坏 P-matrix 性质**——这是接触求解一切困难(多解、无解、Newton 失效)的代数总根源,值得单独剖析(认知工具 C:本质洞察)。

无摩擦:对称即良态。 无摩擦时接触 LCP 的矩阵就是法向 Delassus 算子 \(W_n=J_nM^{-1}J_n^\top\)。它**对称**(\(W_n^\top=W_n\),因 \(M^{-1}\) 对称)且 PSD。对称 PSD 矩阵是 P0-matrix,对应**凸 QP**(§7.6 命题 7.6.1b:LCP \(\leftrightarrow\) QP-KKT),故解存在、(在严格互补下)唯一。这是无摩擦接触"永远能解"的代数保证。

有摩擦:耦合即非对称。 加入 Coulomb 摩擦后,切向约束的边界 \(\|P_t\|\le\mu P_n\) 把法向冲量 \(P_n\) 乘进了切向约束——这是一个**非对称耦合**:法向影响切向(通过 \(\mu P_n\) 缩放摩擦锥),但切向不以同样方式影响法向。线性化(如取定滑动方向后的"线性化摩擦锥")后,接触 LCP 的矩阵变成

\[M_{\text{fric}}=\begin{bmatrix}W_{nn} & W_{nt}\\ W_{tn}-\mu D & W_{tt}\end{bmatrix},\]

其中 \(-\mu D\) 项(摩擦把法向耦进切向方程)只出现在下三角,使 \(M_{\text{fric}}\ne M_{\text{fric}}^\top\)非对称矩阵不再对应任何 QP,P-matrix 性质可能丢失(取决于 \(\mu\) 大小与构型)。

后果的精确刻画: - \(\mu\) 小:\(M_{\text{fric}}\) 虽非对称但仍是 P-matrix(特征值实部为正),LCP 单解、半光滑 Newton 收敛。 - \(\mu\) 大 + 特定构型:\(M_{\text{fric}}\) 失去 P-matrix 性,LCP 可能**多解**(接触模式不唯一)或**无解**(Painlevé,§7.5)。这正是 Painlevé 佯谬在代数层的表现——不是数值误差,而是矩阵本身越过了 P-matrix 边界。

本质洞察:接触求解的全部代数困难,可归结为一句话——摩擦把对称 PSD 的法向 Delassus 算子,非对称化成可能非 P-matrix 的摩擦矩阵。对称 ↔ 凸 QP ↔ 良态;非对称 ↔ 无 QP 对应 ↔ 可能病态。这条"对称性 → 凸性 → 良态性"的链条,把 §7.2(摩擦的集值来源)、§7.5(Delassus 算子、Painlevé)、§7.6(P-matrix、QP 等价)三节的所有结论统一到一个代数事实上。理解它,你面对任何接触求解器就有了总纲:先问"有没有摩擦"(决定对称性),再问"\(\mu\) 多大、构型如何"(决定是否越过 P-matrix 边界)——这两问基本能预判一个接触问题好不好解。这也是为什么凸松弛(专题 2 的 CCP/SAP)和 barrier(IPC)这两条现代路线,本质上都是在"恢复某种对称性/凸性"以绕开非对称摩擦矩阵的病态。

⚠️ 常见陷阱

💡 概念误区:以为 NCP 函数把问题"光滑化"了 新手想法:"用 FB 函数把互补写成方程 \(\Phi(z)=0\),这下光滑可微了,普通 Newton 就行。" 实际上:NCP 函数把**组合**非光滑转化为**解析**非光滑——\(\Phi\) 仍不可微(FB 在原点不可微),只是非光滑的"类型"变了(从离散的活跃集切换变成连续的不可微点)。必须用**半光滑** Newton(取 \(\partial_B\) 元素),不是普通 Newton(需要可微)。 为什么重要:用普通 Newton 解 \(\Phi(z)=0\),在不可微点 Jacobian 无定义,迭代会崩溃或停滞。理解"NCP 函数转化而非消除非光滑",才会正确使用半光滑 Newton。

💡 概念误区:半光滑 Newton 里用 Clarke 广义 Jacobian 的凸组合 新手想法:"\(\partial_C F=\text{conv}\,\partial_B F\) 信息更全,Newton 步用 \(\partial_C\) 里的元素更稳。" 实际上:必须用 \(\partial_B F\)(Bouligand)的元素,不能用 \(\partial_C\) 的凸组合。原因(§7.3 已述):\(\partial_B\) 的元素是真实分支 Jacobian,定理 T5 保证非奇异;\(\partial_C\) 的凸组合是"平均",两个非奇异矩阵的凸组合可以奇异,导致 Newton 矩阵不可逆、迭代崩溃。 为什么重要:这是半光滑 Newton 实现的关键细节。autodiff 在不可微点恰好返回 \(\partial_B\) 的一个元素(§7.2 陷阱),所以"autodiff + 半光滑 Newton"恰好兼容——这也是为什么 autodiff 对 Newton 够用、对梯度下降危险。

🧠 思维陷阱:以为所有接触问题都能用半光滑 Newton 二次收敛求解 新手想法:"FB + 半光滑 Newton 二次收敛,那接触问题都这么解就行。" 实际上:二次收敛的前提是 \(\partial_B F(x^\star)\) 非奇异(T5)。当 Coulomb 摩擦导致 LCP 非 P-matrix(专题 2 的 Painlevé 构型),\(\partial_B\) 可能奇异(摩擦锥顶点),Newton 失去非奇异性保证,可能不收敛或收敛到非解点。这正是为什么 Coulomb 摩擦的接触求解至今是研究难题,也是 IPC barrier(去互补)兴起的动机。 正确思维:半光滑 Newton 的二次收敛是"良态"(P-matrix / 强正则)下的保证;遇到摩擦锥顶点、Painlevé 构型等"病态",需要正则化、凸松弛(专题 2 的 CCP/SAP)或换用 barrier 方法(IPC)。先判断问题良态性,再选算法。

练习

练习 7.6.1(推导题,在草稿纸上完成) (a) 验证最小函数 \(\psi_{\min}(a,b)=\min(a,b)\) 是 NCP 函数;(b) 计算 \(\psi_{\min}\)\((0,0)\) 和在 \(a=b>0\)(对角线,\(\min\) 的不可微面)处的 Bouligand 子微分 \(\partial_B\psi_{\min}\) 和 Clarke 次微分 \(\partial_C\psi_{\min}\);(c) 说明为什么半光滑 Newton 在 \(a=b\) 处取 \(\partial_B\) 的元素(即 \((1,0)\)\((0,1)\),对应"选哪个分支活跃")而非凸组合 \((\frac12,\frac12)\)

练习 7.6.2(证明题) 证明 Fischer–Burmeister 函数 \(\psi_{FB}(a,b)=\sqrt{a^2+b^2}-(a+b)\)\((a,b)\ne(0,0)\) 处光滑,并计算其梯度 \(\nabla\psi_{FB}=\left(\frac{a}{\sqrt{a^2+b^2}}-1,\ \frac{b}{\sqrt{a^2+b^2}}-1\right)\)。再用 §7.2 Gradient Formula 求 \(\partial_C\psi_{FB}(0,0)\)(提示:\(\nabla\psi_{FB}\) 沿不同方向 \((a,b)\to0\) 的极限是单位圆上点减 \((1,1)\),取凸包)。这一计算是验证 FB 半光滑性(T6)的第一步。

练习 7.6.3(跨视角综合题,开放性) 对同一个标量互补条件 \(0\le a\perp b\ge0\),分别写出它的三副面孔:(a) 组合面孔(列出活跃集情形);(b) 几何面孔(法锥包含 + 投影方程);(c) 解析面孔(FB 方程)。然后讨论:若有 \(n=30\) 个接触对,三种面孔分别导向的算法各自的计算复杂度量级是多少?为什么解析面孔(半光滑 Newton)在大规模时胜出?这道题帮你把本节三视角与专题 1 的活跃集方法、物理引擎的 PGS、PATH 求解器在脑中连成一张图。

练习 7.6.4(证明题) 本节指出"摩擦把对称 PSD 的法向 Delassus 算子非对称化"。(a) 验证无摩擦法向 Delassus 算子 \(W_n=J_nM^{-1}J_n^\top\) 对称且 PSD;(b) 取一个最小的单点滑动摩擦接触(一维法向 + 一维切向,给定滑动方向),写出线性化后的 \(2\times2\) 摩擦矩阵 \(M_{\text{fric}}\),验证它含一个只在下三角的 \(-\mu D\) 项故非对称;(c) 求一个临界摩擦系数 \(\mu_c\),使 \(\mu>\mu_c\)\(M_{\text{fric}}\) 不再是 P-matrix(提示:检查 \(2\times2\) P-matrix 判据——两个主子式均正),并解释这与 Painlevé 佯谬的关系。


§7.7 桥接:本章如何为接触力学全章提供数学根基 ⭐⭐

动机:每个工具都欠着一笔"债"

本章前六节建立了非光滑分析的工具箱:Clarke 广义梯度、四种次微分、微分包含、测度微分包含、互补的非光滑视角。但工具只有用起来才有意义。本节系统地"还债"——把每个工具映射到接触力学全章(专题 1–6)的一个具体技术,明确指出"那里用过但没证的东西,这里用本章工具补证"。这是 R14 跨章知识桥接的集中兑现,也是把零散工具收束成"知识树"的关键一步。

本章在接触力学全章中的定位是**理论天花板**:专题 1–6 教你**用**非光滑工具(写 LCP、用 FB 函数、求 saltation、调 Aubin 连续性),但**只用不证**;本章把这些工具系统化,给出它们的严格证明与统一框架。一句话——不学本章仍可做工程;学了本章才能做研究。

桥接一:为专题 1(互补/Signorini)补证解映射的 Lipschitz 性

专题 1 用了什么:写出 LCP \(0\le z\perp Mz+q\ge0\),断言"\(M\) 是 P-matrix 时解唯一且连续依赖 \(q\)"。 专题 1 没证什么:为什么解映射 \(S(q)\) 局部 Lipschitz?P-matrix 之外(如 Coulomb 摩擦的非对称 \(M\))会怎样?

本章如何补证:用 §7.3 的 Mordukhovich 判据(T7)。LCP 解映射 \(S(q)\) 的 Aubin 性质(局部 Lipschitz)等价于余导数判据 \(D^*S(\bar q|\bar z)(0)=\{0\}\)。当 \(M\) 是 P-matrix,可计算余导数(用 \(N_{\mathbb{R}^n_+}\) 的 limiting 法锥)验证判据满足,从而 \(S\) 单值 Lipschitz;结合 Robinson 强正则性(T9),还能得到"\(C^1\)-样"依赖。当 \(M\) 非 P-matrix(摩擦),判据可能失败,对应解多值/不存在(Painlevé)——这就从非光滑分析层面解释了专题 2"Coulomb 摩擦不是 P-matrix"的后果。§7.6 的命题 7.6.1(互补 = 法锥包含)是把 LCP 翻译成广义方程、从而能用 T7/T9 的桥梁。

桥接二:为专题 2(摩擦锥)补证摩擦力的广义梯度结构

专题 2 用了什么:摩擦力 \(F_t\in\mu\|F_n\|\cdot\text{Sign}(v_t)\),二阶锥几何,最大耗散原理。 专题 2 没证什么:为什么 \(\text{Sign}(v_t)\)\(v_t=0\) 处是 \([-1,1]\)(一维)或圆盘(二维)?这个"集值"从哪来?

本章如何补证:用 §7.2 的 Clarke 广义梯度。摩擦力是耗散势 \(\mu\lambda_n\|v_t\|\) 的负广义梯度,\(\partial_C(\mu\lambda_n\|\cdot\|)(0)\) 经 Gradient Formula 算出正是半径 \(\mu\lambda_n\) 的圆盘(§7.2 例 3)。stick-slip 的数学根源 = \(\partial_C|\cdot|\) 在尖点张成区间(§7.2 例 2)。最大耗散原理则是 §7.6 的 VI 表述 \(-v_t\in N_{\text{摩擦圆盘}}(\lambda_t)\)。专题 2 的"摩擦非单调"在本章是"VI 的 \(F\) 非单调"(§7.6),它解释了为什么接触 VI 适定性差。

桥接三:为专题 3(时步法)补证"为何用速度-冲量、隐式格式"

专题 3 用了什么:Moreau–Jean θ-scheme,以速度-冲量为变量,隐式离散,碰撞作为冲量涌现。 专题 3 没证什么:为什么不能用位置-加速度 + 显式格式?为什么碰撞不需要事件检测?

本章如何补证:用 §7.5 的测度微分包含。接触动力学本质是 MDI \(M\,dv+\ldots=J^\top d\Lambda\),其中 \(dv\) 是测度(碰撞时含 Dirac)、加速度不是有限值。所以**必须离散冲量(测度的积分)而非加速度(测度的密度)——这就是速度-冲量变量的根源(§7.5 已详细推导 Moreau–Jean 离散)。约束作用于右速度 \(v^+\),故需隐式。MDI 统一处理光滑段与碰撞,离散后自然涵盖两者,无需事件检测(也避开 Zeno)。§7.5 是专题 3 全部设计选择的数学解释。** Filippov 解(§7.4)则解释了专题 3 在 stick-slip 段的滑模行为。

桥接四:为专题 5(混合系统/Saltation)补证 saltation 矩阵的非光滑本质

专题 5 用了什么:saltation 矩阵 \(\Xi\) 描述接触事件(触地)瞬间状态雅可比的跳变,用于 Salted Kalman Filter、HiLQR-MPC。 专题 5 没证什么:saltation 矩阵的严格数学地位是什么?它是"导数"吗?在什么意义下?

本章如何补证:用 §7.3 的 Bouligand 导数(B-导数)。轨迹关于初值的灵敏度在接触事件处不可微(因为触地时刻本身依赖初值),但它是 Bouligand 可微**的——saltation 矩阵 \(\Xi\) 正是这个 B-导数("选对活跃分支后的 Jacobian",§7.3 定义 7.3.3 的精神)。Burden 等 2016(SIADS,原文档 T 部分提及)把 saltation 严格升级为 B-导数。这解释了为什么 saltation 矩阵"像导数但又在事件处跳变"——它是非光滑(分片光滑)映射的 B-导数。§7.3 的 \(\partial_B\) 与 B-导数是专题 5 saltation 理论的数学根基。**

桥接五:为专题 4/6(可微仿真、CI-MPC)补证可微性与灵敏度

专题 4/6 用了什么:可微接触仿真(对接触过程求梯度,用于学习/优化);CI-MPC 把接触作为优化变量。 专题 4/6 没证什么:接触过程"可微"是什么意思(接触明明非光滑)?IPC barrier 为何 Newton 友好?

本章如何补证: - 可微性:接触仿真的"梯度"实际是 §7.2/§7.3 的广义梯度/B-导数。autodiff 返回的是 \(\partial_B\) 的元素(§7.2 陷阱),对 Newton 够用、对梯度下降需谨慎。Le Lidec–Carpentier 等的解析可微仿真(原文档前沿)本质是计算接触 LCP/NCP 解映射的 B-导数。 - IPC barrier 的 Newton 友好性:IPC 用 barrier \(-(d-\hat d)^2\log(d/\hat d)\) 替代互补条件(§7.6 对比表"去互补"),它在可行域内光滑凸、Hessian 半正定(原文档 T12),所以投影 Newton 全局收敛,与 LCP 的 pivot 切换形成对比。本章 §7.6 的"互补三视角 + 去互补"为 IPC 提供了定位——它是规避互补非光滑性的第四条路。 - 灵敏度:CI-MPC 对接触轨迹的灵敏度依赖 §7.3 的 Robinson 强正则性(T9),它桥接 NMPC 的灵敏度分析(与第五批控制理论相连)。

桥接六:为第五批(控制理论)补证滑模控制与非光滑镇定的合法性

第五批用了什么:滑模控制(sliding mode control, SMC)设计不连续控制律 \(u=-k\,\text{sign}(\sigma(x))\) 把轨迹逼到滑模面 \(\sigma=0\) 上并锁住,获得对匹配不确定性的鲁棒性;非光滑系统的镇定常用 \(V=\|x\|_1\)\(V=\max_i|x_i|\) 等非光滑 Lyapunov 函数。

第五批没证什么:(1) 不连续控制律 \(u=-k\,\text{sign}(\sigma)\) 让闭环右端不连续,"闭环解"在什么意义下存在?(2) 用非光滑 \(V\) 证稳定时,"\(\dot V\)"是什么(\(V\) 不可微)?

本章如何补证: - 闭环解的合法性:闭环 \(\dot x=g(x)-k\,h(x)\,\text{sign}(\sigma(x))\) 右端不连续,其解就是 §7.4 的 Filippov 解。SMC 的"滑动阶段"= Filippov 滑模(轨迹锁在 \(\Sigma=\{\sigma=0\}\),§7.4 滑模判据),等效控制 \(u_{eq}\) = Filippov 凸系数 \(\alpha^\star\) 对应的有效控制。这与摩擦的被动滑模是同一个 Filippov 机制(练习 7.4.3 已点明),区别仅在切换面是设计者选的(\(\sigma(x)=0\) 任意期望流形)还是物理给的(\(v=0\))。对控制非仿射系统,还须注意 §7.4 提到的 Aizerman–Pyatnitskii 歧义——SMC 的等效控制法与 Filippov 凸化可能分叉,论文须声明用哪个。 - 非光滑 Lyapunov 的合法性:用 \(V=\|x\|_1\) 证稳定时,"\(\dot V\)"是 §7.4 定理 7.4.4 的**集值导数** \(\dot{\bar V}=\{\langle\xi,w\rangle:\xi\in\partial_C V(x),w\in F(x)\}\),稳定性要求其**最大值**为负。这正是 §7.2 Clarke 梯度(静态)+ §7.4 微分包含(动态)的缝合。

接触-控制的合流:足式机器人的接触镇定同时是"接触"(§7.5 测度动力学)和"控制"(§7.4 滑模/非光滑 Lyapunov)问题——这就是为什么本章把这两条线(接触的非光滑、控制的非光滑)用**同一套 Filippov/Clarke 工具**统一。第五批的滑模控制器作用在第三批时步法仿真的接触系统上时,闭环是一个**带不连续控制的测度微分包含**——目前严格理论(解的存在唯一)仍是活跃研究方向(专题 6 进阶提及)。

完整走一遍:从一个工程声明到本章定理的"还债"全链路

桥接表是静态的对照,这里动态地演示**一次完整的"还债"**——拿一个真实论文里常见的声明,一步步追溯它依赖本章哪些定理,每一步都"补上专题里欠的证明"。这是认知工具 D(理论-工程桥接)的集中演练,也是练习 7.7.3 的范例答案。

工程声明(取自一篇假想的"可微接触 MPC"论文摘要):"我们的接触感知 MPC 求解器二次收敛,接触力对参考轨迹 Lipschitz 连续,因而闭环鲁棒稳定,且全栈对策略参数可微。" 这一句话埋了**四个理论债**,逐一还:

债 1:「二次收敛」。求解器内核是半光滑 Newton 解接触 NCP(§7.6)。还债链:声称二次收敛 → 须 NCP 函数(FB)强半光滑(§7.6 T6,Sun–Sun 2005)+ 解处广义 Jacobian 的 \(\partial_B\) 元素非奇异(§7.6 T5,Qi–Sun 1993)。风险点:摩擦锥顶点(\(P_n=0\) 边界)处 \(\partial_B\) 可能奇异,二次收敛失效——论文须声明"在严格互补构型下"或加全局化(line search)。

债 2:「接触力 Lipschitz 连续」。这是接触解映射 \(S(p)\)(参数 \(p\) = 参考轨迹)的灵敏度。还债链:声称 Lipschitz → 须 Aubin 性质 → 余导数判据 \(D^*S(0)=\{0\}\)(§7.3 T7,Mordukhovich 判据,必须用 limiting 法锥而非 Clarke)→ 在 P-matrix/强正则构型成立。风险点:Coulomb 摩擦非 P-matrix,Painlevé 构型下判据失败,Lipschitz 不成立——论文须限定构型或承认局部失效。

债 3:「闭环鲁棒稳定」。MPC 闭环含接触切换,是非光滑系统。还债链:声称稳定 → 须非光滑 Lyapunov(§7.4 T4.4)集值导数最大值为负 + 闭环解为 Filippov 解(§7.4)。若用滑模控制成分,等效控制须与 Filippov 凸化一致(§7.4 Aizerman–Pyatnitskii,控制仿射时自动满足)。

债 4:「全栈可微」。还债链:接触"梯度"= §7.2/§7.3 的广义梯度/B-导数,autodiff 实际返回 \(\partial_B\) 元素(§7.2 陷阱)——对 Newton 够用,对梯度下降在尖点可能给"错误下降方向"。风险点(也是审稿高频被打回点,§7.8.5):GPU 仿真常把"部分物理层可微"写成"全栈可微",须明确声明可微的物理层(如"MPM 可微、刚体 AD 在 roadmap")。

本质洞察:一句 30 字的工程声明,背后是 §7.2、§7.3、§7.4、§7.6 四节、六个定理(T4.4/T5/T6/T7/T9 + Filippov 解理论)的支撑,每个声明都对应一个"风险点"(摩擦顶点、非 P-matrix、控制非仿射、部分可微)。这就是"学了本章才能做研究"的具体含义——不学本章,你只能写"实验上 work";学了本章,你能在投稿前自己审出这四个风险点,要么补证、要么诚实限定适用范围。这种"从声明倒推定理、从定理识别风险"的能力,是审稿人和资深研究者的核心素养,也是本章桥接节的终极目标。

桥接全景表

把上述桥接汇成一张总表(这是原文档"与其他批次/专题的桥梁"和"核心定理清单"的教学化整合),它就是本章的"知识树主干":

接触力学技术(出处) 用过但没证的东西 本章补证工具 关键定理
LCP/Signorini(专题 1) 解映射 Lipschitz 依赖、P-matrix 之外的行为 Mordukhovich 判据 + 法锥包含(§7.3, §7.6) T7, T9
摩擦锥(专题 2) \(\text{Sign}(v_t)\) 集值的来源、最大耗散 Clarke 广义梯度 + VI(§7.2, §7.6) T1, T2, T3
时步法(专题 3) 速度-冲量变量、隐式、无事件检测 测度微分包含 + Moreau 扫动(§7.5) — (MDI 框架)
混合系统/Saltation(专题 5) saltation 矩阵的导数地位 Bouligand 导数(§7.3) (Burden 2016)
可微仿真(专题 4) 接触"可微"的含义、IPC Newton 友好 广义梯度/B-导数 + barrier(§7.2, §7.6) T11, T12
CI-MPC(专题 6) 接触轨迹灵敏度、NMPC 良态 Robinson 强正则性(§7.3) T9
半光滑 Newton(专题 2/求解器) FB 为何二次收敛 半光滑性 + Qi–Sun(§7.6) T5, T6

概念预告:本章工具在机器人中的"长相"

最后给一张"概念预告表"(整合原文档同名表),让你知道本章每个抽象工具在真实机器人系统里以什么形式出现——这是认知工具 D(理论-工程桥接)的集中体现:

抽象工具(本章节) 在机器人中的"长相"
Clarke 广义梯度 \(\partial_C f\)(§7.2) Coulomb 摩擦律在 \(v_t=0\) 处的力集合 \([-\mu N,+\mu N]\)
四种次微分层级(§7.3) 选 Clarke 还是 Mordukhovich:工程实现 vs 论文灵敏度分析
Mordukhovich 余导数 \(D^*S\)(§7.3) 证明接触力对关节扰动的 Lipschitz 依赖(impedance 控制良态)
Bouligand 导数(§7.3) Hopping robot 触地瞬间的状态雅可比跳变(saltation 矩阵 \(\Xi\)
微分包含 + Filippov 解(§7.4) 足式机器人脚底的 stick-slip 切换、滑模控制
测度微分包含(§7.5) 落地冲击的速度跳变;时步法的冲量变量
Moreau 扫动过程(§7.5) 物体被接触约束"挡住"——自由运动直到撞上可行域边界
Delassus 算子 \(W=JM^{-1}J^\top\)(§7.5) 多点碰撞冲量的耦合矩阵;其条件数 = 仿真步病态度
三种碰撞律(§7.5) 仿真器恢复模型选型:Newton(教学)/ Poisson / Moreau(Siconos)
互补的三视角(§7.6) LCP 求解器选型:pivoting / PGS / 半光滑 Newton
Fischer–Burmeister + 半光滑 Newton(§7.6) PATH/KNITRO/Drake 所有 NCP 求解器的收敛保证
去互补 barrier(§7.6 对比表) 可微四足/灵巧手 CIO 的 IPC 表达

⚠️ 常见陷阱

💡 概念误区:以为"理论根基"对工程实践可有可无 新手想法:"专题 1–6 已经能跑仿真、做优化了,本章的证明只是锦上添花。" 实际上:本章的工具在**两类时刻**变得不可或缺——(1) 仿真/优化出现反常(发散、无解、穿透)需要诊断时(要靠 §7.5 判断"是不是测度处理错了"、§7.6 判断"是不是 Painlevé 无解");(2) 写论文需要证明收敛性/稳定性/灵敏度时(要靠 T5/T6/T7/T9)。前者是"调试的理论",后者是"发表的理论"。 为什么重要:缺了本章,你只能在工程问题面前"试错"(调参数、改步长),无法定位根本原因;面对审稿质疑只能"实验上 work",给不出理论保证。

🧠 思维陷阱:把本章工具孤立记忆,不连成知识树 新手想法:"Clarke 梯度、Filippov 解、Moreau 扫动……一个个记住就行。" 实际上:本章工具的价值在于它们的**连接**——它们共同服务于一个目标(给接触的非光滑性配上严格数学),且彼此关联(Clarke 梯度与 Filippov 凸化对偶 §7.4,limiting 次微分支撑余导数 §7.3,MDI 是 DI 的测度推广 §7.5)。孤立记忆会让你"见树不见林",遇到新问题不知道调用哪个工具。 正确思维:记住本章的"知识树"——根是"接触非光滑",三大主干是"替代导数(§2,3)、替代解(§4,5)、替代方程(§6)",桥接(§7)是把主干接到专题 1–6 的果实。带着这棵树,任何接触问题你都能定位到对应工具。

练习

练习 7.7.1(综合诊断题,开放性) 你在仿真一个灵巧手抓取,遇到三个现象:(a) 手指在物体表面"缓慢滑移"无法夹稳;(b) 某些抓取构型下求解器报"无解";(c) 物体被抓起瞬间,估计的物体速度有不连续跳变。请分别指出每个现象对应本章哪个理论(提示:a→正则化摩擦/static friction 缺失 §7.1/§7.4;b→Painlevé/非 P-matrix §7.6;c→碰撞测度/saltation §7.5/§7.3),并说明用哪个工具诊断。

练习 7.7.2(跨章综合题,需综合专题 1+2+3) 手动组装一个最小的"接触仿真一步"的数学流程:给定当前构型 \(q_k\)、速度 \(v_k\),用专题 1 的 Signorini(§7.6 命题 7.6.1 写成法锥)+ 专题 2 的摩擦锥(§7.2 广义梯度)+ 专题 3 的 Moreau–Jean 离散(§7.5),写出求解 \(v_{k+1}\) 和接触冲量 \(P_{k+1}\) 的完整方程组(含动量平衡、Signorini 互补、摩擦锥约束)。指出这个方程组用本章 §7.6 哪个视角(NCP 函数 / VI / barrier)求解最高效。

练习 7.7.3(研究路线开放题) 假设你要写一篇"新型可微接触求解器"的论文。请列出你需要从本章引用哪些定理来支撑以下声明:(a)"我的求解器二次收敛";(b)"接触力对扰动 Lipschitz 连续,故控制器稳定";(c)"我的方法无穿透";(d)"接触梯度(用于反向传播)是良定义的"。对每个声明,写出引用的定理编号(T1–T12)和对应本章小节。这道题让你把本章从"学习材料"转化为"研究工具库"。

练习 7.7.4(跨章综合题,需综合专题 3 + 第五批控制理论) 桥接六指出"滑模控制器接到接触时步法仿真上,闭环是带不连续控制的测度微分包含"。请针对一个最小例子——单腿跳跃机器人(一维,腿端与地面 Signorini 接触,控制律为滑模 \(u=-k\,\text{sign}(\dot y-\dot y_{ref})\))——分析:(a) 自由飞行段、接触段、触地碰撞瞬间分别对应本章哪个数学对象(ODE / DI / MDI)?(b) 滑模控制的切换面与接触切换面(\(\phi=0\))相交时,会不会出现 §7.4 多面交线的等效动力学多值?(c) 要证这个闭环稳定,你需要组合本章哪几个定理(提示:碰撞步用 §7.5 能量耗散,接触段用 §7.3 强正则,控制用 §7.4 非光滑 Lyapunov)?

练习 7.7.5(论文审稿模拟题,开放性) 把"完整走一遍:从一个工程声明到本章定理"的方法反向运用:你作为审稿人,收到一篇声称"用 GPU 可微仿真训练的接触策略,全栈可微且接触力 Lipschitz 连续保证策略梯度无偏"的论文。请列出你会基于本章提出的**三个质疑**(提示:全栈可微 vs 部分可微 §7.8.5;Lipschitz 须 P-matrix/强正则 §7.3,Coulomb 摩擦未必满足;autodiff 返回 \(\partial_B\) 元素对梯度下降在尖点可能有偏 §7.2),并对每个质疑指出作者应补充什么证明或限定。


本章常见误解汇总

下表汇总本章贯穿的核心误解与正确理解,是复习时的"查错清单"。这些误解大多源于"用光滑世界的直觉去理解非光滑对象"。

误解 正确理解 出处
非光滑 = 不连续 非光滑核心是 Lipschitz 但不可微(连续不可导);不连续是更进一步的层次 §7.1
光滑化(penalty/正则化)是无害近似 光滑化改变问题数学类型,把非光滑转化为数值刚性/物理失真,非光滑性守恒 §7.1
Clarke 广义梯度是唯一的非光滑导数 有四种次微分;Clarke 永远凸(便利但丢信息),Mordukhovich 可非凸(精细) §7.2, §7.3
Clarke 正则 = 光滑 正则是 \(f^\circ=f'\);凸函数、max 函数都正则但不光滑;凹函数光滑但不正则 §7.2
Mordukhovich 次微分是凸集 limiting 次微分一般非凸;Clarke 是它的凸包 §7.3
半光滑 Newton 用 Clarke 凸 Jacobian 必须用 Bouligand \(\partial_B\) 的元素(真实分支,非奇异);凸组合可能奇异 §7.3, §7.6
不连续 ODE 靠"在切换面定义右端值"解决 必须 Filippov 凸化为集值右端,让解自己"选"合适的值 §7.4
滑模/stick-slip 抖振是数值 bug 要消除 滑模是物理正确的(静摩擦);抖振是离散没处理好凸组合 §7.4
碰撞加速度是"很大的有限值" 刚性碰撞加速度是 Dirac 测度;基本量是冲量(测度的积分) §7.5
减小步长能"积分穿过"碰撞 碰撞瞬时,无论步长多小都在一步内;须用冲量 + 隐式约束 §7.5
Filippov 凸化是唯一的"加厚"方式 还有 Krasovskii、Utkin;控制仿射且 Sign 良性时三者一致,非仿射时分叉 §7.4
碰撞律只有 Newton 一种 Newton/Poisson/Moreau 三种;Newton 多体可能违反能量守恒,Moreau 多点天然一致 §7.5
多点碰撞冲量分配总是唯一的 高对称/刚性耦合下解可能不唯一(凸系数自由度);唯一的是等效速度/质心轨迹 §7.4, §7.5
Delassus 算子只判"是否 PSD" 其条件数 \(\kappa(W)\) 决定碰撞 LCP 病态度与 PGS 收敛速度;非对角元 = 接触耦合 §7.5
NCP 函数把互补问题"光滑化"了 NCP 函数把组合非光滑转为解析非光滑,仍需半光滑 Newton §7.6
所有接触都能半光滑 Newton 二次收敛 \(\partial_B\) 非奇异;Coulomb 摩擦/Painlevé 下可能失败 §7.6

本章小结

本章从一个核心信念出发——接触力学的全部数学困难,源于光滑性在接触、摩擦、碰撞上系统失效——构建了非光滑分析的完整工具箱。回顾这棵知识树:根是"非光滑的三大物理来源"(§7.1),三大主干是"替代导数"(Clarke 广义梯度 §7.2、四种次微分 §7.3)、"替代解"(微分包含/Filippov §7.4、测度微分包含/Moreau §7.5)、"替代方程"(互补的非光滑视角 §7.6),桥接(§7.7)把主干接到接触力学全章。

核心收获可浓缩为三句话:

  1. 用集合换确定性:光滑世界每点一个导数(向量),非光滑世界每点一个导数集合(次微分)。Clarke 广义梯度、Filippov 凸化、法锥,都是这个思想的化身。
  2. 正则性逐级降低、对象逐级提升:微分方程(解 \(C^1\))→ 微分包含(解绝对连续)→ 测度微分包含(解 BV)。接触动力学处于最底层,加速度是测度——这是时步法用速度-冲量的根源。
  3. 同一个互补条件有三副面孔:组合(活跃集)、几何(法锥/VI)、解析(NCP 方程)。三者等价但导向不同算法,半光滑 Newton(解析面孔)绕过组合爆炸。
  4. 多接触/高对称构型的解可能不唯一:从 §7.4 多面交线的 Filippov 多值、§7.5 Delassus 病态、到 Newton's cradle 的碰撞分配歧义,是同一现象的不同侧面——刚体瞬时理想化在高对称下信息不足。唯一确定的是宏观可观测量(等效速度、质心轨迹),不唯一的是内部分配(凸系数、逐点冲量)。工程上靠额外物理(刚度差、时序、软接触)或整步隐式求解补全。
  5. "加厚不连续"和"碰撞恢复"都是有选择的建模决策:Filippov/Krasovskii/Utkin 是三种凸化、Newton/Poisson/Moreau 是三种碰撞律。Coulomb 摩擦恰好落在各自的"良性一致区",故实践少区分;但写论文/做非仿射控制时必须显式声明用哪个(R7 解概念精确性)。

符号表

本章新引入的数学符号及含义:

符号 含义 首次出现
\(\phi(q)\) 接触间隙函数(有符号距离) §7.1
\(\lambda_n,\lambda_t\) 法向接触力、切向摩擦力 §7.1
\(\text{Sign}(s)\) 集值符号函数(\(s=0\) 时取 \([-1,1]\) §7.1
\(N_C(x)\) 集合 \(C\)\(x\) 的法锥 §7.1
\(\mathcal{K}_\mu\) 摩擦锥 \(\{\|\lambda_t\|\le\mu\lambda_n\}\) §7.1
\(f^\circ(x;v)\) Clarke 广义方向导数 §7.2
\(\partial_C f(x)\)\(\partial f(x)\) Clarke 广义梯度(次微分) §7.2
\(f'(x;v)\) 经典(单侧)方向导数 §7.2
\(\Omega_f\) / \(D_f\) \(f\) 的不可微点集 / 可微点集 §7.2
\(\text{conv}\,S\) 集合 \(S\) 的凸包 §7.2
\(\hat\partial f(x)\) Fréchet(regular)次微分 §7.3
\(\partial_L f(x)\) / \(\partial_M f\) limiting(Mordukhovich)次微分 §7.3
\(\partial_B f(x)\) Bouligand 子微分(可微点梯度极限) §7.3
$D^*S(\bar x \bar y)$ Mordukhovich 余导数
\(\text{gph}\,S\) 集值映射 \(S\) 的图 §7.3
\(\text{lip}\,S\) Aubin 性质的 Lipschitz 模长 §7.3
\(\mathbb{B}\) 单位球 §7.3
\(K[f](x)\) Filippov 集值映射(凸化算子) §7.4
\(K_{\text{Kras}}[f]\) Krasovskii 正则化(不排除零测集的凸包) §7.4
\(\Sigma\) 切换面 \(\{\sigma(x)=0\}\) §7.4
\(\alpha^\star\) Filippov 凸系数(滑模等效动力学) §7.4
\(u_{eq}\) Utkin 等效控制 §7.4
\(\dot{\bar V}(x)\) 非光滑 Lyapunov 函数的集值导数 §7.4
\(dv\) 速度的微分测度(含 Dirac) §7.5
\(\delta_{t^\star}\) \(t^\star\) 处的 Dirac 测度 §7.5
\(d\Lambda\) / \(P_{k+1}\) 接触冲量测度 / 一步的接触冲量 §7.5
\(e\) 碰撞恢复系数(restitution) §7.5
\(C(t)\) 移动的凸约束集(扫动过程) §7.5
\(W=J_nM^{-1}J_n^\top\) Delassus 算子(接触空间有效逆质量) §7.5
\(P_n,P_t\) 法向、切向接触冲量 §7.5
\(P_c,P_r\) Poisson 碰撞律的压缩、恢复冲量 §7.5
\(\kappa(W)\) Delassus 算子条件数(碰撞 LCP 病态度) §7.5
\(\text{VI}(C,F)\) 变分不等式 §7.6
\(\psi_{FB}(a,b)\) Fischer–Burmeister NCP 函数 §7.6
\(\psi_{\min}(a,b)\) 最小函数 NCP 函数 §7.6
\(\Phi(z)\) NCP 函数构造的非光滑方程组 §7.6
\(\hat d\) IPC barrier 的支撑距离参数 §7.6

术语中英对照表

本章术语首次出现时已标注中英对照(R7),这里汇总成查阅表。阅读英文文献(Clarke、Rockafellar–Wets、Filippov、Brogliato、Facchinei–Pang)时按此对照,避免"同一概念在中英文里以为是两个东西"的常见混淆。

中文术语 英文术语 一句话辨析 对应节
非光滑分析 nonsmooth analysis 研究 Lipschitz 但不可微对象的微分学 §7.1
广义梯度 / 次微分 generalized gradient / subdifferential Clarke 语境下二者同义,均指导数集合 §7.2
广义方向导数 generalized directional derivative \(f^\circ(x;v)\),基点游走的 limsup,自动凸 §7.2
凸包 convex hull \(\text{conv}\),所有凸组合构成的最小凸集 §7.2
Fréchet(正则)次微分 Fréchet (regular) subdifferential \(\hat\partial\),层级最小、最"紧" §7.3
limiting 次微分 limiting (Mordukhovich) subdifferential \(\partial_L\),一般非凸,运算法则精确 §7.3
Bouligand 子微分 Bouligand subdifferential / B-subdifferential \(\partial_B\),可微点梯度极限(不取凸包) §7.3
余导数 coderivative \(D^*S\),集值映射的"对偶导数" §7.3
Aubin 性质 / 类 Lipschitz Aubin property / Lipschitz-like 集值映射的局部 Lipschitz 推广 §7.3
强正则性 strong regularity Robinson 意义,线性化逆单值 Lipschitz §7.3
半光滑 semismooth 方向导数存在且 Jacobian 极限相容 §7.6
微分包含 differential inclusion (DI) \(\dot x\in F(x)\),比微分方程更基本 §7.4
Filippov 解 Filippov solution 凸化后微分包含的绝对连续解 §7.4
滑模 sliding mode 轨迹被锁在切换面上滑行 §7.4
等效控制 / 等效动力学 equivalent control / dynamics 滑模上的有效(约化)动力学 §7.4
横穿 crossing 轨迹穿过切换面而不滑模 §7.4
测度微分包含 measure differential inclusion (MDI) \(dv\in\ldots\),速度可跳变(BV) §7.5
有界变差 bounded variation (BV) 总变差有限,至多可数跳点 §7.5
微分测度 differential measure BV 函数诱导的测度(含 Dirac) §7.5
扫动过程 sweeping process 点被移动凸集"扫"着走 §7.5
恢复系数 coefficient of restitution \(e\in[0,1]\),碰撞弹性程度 §7.5
冲量 impulse 力测度在一步上的积分(有限可算) §7.5
Delassus 算子 Delassus operator \(JM^{-1}J^\top\),接触空间有效逆质量 §7.5
互补问题 complementarity problem (LCP/NCP) \(0\le a\perp b\ge0\) 的求解问题 §7.6
变分不等式 variational inequality (VI) \(\langle F(x^\star),x-x^\star\rangle\ge0\) §7.6
NCP 函数 NCP function 零点刻画互补的函数(如 FB) §7.6
内罚 / 障碍函数 barrier function IPC 用于"去互补"的内点罚 §7.6
近似正则集 prox-regular set 投影单值、\(d_C\) 局部 \(C^1\) 的集合 §7.8.2
Moreau–Yosida 正则化 Moreau–Yosida regularization 非光滑函数的光滑下逼近 §7.8.3
近端算子 proximal operator \(\text{prox}_{\lambda f}\),投影的推广 §7.8.3
软阈值算子 soft-thresholding operator $ x
Huber 函数 Huber function $ x
弱凸 weakly convex 加抛物线后凸;曲率有下界 \(-\rho\) §7.8.4
随机平滑 randomized smoothing 高斯卷积光滑化,梯度可零阶采样估计 §7.8.4
Painlevé 佯谬 Painlevé paradox 高摩擦构型下经典刚体方程无解 §7.5
横穿 vs 滑模 crossing vs sliding 切换面行为二分(同向穿过 / 被锁滑行) §7.4

使用提示:上表的"一句话辨析"只为唤起记忆,不能替代正文定义——尤其 limiting 次微分(非凸)与 Clarke(凸包)、Filippov(排除零测集)与 Krasovskii(不排除)这几对易混术语,务必回正文核对精确定义后再用于论文写作。读英文文献时,注意同一中文译名在不同学派文献里可能对应不同英文(如"次微分"在凸分析、Clarke、Mordukhovich 三套体系含义不同),这是 R7 术语一致性在跨语言、跨学派阅读中最易踩的坑。

定理速查表

本章核心定理/公式及一句话说明(编号 T1–T12 与原文档核心定理清单对齐):

定理/公式 一句话说明 对应节
T1 Rademacher 定理 局部 Lipschitz 函数几乎处处可微(Gradient Formula 的立足石) §7.2
T2 Clarke Gradient Formula \(\partial_C f(x)=\text{conv}\{\lim\nabla f(x_k)\}\),计算广义梯度的实用公式 §7.2
T3 Clarke Chain Rule II 复合函数广义梯度的(上包含式)链式法则,\(g\) 正则时取等 §7.2
T4 Lebourg 均值定理 \(f(y)-f(x)=\langle\zeta,y-x\rangle\)\(\zeta\in\partial_C f(u)\),Lipschitz 版中值定理 §7.2
定义 7.2.1 广义方向导数 \(f^\circ(x;v)=\limsup\frac{f(y+tv)-f(y)}{t}\),自动凸(基点游走的功劳) §7.2
T8 Clarke = conv(Mordukhovich) \(\partial_C f=\text{conv}\,\partial_L f\),Clarke 是 limiting 的凸化 §7.3
定理 7.3.5 次微分层级 \(\hat\partial\subseteq\partial_L\subseteq\partial_C\),精度递减 §7.3
T7 Mordukhovich 判据 \(S\) Aubin(局部 Lipschitz)\(\iff D^*S(0)=\{0\}\),解映射稳定性的充要刻画 §7.3
T9 Robinson 强正则性 广义方程强正则 \(\iff\) 线性化逆单值 Lipschitz,KKT 对参数 \(C^1\)-样依赖 §7.3
定义 7.4.1 Filippov 凸化 \(K[f]\) 把不连续右端加厚为上半连续凸值映射 §7.4
Filippov 凸系数 \(\alpha^\star=\frac{\langle\nabla\sigma,f_1\rangle}{\langle\nabla\sigma,f_1-f_2\rangle}\),滑模等效动力学 §7.4
定理 7.4.4 非光滑 Lyapunov 集值导数 \(\max\dot{\bar V}<0\Rightarrow\) 渐近稳定(滑模控制根基) §7.4
Filippov ⊇ 关系 \(K_{\text{Fil}}\subseteq K_{\text{Kras}}\);控制非仿射时与 Utkin 分叉(Aizerman–Pyatnitskii) §7.4
定义 7.5.2 测度微分包含 \(M\,dv+(\ldots)dt=J^\top d\Lambda\),接触动力学的测度形式 §7.5
扫动过程 \(-dv\in N_{C(t)}(v)\),点被移动凸集"扫"着走 §7.5
Delassus 碰撞 LCP \(0\le P_n\perp WP_n+(1+e)J_nv^-\ge0\)\(W\) 对称 PSD(无摩擦良态) §7.5
碰撞能量耗散 \(\Delta T=-\tfrac12(1-e^2)\frac{(v_n^-)^2}{J_nM^{-1}J_n^\top}\le0\) §7.5
命题 7.6.1 互补=法锥包含 \(0\le a\perp b\ge0\iff -b\in N_{\mathbb{R}_+}(a)\iff a=\text{proj}_{\mathbb{R}_+}(a-b)\) §7.6
FB 函数 \(\psi_{FB}=\sqrt{a^2+b^2}-(a+b)\),零点刻画互补、强半光滑 §7.6
T5 Qi–Sun 半光滑 Newton 半光滑 + \(\partial_B\) 非奇异 ⇒ 超线性;强半光滑 ⇒ 二次收敛 §7.6
T6 Sun–Sun FB 强半光滑 FB 处处强半光滑(含 SOC/SDC 锥推广),保证 Newton 二次收敛 §7.6

知识点总表

编号 知识点 核心要点 对应节 难度
7.1 非光滑的三大来源 单边约束/摩擦(层次一,集值)+ 碰撞(层次二,测度);非光滑守恒 §7.1 ⭐⭐
7.2 Clarke 广义梯度 \(f^\circ\) 自动凸→\(\partial_C\) 凸紧非空;Gradient Formula;摩擦力=耗散势负梯度 §7.2 ⭐⭐⭐
7.3 四种次微分层级 \(\hat\partial\subseteq\partial_L\subseteq\partial_C\);Clarke=conv(Mord);余导数+Mord 判据 §7.3 ⭐⭐⭐⭐
7.4 微分包含与 Filippov 解 不连续右端凸化为集值;滑模=stick;Filippov 与 Clarke 对偶 §7.4 ⭐⭐⭐
7.5 测度微分包含 速度 BV、加速度测度;Moreau 扫动;时步法用冲量的根源 §7.5 ⭐⭐⭐⭐
7.6 互补的非光滑视角 三副面孔(组合/几何/解析);FB+半光滑 Newton 绕过组合爆炸 §7.6 ⭐⭐⭐
7.7 桥接全章 每个工具补证专题 1–6 的一个技术;知识树主干接果实 §7.7 ⭐⭐
7.8 现代非光滑前沿 五锥层级、prox-regular、Moreau–Yosida、随机非光滑、去互补范式 §7.8 ⭐⭐⭐⭐

§7.8 进阶专题:现代非光滑分析与接触前沿(档位 4 选学)⭐⭐⭐⭐

本节是档位 4 的延伸,把本章的经典理论推进到 2020–2026 年的研究前沿。第一遍学习可跳过;有志于 T-RO / TOG / Math Program 论文的读者建议精读。这里只勾勒思想脉络与文献入口,不展开全部证明。

7.8.1 切锥、法锥与正规锥的完整层级

§7.3 用到 limiting 法锥。完整的变分分析有**五个锥**,它们的层级是 §7.3 次微分层级的"对偶版本"(次微分是锥在 epigraph 上的投影)。设 \(C\subseteq\mathbb{R}^n\) 闭,\(\bar x\in C\)

  • Bouligand(contingent)切锥 \(T_C(\bar x)\):所有"切方向"\(v=\lim\frac{x_k-\bar x}{t_k}\)\(x_k\in C\to\bar x\)\(t_k\downarrow0\))。一般非凸。
  • Clarke 切锥 \(T^{Cl}_C(\bar x)\):永远凸,\(T^{Cl}\subseteq T\)
  • Fréchet(regular)法锥 \(\hat N_C(\bar x)\)Mordukhovich 法锥 \(N_C(\bar x)\)Clarke 法锥 \(N^{Cl}_C=\text{conv}\,N_C\)。层级 \(\hat N\subseteq N\subseteq N^{Cl}\)

核心结论:在 Clarke 正则集(如 \(C^1\) 流形、凸集)上,所有锥取等。在非正则点(如非凸集的角点)严格包含。一个干净反例:\(C=\{(x,y):y=|x|\}\)(V 形),在原点 \(T_C=C\)(V 形非凸),而 \(T^{Cl}_C=\{0\}\)(只含原点)。这解释了为什么**多面体的角点、棱边**处接触约束的处理特别棘手——切锥非凸,投影不唯一。

运行示例:凸角 vs 凹角的五锥对比。 接触约束集的"角"分两种,数值性质截然不同(认知工具 B)。

  • 凸角(外角,如方块的角):可行域 \(C=\{(x,y):x\ge0,\ y\ge0\}\)(第一象限),考察原点。切锥 \(T_C(0)=C\)(第一象限,!);Fréchet 法锥 \(\hat N_C(0)=\{(a,b):a\le0,b\le0\}\)(第三象限,凸);三个法锥取等 \(\hat N=N=N^{Cl}\)该点 Clarke 正则,投影 \(P_C\) 唯一(投影到第一象限就是把负分量截零),penalty 梯度良定义。这是大多数凸接触约束的情形——好处理。
  • 凹角(内角/reentrant,如 L 形工件的内凹角):可行域 \(C=\mathbb{R}^2\setminus\{x>0,y>0\}\)(去掉第一象限开集,即"L 形"区域),考察原点。切锥 \(T_C(0)=\mathbb{R}^2\setminus\{x>0,y>0\}\)非凸!是个 270° 的扇形);Fréchet 法锥 \(\hat N_C(0)=\{0\}\)(退化,只有零向量是正则法向);而 Mordukhovich 法锥 \(N_C(0)\) 含两条坐标半轴方向(非凸)。该点非正则\(\hat N\subsetneq N\),投影 \(P_C\) 多值——原点附近沿对角线 \((t,t)\)\(t>0\))的点到 \(C\) 的投影既可投到 \(x\) 轴也可投到 \(y\) 轴(等距),不唯一。距离函数 \(d_C\) 在此非 \(C^1\),penalty 梯度未定义。

本质洞察:凸角与凹角在五锥层级上的差异(凸角处切锥凸、法锥取等、正则;凹角处切锥非凸、\(\hat N\) 退化、不正则)精确预言了工程数值行为:凸角接触稳定(投影唯一、penalty 光滑),凹角接触病态(投影多值、Newton 在该点发散)。这就是为什么 CAD 模型里的内凹角(机械臂抓 L 形零件、足踩台阶内棱)是接触仿真的老大难——不是算法 bug,而是**约束集在该点的变分几何本质非正则**。对策(§7.8.2):圆角化(把凹角磨成 prox-regular 的光滑过渡)或换 IPC barrier(用距离的光滑函数避开投影多值)。五锥层级不是抽象游戏,它是诊断"这个接触构型为何难解"的精密仪器。

7.8.2 prox-regular 集与投影的唯一性

接触约束集 \(K=\{q:\phi(q)\ge0\}\) 在"角点/边缘"是否光滑,直接决定 Signorini 投影解的唯一性。关键概念是 prox-regularity(Poliquin–Rockafellar–Thibault 2000,Trans. AMS 352:5231–5249):

定义\(C\)\(\bar x\) 处 prox-regular,若存在 \(r>0\) 使 \(\langle v,x'-x\rangle\le\frac{r}{2}\|x'-x\|^2\) 对所有 \(v\in N_C(x)\)\(\|v\|\le\varepsilon\) 成立。等价刻画(T10):\(C\) prox-regular \(\iff\) 距离函数 \(d_C\) 在邻域 \(C^1\)、且投影 \(P_C\) 单值局部 Lipschitz。

接触应用:凸约束集处处 prox-regular,投影唯一(penalty 梯度 \(\|q-P_C(q)\|^2\) 良定义);非凸约束集(如 "L 形"工件)的内凹角点不 prox-regular,\(P_C\) 多值、\(d_C\)\(C^1\),penalty 梯度未定义,Newton 发散。工程对策:局部几何 smoothing(圆角化)或换用 IPC barrier。这是原文档陷阱 3 的理论根。

运行示例:prox-regular 半径 = 曲率半径。 prox-regularity 的常数 \(r\) 有干净的几何意义——它就是"能从外面无障碍滚动的最大球半径"(认知工具 A)。看圆盘外部 \(C=\{x\in\mathbb{R}^2:\|x\|\ge R\}\)(半径 \(R\) 的孔,物体在孔外,对应"绕过圆柱障碍"的可行域):

  • 凸侧(孔内边界,物体在圆盘 \(\|x\|\le R\) 内):边界向内弯,处处 prox-regular,\(r=\infty\)(投影永远唯一,圆是凸的)。
  • 凹侧(孔外边界,物体在 \(\|x\|\ge R\) 外):边界向外弯(从物体看是凹的)。投影到圆周:\(P_C(x)=R\,x/\|x\|\)\(\|x\|<R\) 的内部点——但**圆心 \(x=0\) 处投影多值**(到整个圆周等距)!prox-regular 半径 \(r=R\):只有当探测点离边界小于 \(R\)(即 \(\|x\|>0\) 且在曲率半径内)时投影才唯一,超过则多值。曲率越大(\(R\) 越小),prox-regular 半径越小,越容易投影失效。

这把抽象的 prox-regularity 常数 \(r\) 锚定到可测量的几何量(曲率半径):接触约束面的局部曲率半径就是它的 prox-regular 半径,决定了 penalty/投影方法在多远范围内可靠。尖锐特征(小曲率半径、棱、角)prox-regular 半径小甚至为零,这是它们数值棘手的几何根源——与 §7.8.1 凹角分析、§7.1 正则化弊病完全一致,是同一现象的微分几何刻画。

7.8.3 Moreau–Yosida 正则化与近端算子

连接非光滑与光滑的桥梁是 Moreau–Yosida 正则化:对 Lipschitz/凸函数 \(f\)

\[f_\lambda(x)=\min_y\Big\{f(y)+\frac{1}{2\lambda}\|x-y\|^2\Big\},\quad \text{prox}_{\lambda f}(x)=\arg\min_y\{\cdots\}.\]

\(f_\lambda\)\(f\) 的光滑下逼近(\(C^1\),梯度 \(\nabla f_\lambda=\frac1\lambda(x-\text{prox}_{\lambda f}(x))\)),\(\lambda\to0\)\(f_\lambda\to f\)在 prox-regular 集上 \(\text{prox}=\text{proj}\)。这套理论(Bauschke–Combettes 2017 的算子主线)是 ADMM、forward-backward splitting、以及 IPC 求解的算法基础——它让非光滑问题可以用"光滑化 + 近端步"迭代求解,且收敛可证。近端算子是 §7.6 投影方法的推广(投影是示性函数的 prox)。

运行示例:\(f(x)=|x|\) 的 Moreau–Yosida 正则化就是 Huber 函数。 这个例子把抽象的 prox 落到一个你或许已经认识的对象,并直接连回 §7.1 的摩擦正则化(认知工具 A + B)。逐步算:

  • Step 1:算 prox。 \(\text{prox}_{\lambda|\cdot|}(x)=\arg\min_y\{|y|+\frac1{2\lambda}(x-y)^2\}\)。对 \(y\) 求(次)导并令零:\(0\in\text{Sign}(y)+\frac1\lambda(y-x)\),解出**软阈值算子(soft-thresholding)** \(\text{prox}_{\lambda|\cdot|}(x)=\text{sign}(x)\max(|x|-\lambda,0)\)
  • Step 2:代回算 \(f_\lambda\) 分两段:\(|x|\le\lambda\) 时 prox \(=0\)\(f_\lambda(x)=0+\frac1{2\lambda}x^2=\frac{x^2}{2\lambda}\)(抛物线);\(|x|>\lambda\) 时 prox \(=x-\lambda\,\text{sign}(x)\),代入得 \(f_\lambda(x)=|x|-\frac\lambda2\)(平移的绝对值)。合起来:
\[f_\lambda(x)=\begin{cases}\dfrac{x^2}{2\lambda}, & |x|\le\lambda,\\[6pt] |x|-\dfrac\lambda2, & |x|>\lambda,\end{cases}\]

这**正是 Huber 函数**(统计鲁棒回归、视觉里程计抗外点常用)!它在 \(|x|\le\lambda\) 内是光滑抛物线、外部是线性,\(C^1\) 拼接。

  • Step 3:算梯度,连回摩擦。 \(\nabla f_\lambda(x)=\frac1\lambda(x-\text{prox})=\begin{cases}x/\lambda,&|x|\le\lambda\\ \text{sign}(x),&|x|>\lambda\end{cases}\),即**饱和函数(saturation)**——在 \([-\lambda,\lambda]\) 内线性、外部饱和到 \(\pm1\)

本质洞察\(|x|\) 的 Moreau–Yosida 梯度(饱和函数)与 §7.1 用 \(\tanh(v/\varepsilon)\) 正则化摩擦的形状几乎一样!这揭示了一个深刻统一:§7.1 那个"看似临时的工程 hack"(用饱和/tanh 光滑化 \(\text{Sign}\)),其实就是对摩擦耗散势做 Moreau–Yosida 正则化的梯度——它有严格的变分来源(prox),不是随意捏造。\(\lambda\)(或 \(\varepsilon\))就是正则化参数:\(\lambda\to0\) 恢复真实非光滑摩擦(饱和斜率 \(\to\infty\),回到 §7.1 的刚性爆炸),\(\lambda\) 大则光滑但失真(蠕动)。这把 §7.1(朴素正则化)、§7.2(Clarke 梯度)、§7.6(prox/投影)、§7.8.3(Moreau–Yosida)在一个 \(|x|\) 的例子上全部缝合——同一个非光滑对象,从四个角度看是同一件事。这正是本章"知识树"枝叶相连的最佳缩影:你以为学了四个工具,其实是一个思想的四个侧面。

7.8.4 随机非光滑优化与 contact-rich policy gradient

当接触进入学习(RL、可微仿真),出现**随机非光滑优化(SNSO)**:目标含接触(非光滑、可能 weakly-convex),且用随机次梯度(采样估计)。Davis–Drusvyatskiy 2019(Found. Comput. Math.)证明了 weakly-convex 随机次梯度法的收敛。这为 contact-rich policy gradient(在接触环境学策略)提供理论保证。它与 Pang–Tedrake 的 CQDC randomized smoothing(专题 6 进阶)统一了"随机平滑"与"解析平滑"——前者用采样估计广义梯度,后者用 barrier/正则化解析地光滑接触。这是 §7.4 Filippov 凸化、§7.6 barrier 在"学习"维度的延伸。

弱凸(weakly-convex)是什么、为什么接触目标是弱凸。 函数 \(f\)\(\rho\)-弱凸,若 \(f(x)+\frac\rho2\|x\|^2\) 凸(即"加一个抛物线就凸")。它比凸宽(允许有限的非凸"凹陷"),又比一般非凸窄(曲率有下界 \(-\rho\))。接触相关目标(如"末端到目标的距离,经过一次接触")通常恰好弱凸——接触引入的非光滑/非凸是"有界的"(一次接触切换贡献有限曲率),不是任意病态。这就是为什么 Davis–Drusvyatskiy 的弱凸理论恰好适配接触学习:它捕捉了"接触让问题非凸但不至于无法优化"这一物理直觉。

随机平滑(randomized smoothing)的机制。 对非光滑 \(f\),定义平滑版 \(f_\sigma(x)=\mathbb{E}_{u\sim\mathcal N(0,I)}[f(x+\sigma u)]\)(对随机扰动取期望)。关键性质:\(f_\sigma\) 光滑(高斯卷积把尖点抹圆),且其梯度有无偏采样估计 \(\nabla f_\sigma(x)=\mathbb{E}[\frac{u}{\sigma}f(x+\sigma u)]\)(零阶梯度估计,无需 \(f\) 可微)。这正是 Pang–Tedrake CQDC 在接触 MPC 里用"采样多个接触模式取平均"来获得可用梯度的理论基础——采样平滑等价于对接触非光滑做高斯卷积

本质洞察:随机平滑(§7.8.4)与 Moreau–Yosida 解析平滑(§7.8.3)是"光滑化非光滑接触"的两条平行路线——前者用高斯卷积(采样期望),后者用 inf-卷积(prox)。二者都把尖点抹圆、都引入一个平滑参数(\(\sigma\) vs \(\lambda\))、都在参数 \(\to0\) 时恢复真非光滑。它们的工程分工:随机平滑不需要梯度信息(零阶,适合黑盒仿真器 + RL),Moreau–Yosida 需要 prox/投影(一阶,适合白盒可微仿真器)。这再次印证本章主线——"非光滑守恒",你总要在某处付出代价:要么正面求解(精确、慢),要么平滑(快、近似),而平滑又分采样(黑盒)与解析(白盒)两支。理解这个分类,你就能为任何 contact-rich 学习任务选对平滑策略。

7.8.5 去互补范式与 GPU 可微仿真的数学断层

2020 年后接触仿真的范式转变(原文档前沿地图主线)可用本章语言精确描述:

  • 从互补到 barrier:经典路线写 LCP/NCP(§7.6 组合/解析面孔),组合爆炸 + 摩擦锥顶点 Jacobian 奇异(半光滑 Newton 失效)。IPC(Li et al. 2020,TOG 39(4) Art.49)改用 barrier \(b(d)=-(d-\hat d)^2\log(d/\hat d)\) 的内罚(§7.6 去互补),\(d\to0^+\)\(b\to\infty\) 保证无穿透(T11),Hessian SPD 保证 Newton 全局收敛(T12)。这是 §7.6 对比表第四行的展开。
  • 从 CPU 硬接触到 GPU 软接触 + AD:MJX(JAX 重写 MuJoCo)、MJWarp(NVIDIA Warp kernel)、Newton(GPU 原生可微)、Genesis(Taichi 多物理)代表 GPU 大规模可微仿真。**数学断层**在于:传统 Siconos 的 LCP-硬接触是 §7.5 的精确 MDI 离散(精度优先);GPU 软接触是正则化/barrier(§7.1 光滑化,可微优先)。二者在"精度-速度-可微性"上 trade-off,本章 §7.1 的"非光滑守恒"恰好解释了 GPU 软接触为何快(光滑化避开非光滑求解)却失真(引入近似)。
  • 从对称化绕开非对称摩擦:现代凸接触模型(Drake 的 SAP、Anitescu 的凸松弛)放弃精确 Coulomb,改用**凸近似**——本质是用一个对称 PSD 的代理矩阵替换 §7.6"摩擦非对称化"产生的非 P-matrix 矩阵。代价是摩擦略微"软化"(slip 时有微小法向耦合误差),换来的是 §7.5 Delassus 良态性 + 全局收敛 + 可微。这条路线与 barrier、随机平滑并列,是"恢复对称/凸性以绕开摩擦病态"的第三种工程哲学。

本质洞察:接触仿真的"范式之争"(互补 vs barrier、硬接触 vs 软接触、CPU 精确 vs GPU 可微)本质上是 §7.1"非光滑守恒律"在工程上的不同选择——你要么正面求解非光滑(互补/MDI,精确但慢且难微分),要么光滑化它(barrier/正则化,快且可微但有近似)。没有免费的午餐:非光滑性不会消失,只会在"精度"或"速度/可微性"之间转移。理解这一点,你就能在面对任何新仿真器时,立刻判断它在这个权衡谱上的位置,以及它适合什么任务。

练习

练习 7.8.1(开放思考题) 用 §7.8.1 的五锥层级解释:为什么一个方块的"面接触"(平面对平面)比"棱接触"(棱对平面)、"点接触"(角对平面)在数值上更稳定?(提示:考虑接触约束集在这三种情形的正则性——面接触约束集光滑,棱/角接触约束集在该处的切锥/法锥是否非凸?投影是否唯一?)

练习 7.8.2(研究级综合题) 选一个你熟悉的接触仿真器(MuJoCo / Drake / IPC / Genesis 之一),用本章语言回答:(a) 它正面求解非光滑还是光滑化?(b) 若光滑化,用的是 penalty、正则化摩擦还是 barrier?(c) 它的接触求解对应 §7.6 哪个视角?(d) 它可微吗?若可微,梯度是 §7.2/§7.3 哪种广义导数?(e) 在"非光滑守恒"权衡谱上,它牺牲了精度还是速度/可微性?

练习 7.8.3(计算题,在草稿纸上完成) 仿照"\(|x|\) 的 Moreau–Yosida = Huber"的推导,计算二维欧氏范数 \(f(v_t)=\|v_t\|\)(对应二维摩擦耗散势)的 Moreau–Yosida 正则化 \(f_\lambda\) 与 prox。(a) 写出 \(\text{prox}_{\lambda\|\cdot\|}(v_t)\)(提示:是向量软阈值,把模长收缩 \(\lambda\)、方向不变);(b) 写出 \(f_\lambda(v_t)\) 的分段表达(球内抛物面、球外锥面);(c) 算 \(\nabla f_\lambda(v_t)\),验证它在 \(\|v_t\|\le\lambda\) 内线性、外部饱和到单位球面——这正是二维"正则化摩擦力"的形状,对应 §7.2 例 3 摩擦圆盘的光滑版。

练习 7.8.4(综合辨析题,开放性) §7.8.3 指出"§7.1 的 tanh 正则化摩擦 = 摩擦耗散势的 Moreau–Yosida 梯度"。请据此回答:(a) 既然正则化有严格变分来源(prox),为什么本章 §7.1 仍把它列为"假装光滑的失败"?(提示:变分来源不等于物理正确——\(\lambda>0\) 时静摩擦变蠕动,定性行为错);(b) Moreau–Yosida 正则化与 IPC barrier(§7.6 去互补)都是"光滑化非光滑",二者在"是否保持可行性(无穿透)"上有何本质区别?(提示:barrier 是内罚 \(d\to0\)\(\to\infty\) 严格不可穿透;Moreau–Yosida/penalty 是外罚,允许有限穿透);(c) 为什么现代可微仿真(§7.8.5)更偏好 barrier 而非朴素 Moreau–Yosida penalty?

练习 7.8.5(计算题,在草稿纸上完成) 仿照 §7.8.1"凸角 vs 凹角的五锥对比",考虑三维情形:(a) 立方体的一个**外顶点**(三面相交的凸角),求其切锥与法锥,验证 Clarke 正则、投影唯一;(b) 一个 L 形台阶的**内凹棱**(reentrant edge),定性说明其切锥为何非凸、Fréchet 法锥为何退化、投影为何多值;(c) 结合 §7.8.2 prox-regular 半径 = 曲率半径,解释为什么把内凹棱"倒圆角"(给一个有限曲率半径 \(R\))能恢复投影唯一性,以及 \(R\) 取多大才能让 penalty 方法在你的接触检测精度下可靠。这道题把五锥层级、prox-regularity、工程圆角化三者串成一条诊断-对策链。


累积项目:本章新增模块

数学方向累积项目:「非光滑接触求解器最小实现」。本项目贯穿接触力学全章,每学完一个专题给求解器加一个模块。代码保存在独立目录 contact_solver_mini/

本章(专题 7)新增模块:nonsmooth_toolkit.py —— 非光滑分析的可视化与数值验证

理论教学中代码仅用于**验证推导结论**(占比 < 15%),不承担讲解功能。本章的累积模块包含三个验证脚本,每个对应本章一个核心结论:

  1. verify_clarke_gradient.py:数值验证 Clarke Gradient Formula。对 \(f(x)=|x|\)\(f(v_t)=\mu\lambda_n\|v_t\|\)(二维),在尖点附近密集采样可微点的梯度,画出梯度的极限点集,可视化"取凸包得到 \([-\mu\lambda_n,\mu\lambda_n]\) 圆盘"。验证目标:§7.2 例 2、例 3 的广义梯度计算。

  2. verify_filippov_stickslip.py:数值验证摩擦滑块的 Filippov 滑模。实现微分包含 \(m\dot v\in F-\mu mg\,\text{Sign}(v)\) 的滑模感知积分器(在 \(v=0\) 处取等效速度 \(\dot v=0\) 而非两侧硬切换),对比朴素积分器(在 \(v=0\) 抖振)。验证目标:§7.4 stick-slip = 滑模,以及"抖振是数值伪影、滑模是物理正确"。

  3. verify_semismooth_newton.py:实现 FB 函数的半光滑 Newton 解一个 \(n=50\) 的 LCP,实测收敛阶(画 \(\log\|\Phi(z_k)\|\) 对迭代次数,验证二次收敛的斜率)。对比 P-matrix(收敛)与非 P-matrix(可能停滞)。验证目标:§7.6 T5/T6 的二次收敛,以及陷阱"非 P-matrix 下失效"。

  4. verify_delassus_impact.py:实现 §7.5"两点同时碰撞"手算例子的数值版。构造均质杆的 \(M=\text{diag}(m,I)\)、法向雅可比 \(J_n\),组装 Delassus 算子 \(W=J_nM^{-1}J_n^\top\),解碰撞 LCP 求两端冲量;扫描质心偏置与质量比,画 \(W\) 的条件数 \(\kappa(W)\) 随构型的变化,并验证碰后能量耗散 \(\Delta T\le0\)验证目标:§7.5 Delassus 算子的对称 PSD、条件数与病态、碰撞能量耗散公式。

  5. verify_moreau_yosida_huber.py:数值验证"\(|x|\) 的 Moreau–Yosida 正则化 = Huber 函数"。对一系列 \(\lambda\) 画出 \(f_\lambda(x)\)(应是 Huber 形)与 \(\nabla f_\lambda\)(应是饱和函数),并叠加 \(\tanh(x/\varepsilon)\) 对比,直观看到"§7.1 的 tanh 正则化摩擦 ≈ 摩擦势的 Moreau–Yosida 梯度"。\(\lambda\to0\) 时观察饱和斜率发散(刚性爆炸的数值再现)。验证目标:§7.8.3 Moreau–Yosida = Huber、正则化的变分来源、\(\lambda\to0\) 的刚性。

与前序模块的衔接:专题 1 的模块实现了 LCP 的活跃集枚举(组合面孔);专题 2 实现了摩擦锥投影(几何面孔);本章的 verify_semismooth_newton.py 实现解析面孔(半光滑 Newton),三者共同构成 §7.6 对比表的"三视角求解器对照",让你在同一个 LCP 上亲手比较三种算法的复杂度与收敛性。新增的 verify_delassus_impact.pyverify_moreau_yosida_huber.py 则分别打通"碰撞=Delassus LCP"(§7.5)与"正则化=Moreau–Yosida"(§7.8.3)两条理论线,让本章的五个核心结论(Clarke 梯度、Filippov 滑模、半光滑 Newton、Delassus 碰撞、Moreau–Yosida 平滑)都有可运行的数值验证。项目进度:完成本模块后,求解器具备了"三视角"求解能力 + 碰撞/平滑验证,下一步(若学专题 3)将加入时步法主循环,把单步求解器组装成完整仿真器。

本质洞察(累积项目的设计哲学):理论教学的累积项目刻意保持代码占比 < 15%——这五个脚本不承担"讲解"功能(讲解全在正文的推导里),它们只做一件事:把纸上的定理变成屏幕上可验证的数值事实。当你亲眼看到 Newton 迭代误差逐步平方(二次收敛)、Delassus 矩阵随构型变病态(条件数飙升)、Moreau–Yosida 极限恢复尖点(饱和斜率发散),抽象定理就从"相信"变成"看见"。这正是理论教学中代码的正确定位——验证而非讲解,让推导落地为可触摸的现象,与编程教学中"代码即主角"形成鲜明对比(R8 五步展开的理论侧)。


延伸阅读

本章是接触力学的理论天花板,延伸阅读按"教材→关键论文→中文资源→开源代码→博客"分类,并标注难度(★ 越多越难)与定位。

核心教材

资源 年份 难度 定位与真实评价
Clarke Optimization and Nonsmooth Analysis(Wiley → SIAM Classics Vol.5) 1983/1990 ★★★★☆ 非光滑分析开山教材;Ch.2(Generalized Gradients)是所有现代书的共同起点,必精读 §2.1–2.5;本章 §7.2 即以此为蓝本。中文社区最常误用的就是把这里的 generalized gradient 当成唯一定义(本章 §7.3 纠正)
Rockafellar & Wets Variational Analysis(Springer Grundlehren 317) 1998 ★★★★★ 变分分析"圣经",近 1000 页百科全书;不是用来线性读的,按"Ch.6 锥→Ch.8 subgradient→Ch.9 Aubin+Mordukhovich→Ch.10 calculus"路径选读;本章 §7.3、§7.5 的 limiting 次微分、余导数、判据 T7/T8 均出自此。作者 PDF 合法开放
Mordukhovich Variational Analysis and Generalized Differentiation I+II(Grundlehren 330/331) 2006 ★★★★★ Mordukhovich 学派全集;比 R-W 更 Banach 抽象;只有写论文需引 coderivative 的人才需要
Filippov Differential Equations with Discontinuous Righthand Sides(Kluwer) 1988 ★★★★☆ 滑模与微分包含的根(本章 §7.4);俄罗斯学派风格、字密;中文无译本但影响所有控制工程师
Brogliato Nonsmooth Mechanics: Models, Dynamics and Control(Springer,多版) 1999/2016 ★★★★☆ 非光滑力学的标准参考;把 §7.5 的 MDI、扫动过程、碰撞律系统化,接触力学读者的"力学侧圣经"
Acary & Brogliato Numerical Methods for Nonsmooth Dynamical Systems(Springer LNACM 35) 2008 ★★★★☆ Moreau–Jean 时步法的权威;本章 §7.5 到专题 3 的桥;Siconos 求解器的理论手册
Facchinei & Pang Finite-Dimensional VI and Complementarity Problems I+II(Springer) 2003 ★★★★☆ VI/LCP/半光滑 Newton 的标准引用源;本章 §7.6 的 VI、NCP 函数、半光滑 Newton 出自此;Vol.II Ch.7–9 写接触求解器必读
Scholtes Introduction to Piecewise Differentiable Equations(Springer Briefs) 2012 ★★★☆☆ 仅 133 页;PC¹ 映射、分片线性 Newton 的教学最佳;本章 §7.3 Bouligand 导数的精简入门
Bauschke–Combettes Convex Analysis and Monotone Operator Theory(2nd ed) 2017 ★★★★☆ 凸+单调算子权威;Ch.23–28 近端/forward-backward 对应本章 §7.8.3,对 IPC/ADMM 直接相关

关键论文(按本章定理对应)

论文 年份 对应本章 真实评价
Clarke "Generalized gradients and applications" Trans. AMS 1975 §7.2 (T2,T3,T4) 广义梯度的原始论文
Qi & Sun "A nonsmooth version of Newton's method" Math. Program. 58:353–367 1993 §7.6 (T5) 15 页;半光滑 Newton 收敛理论基石,必啃
Sun & Sun "Strong semismoothness of FB SDC/SOC" Math. Program. 103:575–581 2005 §7.6 (T6) 7 页短文;FB 强半光滑,Löwner 算子技巧
Robinson "Strongly regular generalized equations" Math. Oper. Res. 5(1):43–62 1980 §7.3 (T9) 灵敏度分析奠基;strong regularity 定义
Poliquin–Rockafellar–Thibault "Local differentiability of distance functions" Trans. AMS 352 2000 §7.8.2 (T10) prox-regular 集与投影唯一性
Moreau "Sweeping process" 蒙彼利埃讨论班讲义 1971 §7.5 扫动过程奠基
Burden–Sastry–Koditschek–Revzen "Event-Selected Vector Field Discontinuities Yield Piecewise-Differentiable Flows" SIADS 15(2) 2016 §7.3, §7.7 saltation 矩阵的 B-导数严格推广(桥接专题 5)
Li et al. "Incremental Potential Contact" ACM TOG 39(4) Art.49 2020 §7.6, §7.8.5 (T11,T12) IPC 奠基;barrier 标准形式;SIGGRAPH 最佳论文级影响
Davis–Drusvyatskiy "Stochastic subgradient method converges..." Found. Comput. Math. 2019 §7.8.4 weakly-convex 随机次梯度收敛,contact-rich RL 理论
Stewart "Rigid-body dynamics with friction and impact" SIAM Review 2000 §7.1, §7.6 Painlevé 佯谬、测度解的经典综述
Stronge Impact Mechanics(Cambridge Univ. Press,2nd ed) 2018 §7.5(碰撞律) 碰撞力学权威;Newton/Poisson/能量恢复系数的系统比较,多体能量守恒的标准参考
Glocker "Energetic consistency conditions for standard impacts" Multibody Syst. Dyn. 2013 §7.5(碰撞律) 严格刻画三种恢复系数的能量一致性,论证 Newton 律多体可违反能量守恒
Dieci & Lopez "Sliding motion in Filippov differential systems" SIAM J. Numer. Anal. 2009 §7.4(多面交线) 多切换面相交处 Filippov 滑模的数值理论,等效速度多值性
Brogliato "Nonsmooth mechanics" 综述系列 Multibody Syst. Dyn. / Annu. Rev. 多年 §7.5(扫动过程) Moreau 扫动过程、MDI、碰撞律的现代综合,接触力学非光滑建模的力学侧主线
Cabannes/Acary et al. on second-order sweeping & circuits 多年 §7.5(高阶扫动) 二阶扫动过程、含理想二极管电路的状态跳变,隐式跳变与专题 5 显式跳变的对照

中文社区资源

  • 方浩 / 高会军《非光滑分析与优化》(哈工大讲义,网上流传 PDF)——Clarke + Mordukhovich 中文最优入门,对应本章 §7.2、§7.3。
  • 清华大学王书宁《变分分析与最优化》(讲义)。
  • 知乎专栏 @李敏辰、@Chenfanfu Jiang:IPC 中文技术笔记(对应 §7.8.5)。
  • B 站"太极图形 Taichi Graphics"官方频道:DiffTaichi → Genesis 的中文复盘。
  • 中国工业与应用数学学会(CSIAM)"非光滑优化"专委会年会录像。

开源代码库

  • Siconossiconos/siconos(CPU 非光滑参考实现,§7.5 MDI/扫动的工程化)。
  • PATH 求解器:半光滑 Newton 解 NCP/MCP 的标准实现(§7.6 T5/T6)。
  • IPC 参考实现ipc-sim/IPCipc-sim/ipc-toolkit(§7.6 去互补、§7.8.5)。
  • DrakeRobotLocomotion/drake(Castro 的 SAP convex contact,§7.6 VI/凸松弛)。
  • Dojo.jldojo-sim/Dojo.jl(Julia 解析可微刚体,§7.7 可微仿真)。
  • ContactBenchSimple-Robotics/ContactBench(7–8 种接触求解器系统比较,§7.6 对比表的实测入口)。

重要博客 / 课程

  • Rockafellar 华盛顿大学 Math 516 课件(个人主页含 Variational Analysis 全书 PDF)。
  • Boris Mordukhovich (Wayne State) 夏校 Variational Analysis and Applications
  • Danny Kaufman SIGGRAPH 2022 Course Contact and Friction Simulation(124 页)。
  • Russ Tedrake MIT 6.8210 Underactuated Robotics(2024 版含 Contact-Implicit 章)。
  • physicsbasedanimation.com(Kaufman 小组策划周读)。

本章与后续章节的关系

本章是接触力学全章的理论根基,与各专题的关系如下表。它既是"先修"(为后续提供数学语言),也是"后证"(在你学过后续工程内容后,回头给它们补严格证明)——所以本章可以**第一遍速读建立框架、学完专题 1–6 后再回头精读补证**。

后续/相关章节 与本章的关系 本章哪个知识点为其铺垫
专题 1(互补/Signorini) 本章 §7.6 把 LCP 重写为法锥/VI/NCP 方程;§7.3 补证解映射 Lipschitz 7.3(Mord 判据 T7)、7.6(命题 7.6.1)
专题 2(摩擦锥) 本章 §7.2 补证摩擦力=耗散势负广义梯度,stick-slip 的尖点根源 7.2(Clarke 梯度、例 2/3)
专题 3(时步法) 本章 §7.5 是其全部设计选择(速度-冲量、隐式、无事件检测)的数学解释;Delassus 谱解释碰撞 LCP 病态、三种碰撞律解释恢复模型选型 7.5(MDI、Delassus、碰撞律、Moreau–Jean 离散)
专题 4(可微接触仿真) 本章 §7.2/§7.3 解释"接触可微"的含义;§7.6 解释 IPC Newton 友好 7.2/7.3(广义梯度/B-导数)、7.6(barrier)
专题 5(混合系统/Saltation) 本章 §7.3 的 Bouligand 导数是 saltation 矩阵的严格数学地位 7.3(\(\partial_B\)、B-导数)
专题 6(CI-MPC) 本章 §7.3 的 Robinson 强正则性桥接接触轨迹灵敏度与 NMPC 良态 7.3(强正则性 T9)
第五批(控制理论) 本章 §7.3(T9)桥接 NMPC 灵敏度;Filippov 解(§7.4)是滑模控制根基;§7.7 桥接六补证滑模控制律的解合法性与非光滑 Lyapunov 镇定 7.3(T9)、7.4(Filippov/滑模/Lyapunov)、7.7(桥接六)
第二批(凸分析) 本章 §7.2/§7.3 把凸次微分推广到非凸 Lipschitz;T8 给出"凸 Clarke⊂limiting"的非凸路径 7.2(凸相容)、7.3(T8)

🔧 故障排查手册

本章是理论章节,"故障"主要是**理解/分析层面**的(用错工具、证错定理)和**与下游仿真/优化对接时**的诊断。下表给出 7 个高频场景的结构化排查。

场景 1:算出的"广义梯度"不是凸集,怀疑算错了

项目 内容
症状 计算某 Lipschitz 函数的"广义梯度",结果是离散点集(如 \(\{-1,+1\}\))或非凸集,与"Clarke 梯度应凸"矛盾
可能原因 (1) 你算的其实是 Bouligand 子微分 \(\partial_B\)(可微点梯度极限,非凸),不是 Clarke \(\partial_C\);(2) 忘了取凸包这一步
排查步骤 ① 检查是否套用了 Gradient Formula 的**凸包**外壳 \(\text{conv}\{\cdots\}\)(§7.2 T2);② 若只收集了极限梯度而没取凸包,得到的是 \(\partial_B\);③ 确认你需要的是 \(\partial_B\)(半光滑 Newton)还是 \(\partial_C\)(最优性/凸)——见 §7.3 区分
相关章节 §7.2(Gradient Formula)、§7.3(\(\partial_B\) vs \(\partial_C\) 层级)

场景 2:灵敏度分析证不出 Lipschitz 性,判据总不满足

项目 内容
症状 想证 LCP/接触解映射局部 Lipschitz,套 Mordukhovich 判据 \(D^*S(0)=\{0\}\) 却总得到非零解,或判据无法判定
可能原因 (1) 误用了 Clarke 法锥(凸化)而非 limiting 法锥,破坏判据充要性;(2) 问题本身确实非 Lipschitz(如 Coulomb 摩擦非 P-matrix,Painlevé 构型)
排查步骤 ① 确认余导数用的是 Mordukhovich(limiting)法锥而非 Clarke(§7.3 强调);② 检查矩阵 \(M\) 是否 P-matrix(P-matrix → 单值 Lipschitz;非 P-matrix → 可能失败);③ 若非 P-matrix,灵敏度本就可能不存在——这是物理事实(接触力对扰动剧变),非证明技巧问题
相关章节 §7.3(T7 Mordukhovich 判据、T9 强正则性)、§7.6(P-matrix 与互补)

场景 3:仿真在切换面(\(v_t=0\))附近高频抖振(chattering)

项目 内容
症状 摩擦/接触仿真中,物体本应静止(stick)或平稳滑行,速度却在 \(v=0\) 附近高频来回跳
可能原因 (1) 积分器在切换面两侧速度场间**硬切换**,没取 Filippov 等效速度(滑模);(2) 误把物理滑模当数值 bug 去加阻尼
排查步骤 ① 确认这是物理滑模(两侧速度场都指向切换面,§7.4 滑模判据)还是真数值问题;② 若是滑模,改用滑模感知积分器(在切换面取等效速度 \(f_{\alpha^\star}\))或隐式时步法(专题 3 Moreau–Jean 天然处理);③ **不要**盲目加阻尼/正则化(会引入蠕动,§7.1)
相关章节 §7.4(Filippov 滑模、等效动力学)、§7.5(Moreau–Jean 隐式)、§7.1(正则化弊病)

场景 4:碰撞仿真穿透地面,或减小步长仍无改善

项目 内容
症状 物体落地后穿透地面一段才被"拉回",或越减小步长穿透越轻但永不消失、计算量爆炸
可能原因 (1) 用了显式积分器 + 位置-加速度变量,把碰撞当有限加速度处理(§7.5 误区);(2) 约束作用于当前速度而非右速度 \(v^+\)(应隐式)
排查步骤 ① 确认积分器是否用**速度-冲量**变量(而非位置-加速度);② 确认约束是否对右速度 \(v^+\) 隐式施加(§7.5);③ 若用显式 + 加速度,无论步长多小都会穿透——换 Moreau–Jean 时步法(专题 3);④ 检查是否需要 CCD(连续碰撞检测)保证步内不穿透(IPC 路线,§7.8.5)
相关章节 §7.5(MDI、冲量、隐式)、专题 3(时步法)、§7.8.5(IPC/CCD)

场景 5:半光滑 Newton 不收敛或收敛到非解点

项目 内容
症状 用 FB + 半光滑 Newton 解接触 NCP,迭代停滞、振荡,或收敛到 \(\Phi(z)\ne0\) 的点
可能原因 (1) Newton 步用了 Clarke 凸组合 Jacobian(可能奇异)而非 \(\partial_B\) 元素;(2) \(\partial_B F(x^\star)\) 在解处奇异(摩擦锥顶点、非 P-matrix);(3) 无全局化(line search)
排查步骤 ① 确认 \(V_k\) 取自 \(\partial_B F\)(Bouligand,§7.6 定义 7.6.5)而非 \(\text{conv}\);② 检查问题是否 P-matrix/强正则(T5 收敛前提);③ 若 \(\partial_B\) 奇异(摩擦顶点),加正则化、用凸松弛(专题 2 CCP/SAP)或换 barrier(IPC);④ 加 line search(用 FB merit 函数 \(\frac12\|\Phi\|^2\))保证全局收敛
相关章节 §7.6(T5/T6、\(\partial_B\) 选取)、§7.3(\(\partial_B\) 非奇异)、专题 2(凸松弛)

场景 6:多接触同时碰撞时求解器给出"不唯一"或随机抖动的冲量分配

项目 内容
症状 多点同时触地(如桌子四腿、四足同时落地),每次仿真各接触点的冲量分配不同,但质心轨迹基本一致;或求解器在不同接触点间"反复横跳"分配冲量
可能原因 (1) Delassus 算子 \(W=J_nM^{-1}J_n^\top\) 病态(刚性耦合多接触,\(\kappa(W)\) 大),PGS 迭代收敛慢且对初值敏感;(2) 物理上冲量分配本就在凸系数层面不唯一(§7.4 多面交线、§7.5 多点碰撞),只有等效速度/质心轨迹唯一
排查步骤 ① 计算 \(W\) 的条件数 \(\kappa(W)\)——若 \(\kappa\) 大,是刚性耦合导致的病态(§7.5 Delassus 谱);② 区分"分配不唯一是物理事实(凸系数自由度)还是数值噪声"——检查质心轨迹是否一致(一致则是前者,正常);③ 若需确定性分配,引入微小接触刚度差或时序差打破对称,或用整步隐式互补(专题 3)替代逐点 PGS;④ **不要**强行让分配"唯一化"而违背物理
相关章节 §7.5(Delassus 谱与条件数、多点碰撞 LCP)、§7.4(多面交线 Filippov 多值)、专题 3(整步求解)

场景 7:滑模控制器接到接触仿真上后闭环行为与理论预测不符

项目 内容
症状 设计的滑模控制律在理论(连续 Filippov 模型)上稳定,接到时步法接触仿真后却抖振、漂移或稳定性变差
可能原因 (1) 控制器是控制非仿射的,Filippov 凸化与等效控制法分叉(§7.4 Aizerman–Pyatnitskii 歧义),理论用的解概念与仿真器实际求解的解不一致;(2) 时步法的离散滑模(冲量层 stick/slip)与连续 Filippov 滑模在步长 \(h\) 下有 \(O(h)\) 偏差;(3) 控制切换面与接触切换面交互产生多切换面,等效动力学多值
排查步骤 ① 确认控制律是否控制仿射——若非仿射,明确理论用 Filippov 还是 Utkin 等效控制,并与仿真器实现对齐(§7.4 对比);② 减小步长 \(h\) 看抖振是否随之减小(是则为离散偏差,用滑模感知积分器);③ 检查控制切换面与接触切换面是否相交(多面交线 → 等效动力学可能多值,§7.4);④ 用非光滑 Lyapunov 集值导数(§7.4 T4.4)重新验证离散闭环的稳定性
相关章节 §7.4(Filippov vs Utkin、多面交线、非光滑 Lyapunov)、§7.7 桥接六、专题 3(离散滑模)

研究实践建议

给新手的建议

  1. 先建框架,再补证明:本章 §7.3、§7.5 是博士论文级深度。第一遍学习,把这两节当"结论框"读(记住 \(\hat\partial\subseteq\partial_L\subseteq\partial_C\)、"加速度是测度"),别陷进证明。先用 §7.1→§7.6→§7.7 建立"非光滑来源—工具—应用"的框架,等遇到具体研究问题再回头精读证明。
  2. 亲手算五个运行示例\(|x|\) 的 Clarke 梯度(§7.2)、二维继电系统的 Filippov 滑模四步流程(§7.4)、FB 函数的半光滑 Newton(§7.6)、两点碰撞的 Delassus LCP(§7.5)、\(|x|\) 的 Moreau–Yosida = Huber(§7.8.3)。这五个例子分别打通三大主干(导数/解/方程)+ 碰撞 + 平滑,每个都能在草稿纸上算到底,算一遍胜过读十遍。
  3. 分清两个层次:反复自问"我面对的是函数不可微(层次一,用次微分)还是方程的解跳变(层次二,用 DI/MDI)?"这个判断决定一切工具选择。
  4. 从工程现象倒推理论:每次仿真出问题(穿透、抖振、不收敛),别急着调参数,先用本章故障排查手册(7 个场景)定位"这是哪个非光滑现象、对应哪个理论"。这种"现象→理论"的反向训练,比正向学习更能内化本章。
  5. 掌握"四步滑模流程"作为通用套路:分析任何 Filippov 滑模系统(摩擦、继电控制、stick-slip),都用同一套路——取凸包 → 法向投影判横穿/滑模 → 解凸系数 \(\alpha^\star\) → 代回求约化动力学(§7.4 运行示例)。把这四步练成肌肉记忆,遇到任何不连续右端系统都不慌。

给有经验者的建议

  1. Clarke 与 Mordukhovich 的选择是研究品味的体现:工程实现、求最优性用 Clarke(凸、便利);灵敏度分析、稳定性证明、双层优化用 Mordukhovich(精细、精确运算法则)。误用 Clarke 做灵敏度是审稿常见被打回点(§7.3 反复强调)。
  2. 写接触论文的"理论检查清单":声称"收敛"→ 引 T5/T6 并验证 \(\partial_B\) 非奇异;声称"Lipschitz 依赖/稳定"→ 引 T7/T9;声称"无穿透"→ 引 T11(barrier)或证明冲量层互补;声称"可微"→ 明确是 §7.2/§7.3 哪种广义导数,且声明可微范围(GPU 仿真常见"声称全栈可微实则部分可微"的被打回点,见下)。
  3. GPU 可微仿真的"可微范围"必须明确声明:Genesis 当前仅 MPM+Tool Solver 可微、刚体 AD 在 roadmap;MJWarp Alpha 期不支持 AD;Isaac Lab 基于 PhysX 5 不可微。把"GPU+AD"写成"全栈可微"是审稿常见被打回点(原文档陷阱 5)。写实验请明确可微的物理层。
  4. 关注"去互补"范式:2020 后接触仿真从互补转向 barrier(IPC)、从 CPU 硬接触转向 GPU 软接触+AD。若做接触求解器研究,先用 §7.6/§7.8.5 把你的方法定位在"互补 vs barrier、精确 vs 可微"的权衡谱上,再讲贡献。ContactBench 是公平对比的实测入口。
  5. 碰撞律与解的唯一性须显式声明:写多体碰撞论文时,明确用 Newton / Poisson / Moreau 哪种恢复模型(§7.5)——Newton 律多体可能违反能量守恒,是审稿可质疑点。遇到高对称多接触(Newton's cradle 类),不要假装解唯一;如实声明"等效速度/质心轨迹唯一、逐点冲量分配不唯一",或引入软接触恢复唯一性。把"解不唯一"当 bug 去强行消除,是对接触固有难点的误解。
  6. 诊断病态先看 Delassus 谱:接触求解器收敛慢时,先算 Delassus 算子 \(W=JM^{-1}J^\top\) 的条件数 \(\kappa(W)\)(§7.5)——\(\kappa\) 大说明是刚性耦合多接触导致的内在病态,应改用整步隐式或预条件,而非盲目减小步长。\(W\) 的稀疏结构即接触约束图,可指导并行 PGS 的图着色。
  7. 正则化要追到变分来源:若用 penalty/光滑摩擦,明确它对应哪个势的 Moreau–Yosida 正则化(§7.8.3),从而知道正则化参数 \(\lambda\) 的物理含义与 \(\lambda\to0\) 的极限行为。把"调一个光滑参数"理解为"做一次 Moreau–Yosida 逼近",能让你预判数值刚性何时爆炸(饱和斜率 \(\sim1/\lambda\))。

版本信息速查

本章涉及的工具/库/框架版本(截至 2026 年中):

工具/库 版本/状态 与本章关系
Siconos 活跃维护 §7.5 MDI/扫动的 CPU 参考实现
PATH Solver 稳定 §7.6 半光滑 Newton 解 NCP/MCP 标准
Drake 活跃(SAP convex contact) §7.6 VI/凸松弛接触
IPC / ipc-toolkit 活跃 §7.6/§7.8.5 去互补 barrier
Dojo.jl 活跃(Julia) §7.7 解析可微刚体
ContactBench 活跃(Simple-Robotics) §7.6 接触求解器对比基准
MJX 稳定(JAX,可微) §7.8.5 GPU 可微仿真
MJWarp Alpha(Warp,首版无 AD) §7.8.5 GPU 高吞吐,AD 在 Newton 补全
Genesis 开源(Taichi,MPM 可微,刚体 AD roadmap) §7.8.5 多物理可微仿真

说明:GPU 可微仿真框架(MJWarp、Newton、Genesis)2025–2026 处于快速演进期,"是否可微""可微哪些物理层"随版本变化大,使用前务必查阅当时的官方文档与 release note,不要依赖本表的快照。


结语:学完本章,你就打通了接触力学全章(专题 1–6)的理论-实现-工程闭环。再看那棵知识树——根是接触的非光滑(§7.1),主干是替代导数(§7.2/7.3)、替代解(§7.4/7.5)、替代方程(§7.6),桥接(§7.7)把主干接到六个专题的果实,进阶(§7.8)伸向 2026 年的前沿。不学本章仍可做工程;学了本章才能做研究——因为你现在不仅会用接触工具,更能证明它们为何成立、何时失效、如何推广。这正是从算法工程师走向研究者的分水岭。