之前曾经得到过一条计算夏至精确时间的公式,现在检验一下(之前推导是根据了2009年的数据)

公元Y年的夏至日期为该年的6月
$$21.9938+0.2422Y-\lfloor Y/4 \rfloor-\lfloor Y/400 \rfloor+\lfloor Y/100 \rfloor$$
其中$\lfloor x \rfloor$表示整数部分。

将Y=2011代入上式,得到22.058,即6月22日1时23分,通过查阅《寿星万年历》得到的数据6月22日1时16分29秒。

这表明,误差并不是十分大,看来公式具有实用性,于是尝试下提高数据的精确度。把0.2422改成0.24219879,将21.9938改成21.991346736。即

$$21.991346736+0.24219879Y-\lfloor Y/4 \rfloor-\lfloor Y/400 \rfloor+\lfloor Y/100 \rfloor$$

现在已经拟合了2011年的数据,检验一个比较远的年份(2020)。代入后得到21.232902536,即21日5时35分22秒;同样查《寿星万年历》得到21日5时43分33秒。由此可以看出,提高初始数据精度能够提高计算的精度(原来一两年就误差几分钟,现在10年才有同样的误差),但是误差还是有的,因为这条公式考虑的是无摄动模型。(注:修正后的数据的观测地点是BoJone的家乡,即广东云浮,不同于其他地方)

实际上,这里采用的算法并非真正意义上的天体力学计算,仅仅是利用取整函数把现行的公历历法表达出来了而已。如果仅仅需要精确到日,那么未来几百年内用这条公式都应该没有问题。

留给大家一个问题:实际上还可以利用插值法继续提高精度,例如可以假设Y年的误差$\Delta T_Y \propto (Y-2011)^a$,a是一个常数,当然a<<1(a肯定随时间变化,但是变化应该比较慢,否则每年的长度都有很大变化了),用其他年份的数据进行对比修正。读者可以动手试一下,可以看下谁拟合的公式最精确?

转载到请包括本文地址:https://kexue.fm/archives/906

更详细的转载事宜请参考:《科学空间FAQ》

如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。

如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!

如果您需要引用本文,请参考:

苏剑林. (Aug. 29, 2010). 《计算夏至的精确时刻2——提高精确度 》[Blog post]. Retrieved from https://kexue.fm/archives/906

@online{kexuefm-906,
        title={计算夏至的精确时刻2——提高精确度},
        author={苏剑林},
        year={2010},
        month={Aug},
        url={\url{https://kexue.fm/archives/906}},
}