3. 分潮角速度与Doodson数的手工核算
为什么手工核算角速度与Doodson数
调和分析中每个分潮的频率由天文变量的线性组合唯一确定。Doodson数就是这套组合的编码:以平太阴时角 τ 为基准,加上太阳平黄经 s、太阴平黄经 h、月球近地点平黄经 p、太阳近地点平黄经 p₁ 以及月球升交点平黄经 N′ 的整数倍。角速度 σ 则是这些天文变量变化率的加权和。手工核算的意义在于:一旦分潮字典建立,后续设计矩阵、交点因子、天文幅角都依赖它,任何一处 Doodson 数写错都会导致整条分析链偏移。
天文变量变化率与角速度公式
采用常用天文常数(单位:度/平太阳时,即 °/h),各变量变化率如下:
| 变量 | 含义 | 变化率 (°/h) |
|---|---|---|
| τ | 平太阴时角 | 14.4920521 |
| s | 太阳平黄经 | 0.5490165 |
| h | 太阴平黄经 | 0.0410686 |
| p | 月球近地点平黄经 | 0.0046418 |
| p₁ | 太阳近地点平黄经 | 0.0000020 |
| N′ | 月球升交点平黄经(取负号约定) | -0.0027379 |
分潮角速度按 σ = 14.4920521·Dτ + 0.5490165·Ds + 0.0410686·Dh + 0.0046418·Dp + 0.0000020·Dp₁ + (-0.0027379)·DN′ 计算,其中 D 为对应 Doodson 数。注意 Doodson 数通常以 τ 的系数为第一位,其余按 s、h、p、p₁、N′ 顺序排列,且常以“+5”偏移编码书写(如 M2 写作 255.555),核算时需还原为真实整数。
逐项核算示例
以四个主分潮为例,先还原 Doodson 数,再代入公式:
| 分潮 | Doodson编码 | 还原后 (τ,s,h,p,p₁,N′) | 角速度计算 (°/h) | 结果 (°/h) |
|---|---|---|---|---|
| M2 | 255.555 | (2,0,0,0,0,0) | 2×14.4920521 | 28.9841042 |
| S2 | 273.555 | (2,2,-2,0,0,0) | 2×14.4920521+2×0.5490165-2×0.0410686 | 30.0000000 |
| K1 | 165.555 | (1,1,0,0,0,0) | 14.4920521+0.5490165 | 15.0410686 |
| O1 | 145.555 | (1,-1,0,0,0,0) | 14.4920521-0.5490165 | 13.9430356 |
核对要点:S2 的角速度应恰为 30.0000000 °/h(太阳日周期 12 h),这是检验 Doodson 数与常数是否自洽的“锚点”。若算得 29.99 或 30.01,说明 s 或 h 的系数写错。K1 与 O1 之和应等于 2×14.4920521 = 28.9841042,也可作为交叉校验。
分潮字典的建立与复用
把核算结果整理成字典,字段至少包含:分潮名、Doodson 六元组、角速度、周期(360/σ)、来源备注。字典一旦建立,后续设计矩阵的列顺序、交点因子计算、天文幅角初值都直接引用,避免重复推导。下面给出一个可直接使用的字典片段(Python 字典,键为分潮名):
tidal_constituents = {
"M2": {"doodson": (2, 0, 0, 0, 0, 0), "speed": 28.9841042},
"S2": {"doodson": (2, 2, -2, 0, 0, 0), "speed": 30.0000000},
"K1": {"doodson": (1, 1, 0, 0, 0, 0), "speed": 15.0410686},
"O1": {"doodson": (1, -1, 0, 0, 0, 0), "speed": 13.9430356},
}
# 校验:S2 应等于 30.0,K1+O1 应等于 2*14.4920521
assert abs(tidal_constituents["S2"]["speed"] - 30.0) < 1e-7
assert abs(tidal_constituents["K1"]["speed"] + tidal_constituents["O1"]["speed"]
- 2 * 14.4920521) < 1e-7
这段校验代码把“锚点”固化为断言,字典扩充新分潮时自动跑一遍,能第一时间发现录入错误。
常见错误与排查
- 偏移量未还原:直接把 255.555 当作系数代入,结果会大出数倍。务必逐位减 5。
- N′ 符号约定不一致:有的文献把 N′ 定义为升交点黄经并取正号,此时变化率应为 +0.0027379。字典中必须注明约定,否则 K1、O1 等含 N′ 的分潮会偏差。
- s 与 h 混淆:S2 的 Doodson 数中 s 系数为 +2、h 系数为 -2,若写反,S2 角速度会偏离 30.0000000,锚点校验立即暴露。
- 舍入累积:多个分潮连续计算时,中间结果不要提前舍入,最后统一保留 6 位。
可复用的核算清单
| 步骤 | 动作 | 通过条件 |
|---|---|---|
| 1 | 列出分潮名与 Doodson 编码 | 编码位数完整,含分隔符 |
| 2 | 逐位减 5 还原整数六元组 | 六元组与文献一致 |
| 3 | 代入变化率加权求和 | 保留 7 位小数 |
| 4 | 锚点校验(S2=30,K1+O1=2τ) | 误差 < 1e-7 |
| 5 | 写入字典并加断言 | 断言全部通过 |
完成以上五步,分潮字典即可作为后续设计矩阵、交点因子与天文幅角计算的唯一数据源,避免同一参数在多处重复推导而产生不一致。