Skip to content

算法Algorithm

RATTLE 约束积分器

RATTLE algorithm

用两次乘子求解分别保持位置约束和切向动量,完整核验单位圆上的一个约束积分步。

形式陈述 ​

位置已经被拉回约束面,为什么下一步仍可能立即离开?带约束的机械系统不仅要求位置满足 g(q)=0,还要求动量产生的速度属于切空间:

G(q)M−1p=0,G(q)=Dg(q),M≻0.

取给定的常对称正定质量矩阵 M、非零步长 h,以及光滑的 g:U⊆Rd→Rm 与 V,并令 G(q) 为约束的Jacobian。对 H=pTM−1p/2+V(q),RATTLE 用两组约束反作用系数分别处理两项条件。给定已满足约束的 (qn,pn),一种记号约定为

pn+1/2=pn−h2∇V(qn)−h2G(qn)Tλn,qn+1=qn+hM−1pn+1/2,g(qn+1)=0,pn+1=pn+1/2−h2∇V(qn+1)−h2G(qn+1)Tμn,G(qn+1)M−1pn+1=0.

第一组乘子通常由非线性位置约束求出;位置固定后,第二组由线性方程组求出。约束梯度满行秩、步长足够小并选择连续于初值的解支,是局部可解性的基本条件。

直觉

位置约束规定“落点在哪里”,切向约束规定“从这个落点朝哪里出发”。仅把位置投到球面,却保留朝球面外的速度,下一步立刻又会漂离。RATTLE 在两个不同时间位置上校正这两种误差。

图中取 h=0.6:红色空心点是未经约束的漂移候选,位置校正使落点回到圆上,动量校正使绿色方向与新位置的半径垂直。图示坐标为 q+=(0.8,0.6)、p+=(−0.6,0.8);下面另以 h=0.2 核验同一公式。

第二次校正还有一个真正的优化解释。记 p~=pn+1/2−(h/2)∇V(qn+1),固定 G=G(qn+1),求

minP12(P−p~)TM−1(P−p~)使GM−1P=0.

由Lagrange 乘子条件,校正方向属于 imGT。写成 P=p~−(h/2)GTμ 后,约束恰给出

h2GM−1GTμ=GM−1p~.

G 满行秩且 M≻0 时 Gram 矩阵正定;严格凸二次目标因此有唯一的约束最小点。这证明的是第二次动量校正的质量度量投影,不是把第一个非线性位置方程无条件当成同一个最优化问题。

在标准条件和精确约束求解下,RATTLE 是二阶、时间对称的约束辛方法。辛性针对约束相空间上的相应结构,而非随意扩展到全部无约束坐标的一张方阵。

例子与边界

单位圆上自由运动的一步 ​

取 M=I,V=0,g(q)=(‖q‖2−1)/2,初值 q=(1,0)、p=(0,1)。对 0<h<1,记 s=1−h2。第一步位置约束选择邻近解支,给出

λ=2(1−s)h2,p1/2=((s−1)/h,1),q+=(s,h).

第二次投影使用 μ=2(1−s)/h2,得到 p+=(−h,s)。直接核验 ‖q+‖2=1,且 q+Tp+=−sh+hs=0,两项约束同时成立。

取 h=0.2,q+≈(0.9797959,0.2),p+≈(−0.2,0.9797959)。若只更新位置,半步动量与新位置的内积为 (1−s)/h>0,仍有法向分量,说明第二组乘子不可省略。本例最终动量模长也恰为一,但一般有势能的 RATTLE 不逐步精确保能量。

推论与应用

实施时先核验初值的两项约束,迭代求位置乘子,再解切向乘子。每步保存位置残差 ‖g(q)‖ 与速度残差 ‖GM−1p‖,并分别设定符合量纲的容差。m 个约束的稠密乘子线性求解约为 O(m3),每次位置迭代还需约束及 Jacobian 评值。

约束之间接近相关时,Gram 矩阵 GM−1GT 会病态。较大步长也可能使位置方程出现多个解支或无邻近解。应缩小步长、改善约束表示或求解精度,再检查反向一步能否返回原状态。

参考资料
关系图谱13 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系