计算原理 - Computation
总则
本站所有天文计算都在本地完成(浏览器内 JavaScript),不依赖外部 API。日常显示用低精度解析算法(保证离线可用),日月食预报用 JPL DE441 星历精算(见星历说明)。
节气时刻
二十四节气以太阳视黄经为准:每 15° 一个节气。用 Meeus《天文算法》第 25 章的太阳位置算法求视黄经,再对时间二分逼近到目标黄经,精度约 ±1 分钟,已用 USNO 数据校验。
太阳、月球实时位置
- 太阳:Meeus 低精度算法(约 0.01°),已用 USNO 日出/日落时刻校验(±1 分钟)。
- 月球:Meeus 低精度月球算法(约 0.1°),含主要周期项。
- 地平坐标:由赤经/赤纬经格林尼治平恒星时(GMST)转时角,再转高度角/方位角。
日食、月食预报
以 NASA 食典日期为种子,用 DE441 星历精化朔/望时刻,再用抛物线内插与二分法求各接触时刻。口径对齐 NASA《五千年日月食典》:
- 日食全/环食食分 = 食甚点站心月、日视直径比;月球半径取 k2=0.272281(本影/伪本影)、k1=0.2724880(偏食);太阳半径 696000 km。
- |γ| < 0.997 判为中央食(含地球扁率修正)。
- 月食本影/半影半径用 Danjon 法(Espenak & Meeus 2009):R = 1.01×πm ∓ Ss + πs。
已逐项对照 NASA 食表验证(如 2028-01-12 月偏食食分 0.067 vs NASA 0.066)。
恒星、行星
- 恒星:Yale Bright Star Catalog 5(2847 颗,V<5.5),位置按 J2000 平赤经赤纬直接使用(未做岁差修正,日常显示可接受)。
- 行星:Paul Schlyter 的低精度行星算法(水星至土星,约 0.1°)。
- 月球纹理:NASA LRO 实拍拼接;地形起伏用 LOLA 高程数据(SVS 4720)。
时间系统与 ΔT
页面显示用本地时区;天文计算内部统一用 UTC。星历(如 DE441)则使用力学时(TT/TDB),两者之差即 ΔT = TT − UT1,源于地球自转的不均匀性(潮汐摩擦使自转持续变慢)。2026 年 ΔT 约 69 秒,且每年增加约 0.5–1 秒。
本站 ΔT 取自 Espenak/Meeus 多项式(Meeus《天文算法》第 10 章,NASA 日食网站公布的经验拟合公式,按年份分段)。注意该多项式在 2020 年代比 IERS 实测值高约 6 秒:日常显示(月相光照方向等)不受影响——月球 6 秒仅移动约 3 角秒;但日月食预报 bake 数据时改用 IERS 实测值硬编码,不留这 6 秒系统偏差。日常低精度页面则完全不用 ΔT,直接以 UTC 计算(算法自身 ~20 角秒误差已远大于 ΔT 的影响)。
计算示例
例 1:ΔT 多项式。求 2026-10-05 的 ΔT。年份小数 y ≈ 2026.76,属 2005–2050 段:ΔT = 62.92 + 0.32217×t + 0.005589×t²(t = y − 2000 = 26.76),得 ΔT ≈ 75.5 秒。IERS 实测约 69 秒,多项式偏高约 6 秒。
例 2:日食的 UTC→TT。2027-08-02 日全食食甚 10:06:33 UTC(bake 值)。当年 ΔT ≈ 76.1 秒,故 TT = 10:06:33 + 76.1s = 10:07:49 TT;DE441 星历即以此刻度位置查日月坐标,再反推回 UTC 给出预报时刻。
例 3:儒略日。天文计算多以儒略日(JD)为时间变量。2026-10-05 00:00 UTC:JD = 2461318.5(校验:2000-01-01 12:00 UTC = 2451545.0,即 J2000.0)。DE441 接口返回的 jd_tt 即力学时儒略日。