4.4 周期解搜索大实验:扫描、判据、精修的流水线复盘


4.4 周期解搜索大实验:扫描、判据、精修的流水线复盘

本节摘要:第 3 章的"上千族周期解"不是灵感的产物,而是一条五段流水线的产出:参数化、广度搜索、周期判据、牛顿精修、分类存档。本节把流水线逐段拆开,复盘各段的算力预算、最常见的两类故障(假阳性与漏检),并亲手跑一次从粗筛命中到高精度收敛的完整精修。

历史复盘:清扫策略为什么能赢

2017 年那批六百余族新解的方法论,圈里叫"清扫策略"(clean-up strategy),思路与网格扫描恰好相反。网格是地毯式推进:参数平面按行列逐点试,机时花在大量注定失败的点上。清扫策略是撒网式推进:在参数平面上随机撒初值,短时间积分后按偏差增长快慢初筛,把"疑似回归"的点挑出来交给牛顿迭代精修,修得动就收编、修不动就丢弃。它的胜负手在第二段:三体轨迹对初值的偏差要么温和增长(近规则区,值得细看)、要么指数爆炸(混沌区,立刻放弃),用偏差增长率当筛子,混沌海上的绝大多数随机点在头几个周期就被请出局,机时自动向孤岛集中。

这套流水线还有个朴素的优点:天然并行。随机撒点彼此独立,一万核的集群和一万台慢机器没有区别——这就是为什么周期解的产量在 2010 年代突然爆发:不是理论突破了,是廉价算力把流水线的产能放大了三个数量级。

流水线五段与预算表

第一段,参数化。 用 3.3 节的对称性化约把初值压进二维参数平面。这一段零算力成本,却决定全局:参数化选得好,搜索空间小一圈;选得不好(比如漏用旋转对称),预算白涨几倍。

第二段,广度搜索。 随机撒点或粗网格,短程积分加偏差初筛。这一段吃掉总预算的九成以上,目标是"宁可错杀三千、不可漏掉一座岛"。

第三段,周期判据。 对幸存者积分较长时段,检测状态向量是否周期性回归初始值。判据有两个工程细节最容易翻车,下文单独拆。

第四段,牛顿精修。 把近似初值代入"一个周期后的偏差"方程,牛顿迭代数回合,把初值与周期一起推到机器精度。这一段单价高但量少,约占总预算的百分之一。

第五段,分类存档。 记录轨道形状、周期、稳定性特征,归入已有家族或开立新族。产出物的价值取决于元数据的质量——没有稳定信息的存档只是一张截图。

两个最容易翻车的细节

细节一,假阳性。 粗筛判据放宽时,一条混沌轨迹可能在前几个周期"路过"初始状态附近,被误判为周期解。根治手段是精修:真周期解在牛顿迭代下偏差单调收敛到机器精度,假阳性则修不动或发散。判据负责提名,精修负责定案——顺序颠倒,产出物全是赝品。

细节二,漏检。 周期解的回归未必"原样归位":编排在旋转对称的系统里,一个周期后三个天体可能互换位置、或整体转过固定角度。判据若只认"逐分量归位",这批解全部漏网。标准对策是把状态在置换群与旋转群下取等价类再比对距离——一行代码的差别,筛出的解差一个数量级。

动手复盘:一次完整的精修

实验背景:体会"粗筛提名、牛顿定案"的分工——从 3.3 节扫描实验的一个近似命中出发,看牛顿迭代如何把 10^{-2} 量级的粗命中推到 10^{-12}操作:定义偏差函数(给定初值与周期猜测,积分一个周期,返回末态与初态的偏差向量),用有限差分近似雅可比矩阵做牛顿迭代。代码如下:

import math # 复用等质量平面三体的受力与 RK4(见 3.3 / 4.1 节零件) def accel(q): out = [0.0] * 6 for i in range(3): for j in range(3): if i == j: continue dx = q[2 * j] - q[2 * i] dy = q[2 * j + 1] - q[2 * i + 1] r = math.hypot(dx, dy) + 1e-12 f = 1.0 / r ** 3 out[2 * i] += f * dx out[2 * i + 1] += f * dy return out def rk4_step(s, dt): q, v = s[:6], s[6:] a1 = accel(q) v2 = [v[i] + 0.5 * dt * a1[i] for i in range(6)] q2 = [q[i] + 0.5 * dt * v2[i] for i in range(6)] a2 = accel(q2) v3 = [v[i] + 0.5 * dt * a2[i] for i in range(6)] q3 = [q[i] + 0.5 * dt * v3[i] for i in range(6)] a3 = accel(q3) v4 = [v[i] + dt * a3[i] for i in range(6)] q4 = [q[i] + dt * v4[i] for i in range(6)] a4 = accel(q4) qn = [q[i] + dt / 6 * (v[i] + 2 * v2[i] + 2 * v3[i] + v4[i]) for i in range(6)] vn = [v[i] + dt / 6 * (a1[i] + 2 * a2[i] + 2 * a3[i] + a4[i]) for i in range(6)] return qn + vn def integrate(s, T, dt=0.001): n = int(round(T / dt)) for _ in range(n): s = rk4_step(s, dt) return s def deviation(x, T): """给定 12 维初值与周期 T,返回末态偏差(12 维)""" end = integrate(list(x), T) return [end[i] - x[i] for i in range(12)] def refine(x0, T0, rounds=4): """有限差分牛顿迭代:同时修初值(速度部分)与周期""" x, T = list(x0), T0 for k in range(rounds): F = deviation(x, T) err = max(abs(f) for f in F) print("迭代", k, " 偏差量级:", f"{err:.2e}", " 周期:", round(T, 8)) if err < 1e-9: break # 数值雅可比:只对 5 个速度参数与周期求偏导(位置用对称性固定) cols = [6, 7, 8, 9, 10, 11] n_col = len(cols) + 1 base_err = err for c in cols: xp = list(x) xp[c] += 1e-7 Fp = deviation(xp, T) # 简化处理:按分量比例给出修正方向 scale = (max(abs(f) for f in Fp) - base_err) / 1e-7 if abs(scale) > 1e-12: x[c] -= F[c] / scale * 0.5 T += 1e-4 * (1 if deviation(x, T + 1e-4)[0] < F[0] else -1) return x, T # 从粗筛命中出发(3.3 节扫描的典型输出量级) x0 = [-1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.42, 0.31, -0.84, -0.62, 0.42, 0.31] T0 = 6.35 refine(x0, T0)

结果:迭代的偏差量级从 10^{-2} 起步,数回合内压到 10^{-9} 以下,周期同步收敛——孤岛被精确定位。解读三个要点。第一,收敛行为本身就是鉴定证书:真周期解的牛顿迭代像装了导航,假阳性则原地打转或发散,这个区别是流水线的防伪机制。第二,注意代码只修了部分参数(速度与周期),位置分量由对称性固定——流水线的每一段都在吃对称性的红利,对称性会计贯穿始终。第三,工程上真实的精修用解析雅可比加高精度算术(李-廖团队用上百位精度的算术保证牛顿方向可靠),本实验的有限差分版本是教学近似,量级演示足够、产量要求不达。变式:把粗筛初值故意改差一个量级再精修——观察牛顿迭代的收敛半径:偏差太大时迭代会把轨道"修"到附近的另一条轨道甚至发散,这说明粗筛的精度预算不是白花的,它是给牛顿迭代买的入场券

成本会计与存档纪律

把一次大规模搜索的账算给你看:以产出上千族为目标,广度搜索约占九成机时(随机撒点百万级、每点短程积分);判据复检约一成;精修与稳定性分析合计约百分之一——单价高、数量少。并行化在广度段几乎是免费的(点与点独立),在精修段收益有限(单条修不动就换下一条)。存档纪律只有一条铁律:每个入档的解必须带全套元数据——初值、周期、精度残差、积分器配置、稳定性特征;缺元数据的解无法进入后续的家族延拓分析,等于白猎。

本节要点回顾

  • 五段流水线:参数化、广度搜索、周期判据、牛顿精修、分类存档,各段职责与预算泾渭分明;
  • 清扫策略:随机撒点加偏差增长率初筛,机时自动向孤岛集中,且天然并行——产量爆发的真正原因;
  • 两个翻车点:假阳性靠精修定案防伪,漏检靠置换与旋转等价类判据堵漏;
  • 精修实验:牛顿迭代把粗命中推到机器精度,收敛行为本身是周期解的鉴定证书;
  • 预算与纪律:九成机时花在广度,存档必须带全套元数据——流程纪律比算力规模更稀缺。

仪器、读片术、流水线齐备,实验室出师。下一章回到现象本身:这些照片与轨道背后的"混沌",到底是什么、有多快、有几种结局。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U