固定输入,先看来源再看曲线
实测输入是 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
先在有答案的谱里找回速度
合成谱包含七百二十一个已标定波长样本,随机种子固定为 。它采用两条人为跃迁、冷层源函数、倾斜连续谱及已知高斯仪器响应。注入速度为 ,单样本随机标准差为 。这组数据专门检查算法,和织女星实测值分开。
给速度、Doppler 参数和线心光学深度一个试探值,就能计算整条归一化线型。程序随后直接解倾斜连续谱的两个系数,计算标准化残差平方和;外层逐步缩小搜索步长。固定输出的速度约为 ,Doppler 参数约 ,参考线心光学深度约 。
这些数不必精确等于注入值,样本含随机噪声,线宽与光学深度也有相关性。约化平方和约 ,说明这份特定记录与已知生成模型相容。输出把样本数、自由度、连续谱系数和残差尺度都保存下来,方便检查。
两次故意做错的分析
第一次,把每个合成波长都加上 。速度变成约 ,平方和却几乎没变。请对照两份输出的残差:标定零点被速度吸收了。这里给定的 零点标准差,对应约 的共同速度误差。
第二次,假装仪器完全没有展宽。拟合把 Doppler 参数推到约 ,线心光学深度变成约 ,约化平方和增到约 。模型只好给气体更宽、更浅的线去补偿仪器模糊。请比较这两种失败:一种留下很好的残差,另一种连残差也明显变差。
再量一次织女星的真实氢线
实测脚本围绕氢 Balmer-beta 附近的 真空参考波长,先用两侧 的局部窗口拟合直线连续谱加高斯吸收凹口。这个参考只用于定义表观移动,不把氢线的细结构、压力移动和速度参考系假装消失。
固定结果的表观中心约 ,对应约 的表观 Doppler 值,高斯半高全宽约 。把窗口扩大后,高斯宽度变为约 。同一份资料,模型看了不同范围,测量定义就改变了。
更明显的例子是把宽窗口的连续谱硬设为水平线:表观速度改到约 。带长翼的 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