Skip to content

算法Algorithm

Lie–Trotter 与 Strang 分裂

Lie-Trotter splitting · Strang splitting

把可解子流按一阶或对称二阶次序复合,用非交换误差解释分裂的精度与结构保持。

形式陈述 ​

一个难解的微分方程若能拆成两段容易求解的运动,怎样把子流拼回整体?对自治方程 y′=A(y)+B(y),设两子系统的精确流为 φAh,φBh。按函数复合右侧先执行的约定,Lie–Trotter 的一步时间更新为

Lh=φBh∘φAh,

Strang 一步为

Sh=φAh/2∘φBh∘φAh/2.

在子流存在、向量场足够光滑并满足相应稳定估计的固定有限时间区间上,前者通常全局一阶,后者通常全局二阶。若子流彼此交换,组合可精确给出总流;一般情况下误差来自不交换。

直觉

Lie–Trotter 先把全部时间交给 A,再交给 B,顺序偏向一侧。Strang 把 A 平分在两端;在相关正负时间子流都存在的区域,走回头路时能逐段撤销:S−h=Sh−1。在光滑一致方法中,这种对称性消去领先的偶次对数误差,得到二阶方法。

线性情形看得尤其清楚。ehBehA 与 eh(A+B) 的二阶差是 h2(BA−AB)/2。当矩阵不交换,先后顺序产生真实差异;缩小步长才使差异按预期阶数下降。

例子与边界

两个剪切拼成振动 ​

对谐振子 q′=p,p′=−q,取 A 为自由漂移:(q,p)↦(q+hp,p);B 为动量冲击:(q,p)↦(q,p−hq)。Lie–Trotter 先漂移后冲击,矩阵为

(1h−h1−h2).

Strang 按“半漂移、全冲击、半漂移”执行,矩阵为

(1−h2/2h(1−h2/4)−h1−h2/2).

取 (q,p)=(1,0)、h=0.2,Lie–Trotter 得到 (1,−0.2),Strang 得到 (0.98,−0.2),真解为 (cos⁡0.2,−sin⁡0.2)≈(0.980067,−0.198669)。Strang 的位置误差已经小得多,而动量仍有三阶局部误差。

若交换 A、B,得到熟悉的半冲击、全漂移、半冲击结构,即leapfrog的可分 Hamilton 特例。本页的分裂思想也适用于并非 Hamilton 的反应、输运和扩散算子。

推论与应用

子流若各自保辛或保持同一不变量,复合会保留相应共同结构。若把一次精确子流求值视为给定操作,Lie–Trotter 每步调用两次,Strang 每步调用三次,具体成本还由各子流实现决定。连续推进 N 个 Strang 步时,相邻的同类精确子流可按流的半群性质合并,得到 N+1 次 A 子流与 N 次 B 子流调用;一般近似子求解器未必允许这种精确合并。

若子流用近似求解器代替,整体阶数与结构要重新分析。含边界的 PDE 还可能发生边界不兼容导致的阶数下降;形式上的对称排列不足以绕过正则性和边界条件。

参考资料
关系图谱10 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。

类型化关系