4.3 庞加莱截面:给混沌拍一张证件照


4.3 庞加莱截面:给混沌拍一张证件照

本节摘要:连续轨迹是四维的流,肉眼读不出规则与否。庞加莱截面的思路是"只在轨道穿过某张固定剖面时按下快门":规则轨道在照片上画出闭合曲线或点列,混沌轨道铺成雾状散点,共振轨道围成小岛。一张二维照片就此承载了动力学的全部性格。本节给出截面的构造代码、判读手册与一个亲手拍摄的四点阵实验。

轨迹为什么读不懂,照片怎么拍

先面对难题本身。平面圆型限制性三体的小天体有四维相空间(两个位置、两个速度分量),能量守恒把它压到三维曲面——依然是三维的曲线团,画在纸上要么投影变形、要么层层叠影。更麻烦的是时间:一条十万步的轨迹是十万条线段的缠绕,规则与混沌在缠绕里根本分不出彼此。

庞加莱的解法漂亮得近乎省事:别看全过程,只看轨道一次次穿过某张剖面的一瞬。在旋转系里取 y = 0、且 v_y > 0(定向穿越,排除来回蹭线)作为快门条件,每触发一次就记录当时的 (x, v_x),扔进一张二维照片。一条完整轨迹就这样变成了一串点——散点不再携带时间的先后,只留下动力学的"指纹"。

指纹有三种典型长相。闭合曲线:点串首尾相接绕成光滑的环,这是准周期运动——轨道被锁在不变环面上,每穿过一次剖面就落在环上的下一站,无数站连起来就是环的切口。散点雾:点子铺满一片区域、永远不重合,这是混沌——轨道在允许区内随机游走,照片上雾的边界就是零速度面画下的禁区。小岛:雾中点缀的围绕中心的小圈层,是共振轨道——周期运动的邻域在照片上的投影。一张照片,三种地貌,规则与混沌的分布一目了然。

动手拍摄:一次四格照片实验

实验背景:验证同一系统里三种地貌并存——随手在相空间选几个初值,有的拍出曲线、有的拍出雾。操作:沿用 2.2 节的旋转系方程,取日地量级质量比,在雅可比常数固定的条件下选四个初值(两个偏"规则区"、两个偏"混沌区"),各积分长程,边积分边按快门条件采样,最后用字符画把四张照片并排打印出来。代码如下:

import math mu = 3.0e-6 x1, x2 = -mu, 1 - mu def deriv(s): x, y, vx, vy = s r1 = math.hypot(x - x1, y) r2 = math.hypot(x - x2, y) ax = 2 * vy + x - (1 - mu) * (x - x1) / r1 ** 3 - mu * (x - x2) / r2 ** 3 ay = -2 * vx + y - (1 - mu) * y / r1 ** 3 - mu * y / r2 ** 3 return [vx, vy, ax, ay] def rk4_step(s, dt): k1 = deriv(s) k2 = deriv([s[i] + 0.5 * dt * k1[i] for i in range(4)]) k3 = deriv([s[i] + 0.5 * dt * k2[i] for i in range(4)]) k4 = deriv([s[i] + dt * k3[i] for i in range(4)]) return [s[i] + dt / 6 * (k1[i] + 2 * k2[i] + 2 * k3[i] + k4[i]) for i in range(4)] def shoot(s0, t_max=4000.0, dt=0.004): """返回截面点集 [(x, vx)]:y 从负穿正(vy 大于零方向)时记录""" pts, s = [], list(s0) prev_y = s[1] for _ in range(int(t_max / dt)): old = list(s) s = rk4_step(s, dt) if prev_y < 0 <= s[1]: # 定向穿越剖面 f = -prev_y / (s[1] - prev_y) xi = old[0] + f * (s[0] - old[0]) vxi = old[2] + f * (s[2] - old[2]) pts.append((xi, vxi)) prev_y = s[1] return pts def ascii_plot(pts, xr=(-0.2, 1.2), vr=(-1.0, 1.0), w=56, h=26): grid = [["."] * w for _ in range(h)] for x, vx in pts: i = int((x - xr[0]) / (xr[1] - xr[0]) * (w - 1)) j = int((vr[0] - vx) / (vr[1] - vr[0]) * (h - 1)) if 0 <= i < w and 0 <= j < h: grid[j][i] = "#" return "\n".join("".join(row) for row in grid) # 四个初值:前两个取自共振邻域,后两个取自更"松动"的位置 cases = [ ("初值甲", [0.5, 0.0, 0.0, 1.02]), ("初值乙", [0.8, 0.0, 0.0, 0.90]), ("初值丙", [0.3, 0.0, 0.35, 0.85]), ("初值丁", [0.6, 0.0, 0.50, 0.60]), ] for name, s0 in cases: pts = shoot(s0) print(name, "采样点数:", len(pts)) print(ascii_plot(pts)) print("-" * 60)

结果:四个初值拍出的照片性格分明。初值甲的点串收成一条细窄的弧线,反复描摹同一条轨;初值乙围出一个歪斜但清晰的圈;初值丙的点在一片区域里胡乱洒开,边缘却停在某条边界内侧;初值丁介于两者之间——能看出一团密实的"云芯"和几圈欲散未散的弧。解读按判读手册来:弧线与圈是准周期环面的切口,说明这两个初值住在规则岛内;丙的散点雾是混沌海的标准照,而雾的边界恰好就是雅可比常数允许的活动范围(2.2 节的零速度面在截面上的切口)——照片与地形图互相印证。丁的"云芯加残弧"最有教学价值:它揭示了规则与混沌不是两个国家的国界,而是犬牙交错的过渡带,第 5 章的"分形边界"将给这个观察定量化。另有一个细节值得指认:字符画的分辨率有限,真正的截面照片用绘图工具画会精细得多,但结构判读用字符画已经足够——判读靠结构,不靠像素变式:把初值丙沿混沌方向再挪一步、把积分时长拉长十倍重跑,观察雾有没有"渗"进相邻的岛——如果渗了,说明该岛的边界被部分破坏,这正是 KAM 环面逐级破裂的直观一幕。

图 4-4 截面快门的工作方式

图 4-4 截面快门的工作方式

判读手册与它的边界

截面是把好尺子,但有三条使用须知。其一,截面只对"有守恒量兜底"的系统划算:平面限制性三体恰好剩三维能量面,切一刀得二维照片;一般三体降维后维度更高,单张照片信息密度骤降,需要多张不同初值的照片拼图。其二,"雾"不等于"无结构":混沌散点看似均匀,放大了看有粗细疏密的差别,那是吸引子或不变测度的密度纹理——第 5 章讲统计描述时这就是主角。其三,照片会说谎:步长太大、积分太短,规则轨道也会画出断续的"伪雾";积分太长而雅可比常数漂了,雾的边界会慢慢扩张。所以每张照片旁边都要附上对账单——第 4.2 节的工序在这里兑现价值。

本节要点回顾

  • 拍法:定向穿越固定剖面时记录两个状态量,四维轨迹流压成二维点集,时间信息舍弃、性格信息保留;
  • 三种地貌:闭合曲线是准周期环面的切口,散点雾是混沌的标准照,小岛是共振轨道的签名;
  • 照片对地形:雾的边界由雅可比常数的零速度面圈定,动力学照片与几何地形图互相印证;
  • 过渡带:云芯与残弧共存说明规则与混沌犬牙交错,不是泾渭分明的两国;
  • 三条须知:维度高时照片失效、雾内仍有纹理、照片会因数值故障说谎——判读必须配上对账单。

到这一站,实验室的仪器与读片术齐备。最后一站组装流水线:把第 3 章猎人们的大扫描,按预算表原样复刻一遍。


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