3.3 周期解大家族:从十三族到上千族的扫描时代


3.3 周期解大家族:从十三族到上千族的扫描时代

本节摘要:等质量平面三体在零角动量约束下,初值空间经对称性化约后只剩两个自由参数——这片二维参数平面上散布着数以千计的周期解孤岛,彼此连通成"族"。2013 年苏瓦科夫与德米特拉希诺维奇扫出十三族新解,2017 年李晓明与廖世俊用随机搜索加牛顿精修把家族总数推过六百,随后突破上千。本节讲清"族"的定义、扫描流水线,并跑一个缩小版扫描实验。

把参数平面铺在桌上

接上一节的流水线视角,先解决"往哪儿扫"的问题。等质量平面三体的初值本来有十二个分量,但三重对称性替你省了预算:质心守恒允许整体平移归零;尺度对称性(第 2.1 节的标度变换)允许总尺寸归一;整体旋转允许把三个天体摆到同一条直线上。做完全部化约,标准参数化只剩两个数 (v_1, v_2)——三体静排在横轴上,位置取 -1, 0, 1,两侧天体的初速度同为 (v_1, v_2),中间天体取负两倍以抵消总动量。

于是三百年来"三体还有没有新解"的问题,变成了一个具体得不能再具体的问题:**在这张二维参数平面图上,哪些点是周期解?**参数平面成了猎场的沙盘,每一个坐标对就是一个待审的初值。这个化约是整个扫描时代的地基——没有它,再大的算力也只能在十二维里乱撞。

"一族解"到底是什么

孤岛不是一个点,而是一片连绵的区域:周期解在参数平面上聚成连续曲线状的地块,地块上每一点都是一个周期轨道,周期与形状沿地块连续变化。这样一片连通地块记作一。族的意义在于它给出的是一整个解的"谱系"而非孤立样本——族内可以做延拓分析、稳定性追踪,也可以问"这一族能延伸到质量不等的世界吗"。

历史上的猎法分两代。第一代以布罗克与埃农为代表:1970 年代他们在自由下落的初始线上系统地寻找对称周期轨道,画出第一批参数平面上的"稳定窗"。第二代从 2013 年开始:苏瓦科夫与德米特拉希诺维奇在 (v_1, v_2) 平面上网格扫描,报告了十三族新周期解,并用形状起了名字——蝴蝶、飞蛾、护目镜、蜻蜓、阴阳、蝌蚪。2017 年李晓明与廖世俊换上随机搜索加牛顿迭代的"清扫策略",一次报告六百一十三族新解;随后几年,同一方法族把总数推过一千。猎物数量的指数增长没有动用任何新物理,用的完全是猎具:更聪明的搜索、更稳的精修、更严的判据

图 3-4 参数平面上的周期解花谱

图 3-4 参数平面上的周期解花谱

动手实验:跑一个缩小版扫描

实验背景:复现扫描流水线的最小版本,亲眼看看周期解的"命中率"。操作:取 (v_1, v_2) 平面一小块区域,铺一张粗网格;每个网格点出发积分最多数十个时间单位,每走一段检查一次"是否近似回到初值";命中者标记。代码如下——这是第 2 章受力零件与 RK4 的组装练习:

import math 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:] def a_of(q_): return accel(q_) a1 = a_of(q) q2_ = [q[i] + 0.5 * dt * v[i] for i in range(6)] v2_ = [v[i] + 0.5 * dt * a1[i] for i in range(6)] a2 = a_of(q2_) q3_ = [q[i] + 0.5 * dt * v2_[i] for i in range(6)] v3_ = [v[i] + 0.5 * dt * a2[i] for i in range(6)] a3 = a_of(q3_) q4_ = [q[i] + dt * v3_[i] for i in range(6)] v4_ = [v[i] + dt * a3[i] for i in range(6)] a4 = a_of(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 make_state(v1, v2): # 三体静排在横轴 -1, 0, 1;两侧初速度 (v1,v2),中间取负二倍 return [-1.0, 0.0, 0.0, 0.0, 1.0, 0.0, v1, v2, -2 * v1, -2 * v2, v1, v2] def scan(v1, v2, t_max=60.0, dt=0.002, check_every=0.05, tol=0.01): s = make_state(v1, v2) steps_per_check = int(check_every / dt) done = int(t_max / dt) for step in range(done): s = rk4_step(s, dt) if step % steps_per_check == 0 and step > steps_per_check: if max(abs(s[i] - make_state(v1, v2)[i]) for i in range(12)) < tol: return step * dt # 命中:返回近似周期 return None # 粗网格:20 × 20 hits = [] for i in range(20): for j in range(20): v1 = 0.20 + i * 0.01 v2 = 0.20 + j * 0.01 p = scan(v1, v2) if p is not None: hits.append((round(v1, 3), round(v2, 3), round(p, 2))) print("网格点数 400,命中数:", len(hits)) for h in hits[:10]: print("命中 v1, v2, 近似周期:", h)

结果:四百个网格点里命中通常只有个位数,且命中的点会在参数平面上成簇出现——簇就是周期解族的粗略轮廓;八字轨道所在的位置(把参数化换算过去)恰好落在一个已知簇附近。解读分三层。第一层,命中率直观演示了"特殊解测度为零":混沌海占绝对面积优势,孤岛需要放大镜才看得见。第二层,粗网格只能给出"疑似命中",因为容差放得很宽——真发现还差一道牛顿精修:把近似初值代入"一个周期后的偏差"方程做牛顿迭代,几个回合就能把精度推到机器极限,这正是清扫策略里"搜索粗、精修狠"的分工。第三层是成本账:四百点用了秒级时间,扫出六百族需要把网格加细、时间上限拉长、再做精修验证,总算力是本实验的十万倍量级——理解了这个比例,就理解了为什么这类发现在 2010 年代才集中爆发。变式:把容差调严到 0.001 重跑,命中率骤降而命中的簇变小变实——你亲手验证了"判据宽严决定孤岛表观大小"这个扫描方法论的关键细节。

名字、家族与实用的边界

给周期解起蝴蝶、蝌蚪的名字不是卖萌:族与族之间需要可辨认的索引,形状命名比编号好记得多。但有两件事名字遮不住。其一,绝大多数已知族只存在于等质量这一模型区——把质量比调离 1:1:1,多数族要么变形、要么消散,能连续延拓过去的是少数(8 字是其中之一,西莫的延拓工作给出了第一批样本)。其二,稳定成员是稀缺中的稀缺:上千族里线性稳定的只有一小部分,多数族成员对扰动脆弱——这决定了它们目前的价值主要在理论与验证侧,而非工程侧。

本节要点回顾

  • 参数化:对称性把等质量平面初值压到两个参数,周期解搜索变成二维沙盘问题;
  • 族的定义:参数平面上连通的周期解地块,族内轨道形状与周期连续变化;
  • 两代猎法:布罗克-埃农的对称轨道搜索打底,苏瓦科夫-德米特拉希诺维奇十三族定名,李-廖清扫策略推过上千族;
  • 流水线:网格或随机搜索负责广度,牛顿精修负责精度,周期判据负责淘汰——三段缺一不可;
  • 两重稀缺:多数族只活在等质量模型区,线性稳定成员只是少数——特殊解的价值在标本与标尺,不在覆盖。

沙盘上的孤岛越扫越多,但猎场最深处还有更古怪的物件:初速全零的下落问题,以及把"奇点"从碰撞推广到无穷远的五体构造。下一节抵达这条清单的尽头。


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