---
title: "亲手重算GD-1投影轨道比较"
description: "从零网络星流积分开始，取得固定作者产品后运行galpy条件轨道拟合，保留不收敛、覆盖失败和真实拟合不足。"
canonical_url: "https://sandboxphysics.com/zh/stories/stellar-streams/recompute-gd1-projected-orbit-fit/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/stellar-streams/recompute-gd1-projected-orbit-fit/"
last_modified: "2026-11-05"
---

[星流、引力掠过与观测投影](https://sandboxphysics.com/zh/stories/stellar-streams/)

星流与掠过 · L3

# 亲手重算GD-1投影轨道比较

Sandbox Physics · 2026-11-05

这份教程会产出两类不同的结果：一份能独立检验力学的自有星群记录，以及一份对真实GD-1投影点的条件轨道比较。后一份结果表现不佳，也是教程要读懂的结果。

## 开始前需要什么

先读《把三维星流投到天空》。需要能在终端运行Python；已有NumPy、SciPy、Matplotlib。可选真实练习另需已安装、可实际加载C扩展的galpy与Astropy，程序不安装工具。

## 先在离库目录算出一份新记录

下载科学ZIP，核对页面公布的字节与SHA，再解压到一个新目录。输出路径必须尚不存在；不要先把它建成空文件夹。默认程序不联网，也不读取交互引擎。

它从固定种子生成一百九十二条不同初态，实际计算二十五个已登记参数点。每点都用独立高阶积分和半步细化比较完整保存状态，并核对功、力矩、相空间体积与可手算冲量。完整受扰记录与同初态宿主对照会保存，其他成功点只留下验证摘要。

```
python -B replay.py --output /absolute/new-output-path
```

对应阅读：Sandbox Physics standalone stellar-stream scientific reader v1

## 读图之前，先读坐标

输出的计数图采用固定的共转方位格子，并列出范围外恒星。它数的是等权示踪星，不是连续密度、表面亮度或探测显著性。另一图比较同一颗星相对宿主对照的角位移，不用两份无关随机样本相减。

这是规定的温暖小弧，没有潮汐释放、自引力、观测选择或真实GD-1初态。它的价值在于能看清因果与数值误差，不能把模拟中的缺口贴到天空上就声称发现了子晕。

[![上图比较三个保存时刻的等权恒星计数，下图比较同一颗星相对宿主对照的角位移，颜色表示物理高度。](https://sandboxphysics.com/stories/stellar-streams/materials/fresh-encounter-counts.svg)](https://sandboxphysics.com/stories/stellar-streams/materials/fresh-encounter-counts.svg)

上图比较相遇时、约八千三百万年和四亿八千三百万年后的恒星计数；下图在约五亿三千三百万年时，比较同一颗星相对宿主对照的角位移。数值模拟包含一百九十二颗等权示踪星，格宽固定；图中每个时间单位约六千六百七十万年。

[打开可放大的原图](https://sandboxphysics.com/stories/stellar-streams/materials/fresh-encounter-counts.svg)

对应阅读：Sandbox Physics standalone stellar-stream scientific reader v1

## 可选：真正取得固定原件

可选命令只取一个固定作者ZIP、一份固定官方坐标源代码和其MIT许可证，共七十三万七千三百四十八响应体字节。它逐件检查完整长度与SHA，失败停止，不换镜像；也可以显式指定已有、经过核验的原件目录，但那不叫首次获取。

原件、真实投影行、拟合轨迹与真实数据图都留在读者的私有输出目录。公开访问与存档级许可不自动消除上游Gaia权利条件，因此这些行和图没有装进科学包。

```
python -B optional_reader.py --acquire --output /absolute/new-private-path
```

对应阅读：Valluri et al. (2025), GD-1 Stellar Stream and Cocoon in the DESI Early Data Release, arXiv:2407.06336v2 · Gala v1.12.0: fixed official GD1Koposov10 coordinate source · Sandbox Physics standalone stellar-stream scientific reader v1

## 先投影，再算真的C轨道

程序先检查官方字面矩阵、正反方向、太阳运动与自行单位，再用真正加载的galpy C积分计算前后各一亿年。圆轨道正转和反转、独立笛卡尔积分及守恒都要通过，才能进入保存的已知真值恢复。

galpy中的十五千秒差距是积分长度单位；观测者变换另固定太阳到银河中心的距离为八点一二二千秒差距，并采用明列在程序中的源太阳速度。积分单位与观测者位置各管不同的换算。

实际拟合只调整固定沿流锚点上的五个条件量：横向角位置、距离、两个已校正自行和日心径向速度。宿主固定为球对称对数势；轨道必须在锚点所在单调经度分支覆盖全部源经度，不拼接绕行的另一次经过，也不外推。

原表的坐标一致性诊断曾未过旧门，这个失败仍在。正式框架采用核实的官方源定义，不靠观测重新调旋转；原表未知的上游细节仍待核实，框架内部检验只负责这份明确的变换定义。

对应阅读：Gala v1.12.0: fixed official GD1Koposov10 coordinate source · Sandbox Physics standalone stellar-stream scientific reader v1

## 三个起点，为什么不能只展示最好的一张图？

三个预定起点都要运行并保存。第二个起点的尝试全部缺少完整经度覆盖，没有可接受轨道，保留为失败；不自动增加起点。第一起点耗尽四百次目标调用，仍非收敛。第三起点很快报告优化成功，但它的损失反而很差。

选择基准只看训练损失。之后两组预定相对权重都从这同一个训练候选启动，不偷看留出结果选种子。每份最终接受轨迹还要过独立全状态、守恒与保存采样加倍的检验。

真实基准留出损失约零点六零八，大于同折三次曲线的零点四四五。两个自行的留出均方根残差约零点二一八、零点三六二毫角秒每年。把角位置权重变动后，结果也会变；不同权重下的总损失不能直接比高低。

对应阅读：Sandbox Physics standalone stellar-stream scientific reader v1

## 一份好的复算，可以得出“不够好”

打开每阶段的外层时间、实际返回码、目标调用与拒绝理由。成功重放说明同一计算确实重新执行，不表示真实拟合已好到能推断银河势或暗物质。这里没有完整协方差、成员选择似然与星流释放模型，给出的不是置信区间。

你可以从失败提出下一问：加入更真实的释放历史，会改善横向自行吗？允许宿主改变，会与距离或太阳校正退化吗？这些需要新模型与新验证；当前的全部数据点和误差门继续保留。

对应阅读：Sandbox Physics standalone stellar-stream scientific reader v1 · Valluri et al. (2025), GD-1 Stellar Stream and Cocoon in the DESI Early Data Release, arXiv:2407.06336v2

## 练习与解释性答案

1. 优化器报告成功，是否比耗尽调用预算的起点更可信？

   展开解释

   先比较实际训练预测、留出预测与覆盖。成功标志是算法停止条件；在本例里，一个很快停止的起点反而拟合很差。不能用停止标志代替模型检验。

2. 重放所有阶段都得到预期结果，能说真实模型拟合通过吗？

   展开解释

   不能。预期结果包括无覆盖起点失败、不收敛和轨道不如三次曲线。通过的是计算与保留失败的流程；真实模型质量不足是另外一个结论。

## 动手检验预测

### [把保存记录接到离线复算](https://sandboxphysics.com/zh/labs/stellar-stream-encounter/)

1. 先导出实验的完整记录，再在离线包中找到时间、位置、速度与收支的对应字段。
2. 切换无扰动预设，观察相同恒星身份为何是对照的关键。
3. 离线真实练习完成后先比较留出残差，不以舞台像不像星流判定物理模型。

## 独立科学复算材料

[下载科学复算ZIP](https://sandboxphysics.com/stories/stellar-streams/materials/stellar-streams-reader-science-v1.zip) · [阅读安装与计算说明](https://sandboxphysics.com/stories/stellar-streams/materials/reader-setup.md)

独立ZIP零网络新算二十五个有限掠过点与解析极限，图读取新保存记录。明确选择的真实数据练习私下取得固定原件，保留条件拟合不足。

[上一篇：把三维星流投到天空，再谈拟合](https://sandboxphysics.com/zh/stories/stellar-streams/observing-and-fitting-a-stellar-stream/) [下一篇：怎样读懂GD-1的薄流与宽茧](https://sandboxphysics.com/zh/stories/stellar-streams/reading-gd1-stream-and-cocoon-2025/)

## 来源与计算范围

1. [Valluri et al. (2025), GD-1 Stellar Stream and Cocoon in the DESI Early Data Release, arXiv:2407.06336v2](https://arxiv.org/abs/2407.06336v2)

   固定2025年1月30日v2，完整二十五页已读，原页7、12、14、21实际查看。对应第3—5节、图2及7—12、表3与附录A；与本教程条件轨道比较分开。DOI 10.3847/1538-4357/ada690；不再发布原文、原图或观测行。

2. [Gala v1.12.0: fixed official GD1Koposov10 coordinate source](https://github.com/adrn/gala/blob/bebac7d728478c5122a568e12175ef894d1c1516/src/gala/coordinates/gd1.py)

   MIT源代码固定commit bebac7d728478c5122a568e12175ef894d1c1516。保留字面舍入矩阵与转置反向，规范化方向及自行；可选教程获取完整源并核SHA，不安装Gala。

3. [Sandbox Physics standalone stellar-stream scientific reader v1](https://sandboxphysics.com/stories/stellar-streams/materials/stellar-streams-reader-science-v1.zip)

   自有Python新算二十五个有限点、独立高阶参照、半步、解析极限与保存计数。默认零网络，可选原件galpy练习保留拟合不足、不收敛、覆盖失败。ZIP不含交互引擎、完成轨道、原件或真实观测派生图。
