---
title: "从一份固定的玉夫座恒星样本重算起"
description: "独立计算单区气体、延迟产额和恒星出生分布，再在读者本地提取固定论文的99颗恒星，比较96颗有效测量。"
canonical_url: "https://sandboxphysics.com/zh/stories/galactic-chemical-evolution/recompute-a-fixed-sculptor-sample/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/galactic-chemical-evolution/recompute-a-fixed-sculptor-sample/"
last_modified: "2026-11-05"
---

[星系化学演化](https://sandboxphysics.com/zh/stories/galactic-chemical-evolution/)

星系化学演化 · L3

# 从一份固定的玉夫座恒星样本重算起

Sandbox Physics · 2026-11-05

先问一个能亲手检验的问题：同一组产额配上不同的恒星形成史，会在镁铁丰度平面上留下怎样的分布？本教程先用自有合成测量跑通全部计算，再在本地读取 Hill 等人的固定论文。比较结果是一组条件密度；样本的红巨星选择和完整误差协方差尚未建模，不能由此恢复玉夫座星系唯一的形成史。

## 开始前需要什么

读完前面三章；能在终端执行 Python 命令。需要 Python 3.12、NumPy、SciPy。真实样本步骤另需系统已有的 pdftotext；没有它仍可完成全部合成实验。

## 先准备一个空目录

下载本页的独立 Python 资料包，解压后进入目录。包里只有自有程序、固定标量、合成测量与说明，没有 Lab 引擎，也没有原论文或恒星观测表。先核清单，再开始计算。下面各步都向新目录写结果，已有文件会触发拒绝，避免一次新运行盖掉旧结果。

```
python science/verify_package.py
python science/make_records.py --save-every .005 --output results/records
```

对应阅读：Independent one-zone chemical-evolution Python materials

## 气体轨迹和恒星出生分箱是两种分辨率

第一步实际求解四份指定历史。物理记录保存气体、锁入恒星、风和两种元素的十四个库存；时间单位是十亿年，质量单位对应初始十亿太阳质量。为减小文件，完整物理快照每0.05十亿年保存一次，但每0.005十亿年的恒星出生质量与出生丰度都保留。

独立参考程序以更紧的微分方程容差和0.0025十亿年的出生分箱重新求解。细轨迹的完整数组在内存中计算；包保存细出生分布、实际逐字段最大差与完整细记录的摘要，不声称把每个细物理数组都归档。正权四点、八点高斯积分另检验观测混合积分，先插值气体和元素质量，再求丰度。

```
python science/make_reference.py --records results/records --output results/reference
python science/validate.py --records results/records --reference results/reference --output results/validation.json
```

对应阅读：Independent one-zone chemical-evolution Python materials

## 让失败告诉我们还缺什么

较早的0.02与0.01十亿年出生分箱，在逐星对数密度的平均绝对差上达到0.08499，超过事前0.01门。气体库存守恒没有替观测积分把这一关过掉。保留同样四份历史与误差情景，改用0.005对0.0025后，合成样本及真实样本的有限检查最大值约0.00549；正权四点到八点积分约为千万分之几。

这是这四份历史和列明误差情景的离散化证据，不是任意形成史的统一精度保证。验证程序也检查归一化延迟分布、独立卷积积分、气体解析解、气体和元素库存、正定误差以及耗尽气体的拒绝。看检查字段及其适用范围，再看总状态。

对应阅读：Independent one-zone chemical-evolution Python materials

## 用保存的测量比较保存的出生分布

合成文件含96颗自有测量，不向比较器提供恒星年龄或生成它们的候选名称。比较器读取四份保存记录，在三个假设相关系数以及模型横轴或纵轴单独偏移0.1 dex的情景下，实际计算归一化二维高斯混合密度。偏移不修改原测量。

编号末位整数能被5整除的测量留出：合成样本为77颗训练、19颗留出。这个固定分割便于复算，不是覆盖率实验。这里没有参数优化器，四个指定历史的分数排序也不是星系模型的后验概率。

```
python science/compare.py --records results/records --output results/synthetic-comparison.json
```

对应阅读：Independent one-zone chemical-evolution Python materials

## 把固定原件只取到自己的电脑

可选步骤使用 Hill 等人 arXiv:1812.01486v2 的固定 PDF。下载器只请求明确的原站 URL，检查正文大小和 SHA-256，不自动重试或找镜像。离线核验可显式指定已保存、同摘要的缓存，不能把这种运行称为重新联网获取。

提取器分别读取 PDF 的布局文本和原始文本，按表C5的99个唯一编号逐字段核对。96颗具有有限的铁丰度、镁铁比及两列正误差；另外三颗缺测仍留在完整本地表中。提取输出不上传，也不写进公共资料包。

```
python science/fetch_hill.py --output reader-private/hill-v2.pdf
python science/extract_hill.py --pdf reader-private/hill-v2.pdf --output reader-private/hill-observations.json
```

对应阅读：Hill et al., VLT/FLAMES high-resolution chemical abundances in Sculptor, arXiv:1812.01486v2 · Independent one-zone chemical-evolution Python materials

## 为什么这还不是玉夫座形成史拟合

这99颗来自中心区域的亮红巨星选择。论文观测方法写的是直径25角分的 FLAMES 视场、亮于 I 波段17.5等的上红巨星支目标，再经过成员和谱线质量筛选。结论段对视场的半径说法与方法段不同；这里按实际观测方法描述，不由两种措辞猜覆盖面积。

出生质量加权没有替红巨星寿命、亮度和选星概率加权。论文也没有给出本比较需要的完整逐星镁铁协方差；三个相关系数是敏感性假设。共享铁误差为什么往往产生负相关，上一章的线性变换提供了例子，不能替代这些恒星的协方差。

模型太阳质量分数来自固定 VICE 约定及其 Asplund 太阳参考；本教程尚未建立 Hill 数值零点到该参考的定量变换。这里保留原坐标，并列零偏移和单轴偏移情景。真实96颗按同一编号规则分成80颗训练、16颗留出。在这些前提下读分数，不把最高分称作校准似然、唯一年龄或无偏星系历史。

```
python science/compare.py --records results/records --data reader-private/hill-observations.json --output reader-private/hill-comparison.json
python science/make_reference.py --records results/records --real-data reader-private/hill-observations.json --output reader-private/reference-with-hill
```

对应阅读：Hill et al., VLT/FLAMES high-resolution chemical abundances in Sculptor, arXiv:1812.01486v2 · VICE v1.3.1 fixed effective yields and solar reference · Independent one-zone chemical-evolution Python materials

## 带走哪些结果

保存输入、代码清单、四份记录、验证和比较文件。这些记录和测量提供了重算每个分数所需的输入。若要画真实恒星散点，请在本地从提取结果生成；公开页面只展示自有合成图。

下一步真正有价值的改进，是引入可检验的红巨星选择、共同误差与太阳参考转换，然后再讨论更多形成史及其统计校准。有了这些可检验的条件，才适合进一步校准更广泛的形成史比较。

对应阅读：Independent one-zone chemical-evolution Python materials

## 练习与解释性答案

1. 若缺测三颗仍在完整表里，比较器为什么只使用96颗？

   展开解释

   二维误差密度要求两项测量和正的两项边际误差。把缺项填成零会创造测量。保留99颗完整表以记录选择过程，只让96颗满足条件的记录进入当前计算。

2. 独立参考的库存差很小，但出生分箱的密度差超过0.01，应接受哪一个结论？

   展开解释

   库存数值门通过，观测积分门失败；不能以一个代替另一个。保留失败，细化出生积分并重新检查同一门，不能把分数变化归给星系的新物理。

## 动手检验预测

### [比较同一气体库的不同历史](https://sandboxphysics.com/zh/labs/galactic-chemical-evolution/)

1. 导出任一历史的完整记录，区分物理快照间距和恒星出生分箱。
2. 比较有再流入和无再流入的出生分布，解释为什么一段曲线很长却可能只有少量恒星出生。

## 独立科学复算材料

[下载科学复算ZIP](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/chemical-evolution-science-v1.zip) · [阅读安装与计算范围](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/README.md)

离线计算需要Python、NumPy与SciPy，实际求解四份历史并比较保存的合成测量。可选固定Hill表用本地pdftotext提取；ZIP没有原观测、论文或浏览器交互引擎。

单件脚本、字节与SHA-256

- [README.md](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/README.md) (5754 B)
  `5a638f0c540b5d489ab149d2af7b8713a376a85a66f6a1a241a57052fee5ea1a`
- [LICENSE.txt](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/LICENSE.txt) (1271 B)
  `c8d56106a2c4041b440e94509790c6403bbad8908db7efdbf09bbfe4c893ce82`
- [requirements.txt](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/requirements.txt) (27 B)
  `39b93fa1b8397265839a510ca7601608248a7f3524067b61667e977bf4351475`
- [source-identities.json](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/source-identities.json) (1618 B)
  `f7d7dc4c91ee350ab7f809a2c4c54c7f2e6c650a87e3b4b7476cdaa1c59ed127`
- [fixed-inputs.json](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/fixed-inputs.json) (533 B)
  `98aaf54949a88e6ee5e4697b5ff25050bfff5790faa17d6d6ee5b7b02f9f1ac2`
- [model-family.json](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/model-family.json) (537 B)
  `58dac14f9a01ed44a43c4d45dc88e12aa76c9a26c5fd977940099811242751a4`
- [own-observations.json](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/own-observations.json) (10029 B)
  `3c2f318702cf26a370d4d298b8e4ed37da26e19c5052d51ef9a0daee06dba2f0`
- [compare.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/compare.py) (3237 B)
  `785b41dd356c57e90165197b70ec11adf6271daafe85e096e793f237bcc2c860`
- [evolution.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/evolution.py) (4572 B)
  `4deabefc6e7087e882bf44fe43b582762ba461d08c634d7e5237615760fcf108`
- [extract\_hill.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/extract_hill.py) (2549 B)
  `59aa4cd821574c65110549c41e513fe7161210789c319eeb9342b26d659598d3`
- [fetch\_hill.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/fetch_hill.py) (1705 B)
  `d31ccb38d10b8cd8a90194ba6a6d5b3e97af81b41c3dbef903c48ecc9b413696`
- [io\_helpers.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/io_helpers.py) (1894 B)
  `2a07f3ab2f0792f19d5575e5fbb38a6d1370df6e01c20c1cde0a3e2fa072a959`
- [make\_observations.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/make_observations.py) (1327 B)
  `5498e13a03606dc0adf97488f0f1d1bef92f04ed275aa16f7fe111a0d5683e79`
- [make\_records.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/make_records.py) (1461 B)
  `3f25e9ee127836c6e2ade3f922de38941ca941bf26ebd9c85bf21538655b611a`
- [make\_reference.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/make_reference.py) (4034 B)
  `cb0b779f168fe6e8ec93614da0eae1de7f82c37d61a632f05b5e987fe4e14f69`
- [observation\_quadrature.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/observation_quadrature.py) (1662 B)
  `5b1ad8917ef50bff8a63248c883e5b56f72875eaa49470b41d98db44ca21186a`
- [plot.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/plot.py) (3976 B)
  `55f9242160e7bd86321117136b5fc12a735c39cb1d5ae2ccd57481f76fb2ec6d`
- [validate.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/validate.py) (7153 B)
  `1e089465eae28b0bcbf8bf9e696c3ccd7e07a645bcf7173cb536c72e878e5c00`
- [verify\_package.py](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/verify_package.py) (926 B)
  `16d0c1b6185e7107b33fd33639456aa4806f3984269ca671f9b1b70bf487cd3d`
- [SHA256SUMS.json](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/SHA256SUMS.json) (3112 B)
  `28a1797407ef24a767fde830473a49ca5d8ddb675f13ce03135ba1a2fe4b567a`
- [chemical-evolution-science-v1.zip](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/chemical-evolution-science-v1.zip) (26888 B)
  `63dc82bb31bcd276c9abc76191e3201804d13d068811c5ff27bd244b17dcc06d`

[上一篇：从气体轨迹走到一群恒星的丰度](https://sandboxphysics.com/zh/stories/galactic-chemical-evolution/from-gas-tracks-to-stellar-abundances/) [下一篇：延迟源留下的线索，为什么仍不唯一](https://sandboxphysics.com/zh/stories/galactic-chemical-evolution/delayed-sources-and-imperfect-mixing/)

## 来源与计算范围

1. [Hill et al., VLT/FLAMES high-resolution chemical abundances in Sculptor, arXiv:1812.01486v2](https://arxiv.org/abs/1812.01486v2)

   重新核读第1至7节、附录A/B，并以两种文本模式实际提取表C5，99行及96个有效镁铁测量完全一致。方法段定义25角分直径视场和上红巨星支选择；结论段半径措辞不一致。未建立完整逐星协方差或到模型太阳参考的数值转换。原观测、PDF和实测派生图只留读者本地。

2. [VICE v1.3.1 fixed effective yields and solar reference](https://github.com/giganano/VICE/tree/v1.3.1)

   使用此前冻结的原生默认约定：Kroupa、核坍缩与Ia型的有效净镁铁产额、Asplund 2009太阳参考及声明的氢转换。公开资料仅有标量和身份，没有新产额网格或VICE可执行程序；独立Python不运行VICE。

3. [Independent one-zone chemical-evolution Python materials](https://sandboxphysics.com/stories/galactic-chemical-evolution/materials/chemical-evolution-science-v1.zip)

   自有连续卷积与DOP853实际producer，保存十四字段库存和出生群体，检查有限细化、归一化条件混合密度与数学极限。公开输入和图均为自有合成。默认离线，可选固定Hill源在读者电脑获取分析。没有Lab引擎、原论文、观测行或实测派生图。
