复活节的计算
复活节的计算(computus,拉丁文“计算”之意),其规则是复活节的日期是在3月21日当日或之后的满月日后的首个星期日。天主教会设计了方法去定一个“天主教的月”,而不像犹太人般观察真正的月亮。
历史
基督教在二世纪开始,出现两个纪念耶稣复活的日期:东方的小亚细亚教会,遵循耶稣的使徒的遗传,于是在犹太人的逾越节,即是犹太历尼散月十四日,纪念耶稣的受难和复活,表明逾越节羔羊预表耶稣(哥林多前书5:7)。至于以罗马教会为代表的西方教会,就在逾越节后的星期日纪念耶稣的复活。从二世纪后期开始,这项分歧引致教会间很大纷争。后来在325年第一次尼西亚会议,决定不按犹太历法,而按照春分月圆,自行计算出复活节日期(但是所谓“春分”是固定于西历3月21日)。此后教会为了定出从西历计算月亮周期的方法,不依赖于天文观察,各地先后提出多种方法,历时数个世纪,才定出各地教会共用的计算表册和方法。
理论
由于犹太历是阴历,基督教会舍弃依从犹太历的传统时,便造出自己的阴历取代。每29或30日合为一个阴历月(如果包含2月29日则有31日),在3月结束的阴历月有30日,在4月结束者有29日,如此长短相间。12个阴历月比阳历年短11日,两者的差距称为闰余(epact),阳历日期加上闰余得出阴历月的日期。闰余每年增加11日,达到30日或以上则减去30,设一个30日的闰月。每19年的默冬周期应刚好等于235个阴历月,闰余应以19年为一周期,但是19年的闰余累积为29日,于是在儒略历中将最后一年7月1日开始的阴历月由本来30日减去1日,又在19年中加入7个各30日的闰月,分别开始于在第2年12月3日,第5年9月2日,第8年3月6日,第10年12月4日,第13年11月2日,第16年8月2日,第19年3月5日。一年在默冬周期中的位置称为黄金数,算式是年份除以19的余数加1。阴历月第14日定为形式上的望日。望日在3月21日或之后的第一个阴历月是复活节月,复活节是此阴历月第14日之后第一个周日。
表列法
格里历
由于1582年格里历改革主要原因,在于当时的复活节计算法已远离真正的春分和满月,在推出新历法时也推行了新的复活节计算法。将全年365日列出,再用递减的罗马数字标记各日,1月1日标记为“*”(0或30),1月2日为“xxix”(29),直到“i”,然后再重复至年末,但每偶数周期只有29日,需将标记为“xxv”的日子也标为“xxiv”。最后每个30日周期中将标记为“xxv”的日子加上标记“25”,每个29日周期中将标为“xxvi”的日子加上标记“25”。然后用“A”至“G”为每日标记,一年第一个周日的字母是这年的主日字母,例如如果1月5日是星期日,这年的主日字母是“E”,但是闰年有两个主日字母,第一个是1至2月,第二个(提前一字母)是3月以后。每个阴历月的朔日是和闰余相同的罗马数字日子。然而,由于默冬周期中,相隔11年的两个年份闰余相差1日,如果这两年闰余分别是24和25,那么这两年的朔日都会一样,显得不太优美,因此黄金数大于11而闰余是25的年份,朔日改在标记为“25”的日子。格里历每400年减去3个闰年,但是为免影响默冬周期,因此这三年将闰余减1以修正(solar equation,equation按古代意思解作修正差异);不过,19个未改正的儒略年比235个朔望月略长,每310年差距累积到一日,故此每2500(格里)年中,须8次将闰余加1以修正(lunar equation),修正在世纪年进行,每两次修正相隔300年,但每8次修正后隔400年再开始,第一次在1800年,下一次在2100年。这两种修正有时互相抵消,如1800年和2100年即是。格里历改革后黄金数方法被闰余方法取代,但可以编制出两者关系的简化表格,有效期由一至三个世纪不等。以下的闰余表对1900年至2199年适用。黄金数的算法为年份除以19的余数再加1,如2014年除以19的余数为0,故此2014黄金数是1。
黄金数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 闰余 29 10 21 2 13 24 5 16 27 8 19 * 11 22 3 14 25 6 17
标记 3月 主日字母 4月 主日字母 * 1 D xxix 2 E 1 G xxviii 3 F 2 A xxvii 4 G 3 B xxvi 5 A 4 C 25 6 B xxv 5 D xxiv 7 C xxiii 8 D 6 E xxii 9 E 7 F xxi 10 F 8 G xx 11 G 9 A xix 12 A 10 B xviii 13 B 11 C xvii 14 C 12 D xvi 15 D 13 E xv 16 E 14 F xiv 17 F 15 G xiii 18 G 16 A xii 19 A 17 B xi 20 B 18 C x 21 C 19 D ix 22 D 20 E viii 23 E 21 F vii 24 F 22 G vi 25 G 23 A v 26 A 24 B iv 27 B 25 C iii 28 C 26 D ii 29 D 27 E i 30 E 28 F * 31 F 29 G xxix 30 A
举例:2019年黄金数是6,闰余是24,则标记为“xxiv”日子是朔日,3月7日和4月5日为朔日,而望日为朔日的13日后,即3月20日和4月18日。3月21日或之后的望日是4月18日。这一日之后(不包括当日)的周日是复活节。2019年的主日字母是“F”,所以4月21日是复活节。
第偶数个阴历月只有29日,有一日需有两个闰余标记,而选择移动“xxv/25”的理由可能是:在闰余为24的年份,如果3月7日开始的阴历月有30日,复活节月便在4月6日开始,望日在4月19日,又假设该日是周日,复活节便在下周日4月26日。但是教会规定复活节不晚于4月25日,所以4月5日便有两个标记“xxv”“xxiv”。因此格里历中复活节最多出现在4月19日,约3.87%,最少出现在3月22日,约0.48%。
儒略历
格里历改革前西方教会使用的方法,也是东方正教会现今使用的方法,采用未改正的默冬周期,每周期开始闰余都是0日,因此复活节望日只可能有19个。因为儒略历不作出像格里历的改正,每过一千年,教会阴历的望日日期会比实际的望日推迟三日多,故此现时约有一半东正教的复活节比西方教会晚了一周。又由于儒略历在1900年至2099年间比格里历落后13日,格里历的复活节望日不时在儒略历3月21日之前,使东正教的复活节比西方教会晚了四至五周。
各地教会从4世纪开始渐渐采用此方法,931年最后一个英格兰修道院也采用。在采用此方法前各地用其他方法定出复活节日期,相差可以达至五周。
下表是自从931年起儒略历的复活节望日日期:
黄金数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 复活节望日 4月5日 3月25日 4月13日 4月2日 3月22日 4月10日 3月30日 4月18日 4月7日 3月27日 4月15日 4月4日 3月24日 4月12日 4月1日 3月21日 4月9日 3月29日 4月17日
例子:1573年的黄金数是16,查表得到复活节望日是3月21日。从星期表得到该日是周六,因此复活节是其后的周日3月22日。
算法
高斯算法
这个方法由以数学家高斯命名。
用Y表示年份,mod运算指整数除法的余数(例如13 mod 5 = 3,详细请参见同余)。
东正教会所用的儒略历取M=15,N=6,西方教会所用的公历的取法参见下表:
年份 M N 1583-1699 22 2 1700-1799 23 3 1800-1899 23 4 1900-2099 24 5 2100-2199 24 6 2200-2299 25 0
- a = Y mod 19
- b = Y mod 4
- c = Y mod 7
- d = (19a + M) mod 30
- e = (2b + 4c + 6d + N) mod 7
若d+e < 10则复活节在3月(d+e+22)日,反则在4月(d+e-9)日,除了两个特殊情况:
- 若公式算出的日期是4月26日,复活节在4月19日;
- 若公式算出的日期是4月25日,同时d=28、e=6和a>10,复活节应在4月18日。
Meeus/Jones/Butcher算法(公历)
Jean Meeus在他的书《天文算法》(Astronomical Algorithms,1991年)记载了这个计算公历中的复活节日期的方法,并指这个方法是来自Spencer Jones的书《一般天文学》(General Astronomy,1922年)和《英国天文学会期刊》(Journal of the Brithish Astronomical Association,1977年),后者指方法是来自Butcher's Ecclesiastical Calendar(1876年)。
这个方法的优点是不用任何表也没有例外的情况。注意这里用的是整数除法,7/2=3非3.5。
Worked Example Year(Y) = 1961 |
Worked Example Year(Y) = 2000 | |
a = Y mod 19 | 1961 mod 19 = 4 | 2000 mod 19 = 5 |
b = Y / 100 | 1961 / 100 = 19 | 2000 / 100 = 20 |
c = Y mod 100 | 1961 mod 100 = 61 | 2000 mod 100 = 0 |
d = b / 4 | 19 / 4 = 4 | 20 / 4 = 5 |
e = b mod 4 | 19 mod 4 = 3 | 20 mod 4 = 0 |
f = (b + 8) / 25 | (19 + 8) / 25 = 1 | (20 + 8) / 25 = 1 |
g = (b - f + 1) / 3 | (19 - 1 + 1) / 3 = 6 | (20 - 1 + 1) / 3 = 6 |
h = (19 * a + b - d - g + 15) mod 30 | (19 * 4 + 19 - 4 - 6 + 15) mod 30 = 10 | (19 * 5 + 20 - 5 - 6 + 15) mod 30 = 29 |
i = c / 4 | 61 / 4 = 15 | 0 / 4 = 0 |
k = c mod 4 | 61 mod 4 = 1 | 0 mod 4 = 0 |
l = (32 + 2 * e + 2 * i - h - k) mod 7 | (32 + 2 * 3 + 2 * 15 - 10 - 1) mod 7 = 1 | (32 + 2 * 0 + 2 * 0 - 29 - 0) mod 7 = 3 |
m = (a + 11 * h + 22 * l) / 451 | (4 + 11 * 10 + 22 * 1) / 451 = 0 | (5 + 11 * 29 + 22 * 3) / 451 = 0 |
month = (h + l - 7 * m + 114) / 31 | (10 + 1 - 7 * 0 + 114) / 31 = 4 (April) | (29 + 3 - 7 * 0 + 114) / 31 = 4 (April) |
day = ((h + l - 7 * m + 114) mod 31) + 1 | (10 + 1 - 7 * 0 + 114) mod 31 + 1 = 2 | (29 + 3 - 7 * 0 + 114) mod 31 + 1 = 23 |
1961年4月2日 | 2000年4月23日 |
Meeus算法(儒略历)
在《天文算法》,使用了以下公式计算儒略历中的复活节日期:(注意这里用的是整数除法,7/2=3非3.5。)
- a = Y mod 4
- b = Y mod 7
- c = Y mod 19
- d = (19*c + 15) mod 30
- e = (2*a + 4*b - d + 34) mod 7
- 月 = (d+e+114) / 31
- 日 = ((d+e+114) mod 31) + 1