跳到主要内容
Sandbox Physics
从恒星暗线走到丰度模型

AC03 · Tutorial

亲手拟合一份固定的恒星光谱

准备两份文件:一份有已知答案的合成谱,一份来自 HST/STIS 的织女星观测。先用合成谱学会拟合,再看真实氢线怎样让一个过于简单的线型露出破绽。本页文件包附有全部输入与脚本,解压后可离线重跑。

固定输入,先看来源再看曲线

实测输入是 CALSPEC 的 alpha_lyr_stis_011.fits,第十一版。全文件是观测与模型拼接的光谱;这里仅选表头标注来自 STIS 的光学段,取四千七百五十至四千九百七十五真空埃、质量标记为一的八十二行,不重采样。原始 FITS 也一起保存,因此可以检查截取前的表头和列。

原始表给出波长、绝对通量、统计误差、系统误差、分辨宽度、质量和曝光时间。表头列出 G430L 的三个观测编号:o8i105060、o8i106010、o8i106040。它还说明这一版采用 2022 年电荷转移效率更新。源文件与截取 CSV 都附 SHA-256 校验和。

运行脚本首先验证源文件校验和,然后按冻结的表格式解码,并重新写出带原始行号的 CSV。脚本只是读取这一个已知文件,不能当作通用 FITS 阅读器。若升级数据版本,应重新核查表头、单位和选择条件。

python3 calspec-tutorial.py
python3 spectrum-tutorial.py

对应阅读:STScI CALSPEC, alpha_lyr_stis_011.fits (25 October 2022) · MAST reference atlases and CALSPEC releases

先在有答案的谱里找回速度

合成谱包含七百二十一个已标定波长样本,随机种子固定为 2026102820261028。它采用两条人为跃迁、冷层源函数、倾斜连续谱及已知高斯仪器响应。注入速度为 18 km s−118\,\mathrm{km\,s^{-1}},单样本随机标准差为 0.0040.004。这组数据专门检查算法,和织女星实测值分开。

给速度、Doppler 参数和线心光学深度一个试探值,就能计算整条归一化线型。程序随后直接解倾斜连续谱的两个系数,计算标准化残差平方和;外层逐步缩小搜索步长。固定输出的速度约为 18.0 km s−118.0\,\mathrm{km\,s^{-1}},Doppler 参数约 2.38 km s−12.38\,\mathrm{km\,s^{-1}},参考线心光学深度约 2.862.86。

这些数不必精确等于注入值,样本含随机噪声,线宽与光学深度也有相关性。约化平方和约 1.041.04,说明这份特定记录与已知生成模型相容。输出把样本数、自由度、连续谱系数和残差尺度都保存下来,方便检查。

Mi=(a+bxi)qi(vr,bD,τ0),χ2=∑i(yi−Mi)2σi2M_i=(a+b x_i)q_i(v_r,b_D,\tau_0),\qquad \chi^2=\sum_i\frac{(y_i-M_i)^2}{\sigma_i^2}
a 与 b 是连续谱系数,x 是固定的无量纲波长坐标;b_D 单独表示 Doppler 参数。给定非线性参数后,a 和 b 的最小平方解是线性的。

两次故意做错的分析

第一次,把每个合成波长都加上 0.002 nm0.002\,\mathrm{nm}。速度变成约 19.2 km s−119.2\,\mathrm{km\,s^{-1}},平方和却几乎没变。请对照两份输出的残差:标定零点被速度吸收了。这里给定的 0.0002 nm0.0002\,\mathrm{nm} 零点标准差,对应约 0.120 km s−10.120\,\mathrm{km\,s^{-1}} 的共同速度误差。

第二次,假装仪器完全没有展宽。拟合把 Doppler 参数推到约 3.55 km s−13.55\,\mathrm{km\,s^{-1}},线心光学深度变成约 1.401.40,约化平方和增到约 3.673.67。模型只好给气体更宽、更浅的线去补偿仪器模糊。请比较这两种失败:一种留下很好的残差,另一种连残差也明显变差。

再量一次织女星的真实氢线

实测脚本围绕氢 Balmer-beta 附近的 4862.683 A˚4862.683\,\mathrm{\mathring A} 真空参考波长,先用两侧 22 A˚22\,\mathrm{\mathring A} 的局部窗口拟合直线连续谱加高斯吸收凹口。这个参考只用于定义表观移动,不把氢线的细结构、压力移动和速度参考系假装消失。

固定结果的表观中心约 4862.20 A˚4862.20\,\mathrm{\mathring A},对应约 −29.6 km s−1-29.6\,\mathrm{km\,s^{-1}} 的表观 Doppler 值,高斯半高全宽约 18.5 A˚18.5\,\mathrm{\mathring A}。把窗口扩大后,高斯宽度变为约 25.1 A˚25.1\,\mathrm{\mathring A}。同一份资料,模型看了不同范围,测量定义就改变了。

更明显的例子是把宽窗口的连续谱硬设为水平线:表观速度改到约 −7.4 km s−1-7.4\,\mathrm{km\,s^{-1}}。带长翼的 Lorentz 函数改善了残差,但仍留下远大于统计误差的结构。输出的巨大加权平方和,正好提醒我们这个简单线型还没有描述好氢线。

对应阅读:STScI CALSPEC, alpha_lyr_stis_011.fits (25 October 2022)

该把哪一种误差写进结论

实测拟合只用 STATERROR 作权重,把 SYSERROR 单独保留。标定系统误差会在波长间相关,不能自动当成每个像素各自独立的一张随机误差棒。已有资料的误差栏也没有替我们解决连续谱位置、线型与波长零点。

这里应报告表观线心、经验宽度,以及它们对窗口、连续谱和线型的敏感性。不要把这些练习数值报成织女星的精密系统速度,也不要把氢线宽直接换成温度或金属丰度。HST/STIS 手册把波长精度与色散解、零点和目标在狭缝中的位置联系起来,实际精度分析应回到对应模式和曝光的标定。

做另一颗恒星时,沿同样顺序记录:文件版本、观测来源、波长介质与参考系、所用样本、连续谱、响应函数、残差结构,最后才是物理参数。保存失败案例,下次遇到同样漂亮却带错速度的拟合,就有一个可以比较的起点。

对应阅读:STIS Data Handbook, section 4.3, Factors Limiting Flux and Wavelength Accuracy · MAST reference atlases and CALSPEC releases

把仪器响应放回分析

  1. 在 Lab 中固定冷层状态,导出高低分辨本领的两份谱。
  2. 比较线深和总等值宽度,预测忽略仪器时会怎样误估线宽。
  3. 再看合成脚本的 ignored instrument response 输出,解释速度与宽度为何没有同样的偏差。

练习与解释性答案

  1. 为什么实测脚本没有把 SYSTEMATIC 和 STATERROR 逐像素平方相加后宣称拟合可靠?

    展开解释

    系统标定误差可能跨波长相关,缺少协方差时不能把它们伪装成独立噪声。模型残差也远大于统计误差,应先改善物理模型与连续谱。

  2. 如果把合成谱的随机噪声减半,波长零点造成的速度偏差会怎样?

    展开解释

    偏差几乎不变,因为所有波长仍共同挪动。随机误差缩小,会让这项共同偏差相对更显眼。

来源与计算范围

  1. STIS Data Handbook, section 4.3, Factors Limiting Flux and Wavelength Accuracy

    波长零点、色散解与狭缝对中;用于区分表观线心移动与精密径向速度。

  2. STScI CALSPEC, alpha_lyr_stis_011.fits (25 October 2022)

    固定版本 FITS 表头与四千七百五十至四千九百七十五真空埃之间的八十二行 STIS 观测值;教程附校验和及原表行号。

  3. MAST reference atlases and CALSPEC releases

    用于说明数据来源与发布背景;练习固定第十一版,不追随会变化的 current 目录。

反馈这个页面有错误、看不明白,或者缺了什么?告诉我们
反馈类型

提交时会附带本页地址、Lab ID、网站语言和设备类型。请不要填写个人信息。反馈最多保存 12 个月。隐私政策