一种精确判断闰年的算法探究
2023-05-30赵则名
赵则名
张永强 高级教师,湖南省十佳科技教师。科普中国2021年十大科普人物奖获得者,全国校园发明创意大赛、湖南省青少年科技创新大赛、湖南省创新编程与智能设计大赛、湖南省科学调查体验活动评审专家组成员。
亲爱的读者,在阅读本文之前,请打开手机中的日历,调到指定日期1582年10月,你会发现什么?
日历上居然没有10月5日—10月14日,少了10天时间!你一定会很惊讶。
其实,这并不是手机软件出现了错误。这一切都要从闰年说起。
公历年份中,平年有365天,闰年有366天。公历年份是4的倍数的一般是闰年,但公历年份是100的倍数时,必须是400的倍数才是闰年。《C语言程序设计》(第三版)中将这种描述逻辑化,给出的判断闰年的算法为:1.能被4整除,但不能被100整除的年份;2.能被100整除,又能被400整除的年份。这就是我们常说的“4年1闰,100年不闰,400年补1闰”的现行历法闰年规则(简称“400年97闰”)。
纵观历法发展史,闰年规则其实经历了多次演变。
一、闰年规则的演变
现行的公历又叫格里历,于公元1582年10月由罗马教皇格里高利十三世颁布,其因内容简洁、精度较高,且便于记忆逐渐被各国采用,成为国际通用历法。格里历的前身是儒略历,公元前45年就开始在西方推广实施,由于当时的天文观测手段还没有那么发达,儒略历的闰年规则是“4年1闰”(简称“400年100闰”)。随着时间推移,人们逐渐发觉,儒略历会引发“春分飘离”现象——即春分日期不断提前。
16世纪末,天文学家发现儒略历给出的日期与真实日期已有10天的误差,春分甚至提前到3月11日。这引发了教皇格里高利十三世的历法改革,其主要做法是:颁布法令,将公元1582年10月4日(星期四)后的一天直接改为10月15日(星期五);在儒略历的规则下新增一条规定——世纪年(年份为整百数)必须要被400整除才设为闰年,否则设为平年。该规定将儒略历“400年100闰”修正成格里历的“400年97闰”,提高了闰年规则的精度。
由于该法令直接删除了儒略历多闰的10天,导致1582年10月日历上的10天“不翼而飞”。现行公历闰年规则会不会再次发生“春分飘离”的现象呢?这需要从天文学中寻找答案。
二、闰年规则的本质
地球在绕地轴自转的同时围绕太阳公转,所以地球上有了昼夜更替、四季轮换。地球公转一周为一年,天文学上有恒星年和回归年之分。
恒星年是地球公转的真正周期,采用的是钟表时体系,多用于天文学计算。从太阳中心看,恒星年是地球中心从天空中的某一点出发,环绕太阳一周,又回到此点的时间。
回归年是历法年,又称“太阳年”“季节年”,采用的是地球表面真太阳时体系。从地球中心看,回归年是太阳中心在黄道上连续两次经过春分点的时间间隔,也是太阳连续两次直射北回归线的时间间隔。目前,用于历法计算的回归年周期为365日5时48分46秒。
历法中一年的时间只取回归年周期的整数日部分,那么闰年规则的本质就是:补足回归年周期中多出的5时48分46秒的误差。4年后,回归年中的零头“5时48分46秒”会累计少计23时15分4秒。按儒略历(400年100闰),每4年闰1天(补24时)后又会累计多计44分56秒,400年后,累计多计74时53分20秒。依据格里历(400年97闰),每400年少闰3天(减72时)。这样,还会存在每400年多计2时53分20秒的误差,该误差虽然很小,但经过长时间累积,必然再次导致“春分飘离”现象。
三、闰年问题的数学建模
我通过数学模型进一步精确分析闰年规则,完善判断闰年的算法。
分析渐近分数的历法学含义可得:4年闰1天是对回归年较好的逼近;29年閏7天更逼近些;33年闰8天再精密些;128年闰31天更加精密。400年中有3个128年,故31×3+ =97天,便是现行的闰年规则;……故知,每43 200年中闰10 463天能精确吻合回归年周期。
由上可知,判断闰年的算法可用回归年分数部分表达,公式3为带误差的回归年分数表达式:
公式4的含义为:每4年1闰,其中逢100年不闰,每400年补1闰;其中逢3200年不闰,每86 400年补1闰。每86 400年为一个完整循环,完全补齐回归年分数部分带来的误差。
由此可得,精确判断闰年算法为:1.能被4整除,但不能被100整除的年份;2.能被100整除,又能被400整除,但不能被3200整除的年份;3.能被3200整除,又能被86 400整除的年份。
四、闰年判断算法的改进
根据公式4推导出的判断条件,绘制精确判断闰年算法流程图。
五、总结
本文的数学模型是基于回归年周期365日5时48分46秒推导演算的,这种精确判断闰年的新算法是对现行算法的优化补充。从理论上,对揭示闰年本质和修正闰年误差有着积极作用。
实际上,回归年周期并非一成不变。根据天文观测,20世纪70年代以来,地球自转的时间平均在18个月左右会增加约1秒。这会导致在遥远的将来,可能不再需要设置闰年,我们的历法会迎来新的变化。总之,当3200年来临时,到底该不该闰的问题,还是留给后人决定吧。
专家点评
这篇文章讲解了历法的发展和演变,介绍了公历、儒略历和格里历的闰年规则以及其历史背景和误差问题,同时提到了天文学中恒星年和回归年的概念。文章使用了多种资料和描述方式,简单易懂,能吸引读者的阅读兴趣。
文章的优点在于深入浅出地解释了历法发展的历史和规则,特别是详细解释了闰年规则,介绍了格里历的修正及其历史背景,读者能通过文章了解历法的演变和发展历程。接着,作者提供了数学建模分析思路与闰年判断算法的改进。
总的来说,这篇文章对历法的介绍很有价值,读者可以更全面地认识和理解历法,了解历史和天文学。
建议更加详细地阐述一些概念和原理,如恒星年、回归年等,适当增加对相关科学原理的解释,增强文章的科普性。