利用干支年反推公元年份的计算公式推导 您所在的位置:网站首页 月干支的计算方法公式是什么 利用干支年反推公元年份的计算公式推导

利用干支年反推公元年份的计算公式推导

2024-03-11 12:05| 来源: 网络整理| 查看: 265

干支纪年,是指中国纪年历法,自上古以来就一直使用的纪年方法。干支是天干和地支的总称。把干支顺序相配正好六十为一周,周而复始,循环记录,这就是俗称的“干支表”。干支纪年与公元纪年可以相互转换。公元年转化为干支年比较好算,干支年转化为公元年目前的流行方法是查表法,先根据干支,查出在干支表中所出的年次,再根据干支年和公元年的关系推算公元年?那么有没有不用查表,就能根据干支利用公式快速计算出干支所处年次的方法呢?

一、公元年转化为干支年

根据公元年数推算这一年的干支,算法比较简单。计算公式:

T=(AD-3) MOD 10                 式(1)

B=(AD-3) MOD 12                 式(2)

式中:T,是Trunk的首字母,代表天干序号;B是Branch的首字母,代表地支序号。AD是Anno Domini的缩写,代表公元;MOD是求余运算符。

比如今年是2022年,根据上述公式,可以推出T=9,B=3。根据表1,天干序号为9的是“壬”。根据表2,地支序号为3的是“寅”,所以2022年是壬寅年。注意:如果T=0,相当于余10,对应“癸”,如果B=0,相当于余12,对应“亥”。

表1 天干序号表 天干序号甲1乙2丙3丁4戊5己6庚7辛8壬9癸10 表2 地支序号表 地支序号子1丑2寅3卯4辰5巳6午7未8申9酉10戌11亥12

式(1)、(2)中的减3是怎么来的呢?先看表3,一个一个周期60年的干支年次表,从表中可以看出,甲子是一个周期的第1年,癸亥年第60年,而辛酉年是第58年。而公元1年好是我国的辛酉年,是干支年的第58年。所以,往后推3年就到了下一个干支周期的干支1年甲子年,而这一年是公元4年,所以公元4年-干支1年=3年。这就是要减3的原因。

表3  一个周期的干支年次表 干支年次(TB)天干(T)地支(B)1甲子2乙丑3丙寅4丁卯5戊辰6己巳7庚午8辛未9壬申10癸酉11甲戌12乙亥13丙子14丁丑15戊寅16己卯17庚辰18辛巳19壬午20癸未21甲申22乙酉23丙戌24丁亥25戊子26己丑27庚寅28辛卯29壬辰30癸巳31甲午32乙未33丙申34丁酉35戊戌36己亥37庚子38辛丑39壬寅40癸卯41甲辰42乙巳43丙午44丁未45戊申46己酉47庚戌48辛亥49壬子50癸丑51甲寅52乙卯53丙辰54丁巳55戊午56己未57庚申58辛酉59壬戌60癸亥 二、干支年转换为公元年 1、查表法

那么如果已经知道干支年,那么能不能反推出公元年呢。比如,想知道“癸丑”年都对应的是公元多少年?网上有好多方法,但大部分都是查表法,从表3查出一个周期中查出“癸丑”年是第50年,然后再利用公式:50+3+n*60,推算出“癸丑”年所有的公元年份,如表4所示。

表4 癸丑年对应的公元年 n公元年05321733233429353536413747385339593106531171312773138331489315953161013171073181133191193201253211313221373231433241493251553261613271673281733291793301853311913321973332033 2、公式法

那么有没有更快速的一种方法,不用查表,就可以根据干支快速地计算出一个周期中,这对干支对应的年次呢?下边进行逐步探讨。

(1)数字化处理

如果把表3中的天干和地支都由表1、表2中的序号来代替(天干的10用0代替,地支的12用0代替),那么就得到表5。发现这张表得每一行就是干支年次分别对10和12求余的结果。这样就把干支纪年表转化成了1至60对10、12求余的余数表,表中,TB代表干支年次,R10代表干支年次TB除以10的余数,R12代表TB除以12的余数。

表5 干支年次除以10、12余数表 干支年次(TB)R10R121112223334445556667778889991001011111122013311442155316641775188619972008211922210233112440255126622773288429953006311732283339344103551136603771388239934004411542264337444845594661047711488049915002511352245335544655575668577958810599116000 (2)思路来源

在文章用列表法分析1500年前南北朝时期的“奥数”题(以下简称《列表法》)中,给出了用列表法推算《孙子算经》“物不知数”3、5、7三个数乘率的方法。这样对于每一组余数,就可以根据公式计算出相对应的那个被除数。

那么同理,能不能也找出10、12的乘率K10、K12,确定一个公式,由一组干支的序号也可以快速推算出干支年次,然后计算出相应的公元年呢?

(3)K12的确定

我们还用列表法尝试一下,从表5中,搜索当R10为0的情况,如表6所示。

表6 R10=0时R12对应干支年次表 干支年次(TB)R10R121001020083006400450026000

从表中可以看到,,但R10=0时R12只有6个,从10依次递减2,而R12本身应该有12个,为什么会少了一半呢?看表5,对于任意一个天干年次TB,其对应的R10和R12要么都是奇数,要么都是偶数,没有奇数和偶数的组合,当R10固定时,R12变化的幅度最小是2。

也就是说,要想让R12实现变化步幅是1,那么R10也需要变换1步,这样才能实现奇数对奇数、偶数对偶数的搭配。

实现这个目的的最简单的方法就是R10增加1,同时R12也增加1,但这种变化在R10、R12都小于10时R10-R12=0,当超过9之后,R10-R12=2,当超过19以后,R10-R12=4,差值发生了跳变,不是连续的,所以这个规律不适用。

那么实现R10、R12奇数对奇数、偶数对偶数的方法还有一种,就是一个增加1步,一个减少1步,相对运动是2步,那么也可以实现奇数对奇数、偶数对偶数的目的。

那么哪个余数增加,哪个余数减少呢?从表6中可以看出,随着干支年次的增加,R12的余数是递减的,也就是逆增长,所以确定这个余数是减少的。那么根据 《列表法》给出的爬爬虫定律1,先找到除数12的余数0在第6行,反向移动,找到它上边的2在第5行,第6行干支年次是60,第5行干支年次是50,又因为步伐是2,所以R12的乘率K12=(50-60)/2=-5。

(3)K10的确定

因为确定除R12是减1变化,那么R10就是加1变化。再从表5中,搜索当除数R12=0的情况,如表7所示。从表中可以看到,搜出5行,从第1行到第4行,R10从2依次递增到8,而0在最后一行,说明0之后的那个2在下一个周期的第一行,也就是对应的干支年次为12+60=72。所以R10的乘率K10=(72-60)÷2=6。

表7 R12=0时R10对应干支年次表 干支年次(TB)R10R1212202440366048806000

(4)干支年次计算公式

根据以上计算出的乘率,我们能确定根据干支来计算干支年次的公式为:

TB=6*R10-5*R12±n*60     式(3)

注意:公式中,R10代表干支年次除10的余数,R12代表干支年次除12的余数,n代表计算的结果加上或减去n倍60,直到计算结果在[1,60]为止。由于R12是减1变化,所以可能出现计算结果小于0的情况。

(5)验证公式

我们把所有的1到60除10、除12对应的所有余数,代入公式(3)来计算一下结果。

验证结果如表8所示,当n=0时的计算结果都在(-60,60)之间,所以只需要把小于1的再加一次60就能把全部结果换算至[1,60]之间,见AD(n=1)列,所有计算结果与干支年次完全一致,这就验证了公式的正确性。

表8 验证结果表 干支年次R10R12TB(n=0)TB(n=1)11111222223333344444555556666677777888889999910010-501011111-491112201212133113131442141415531515166416161775171718861818199719192008-40202119-392122210-382223311-37232440242425512525266226262773272728842828299529293006-30303117-29313228-28323339-273334410-263435511-2535366036363771373738823838399339394004-20404115-19414226-18424337-17434448-16444559-154546610-144647711-134748804848499149495002-10505113-9515224-8525335-7535446-6545557-5555668-4565779-35758810-25859911-1596000060

(6)干支年变换公元年

那么有了一个周期内的计算公式,就可以根据干支计算出所有的公元年份了,计算公式为:

AD=TB+3+m*60                式(4) 

式中,AD代表公元年,TB代表计算出的一周期内的干支年,R10代表天干所对应序号,R12代表地支所对应序号,注意R10可以等于0,也可以等于10,R12可以等于0,也可以等于12,不影响计算结果。

举例验证:以“壬寅”年为例,反推。查表1可知,R10=9;查表2可知,R12=3;代入公式(3),得:

TB=6*9-5*3=54-15=39年

那么再代入公式(4)依次加60,可计算出至2022年所有的壬寅年,如表9所示。

表9 壬寅年对应的公元年 n公元年04221623222428253426402746285229582106421170212762138221488215942161002171062181122191182201242211302221362231422241482251542261602271662281722291782301842311902321962332022

 把表9与上图查到的资料对比,验证了结果完全正确,说明本文的变换公式

TB=6*R10-5*R12±n*60     式(3)

AD=TB+3+m*60                式(4) 

正确,变换方法可行。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有