Lịch Can chi biện luận

Liên quan đếm bộ đếm ngày và năm của cỗ máy lịch pháp Antikythera. Cổ thư của chúng ta chỉ ra rằng Thiên can Địa chi của tháng tính theo của Thiên can Địa chi năm, giờ tính theo ngày với một quy luật xác định. Cho nên cỗ máy Antikythera chỉ có hai bộ đếm ngày và năm trên cơ cấu vành xoay.
Để tính toán chu kỳ lặp lại của lịch can chi ta có một đoạn chương trình ngắn theo lịch can chi đã được giải mã từ cơ cấu Antikythera:
int[] BatTuKhoiNguyen = new int[] { 4, 0, 0, 2, 0, 2, 0, 0 }; // Mậu Tí - Giáp Dần - Giáp Dần - Giáp Tí
private int[] LayBatTu(int agio, int aphut, int jd, int muigiolich)
{
int[] tPLs = cTool.JDdenPhatLich(jd, muigiolich);
int[] tbattu = new int[8];
int tnambt = (tPLs[2] - 1) % 60;
tbattu[0] = (tnambt + BatTuKhoiNguyen[0]) % 10;
tbattu[1] = (tnambt + BatTuKhoiNguyen[1]) % 12;
int tthangbt = tPLs[1] - 1;
tbattu[2] = (tnambt * 12 + tthangbt + BatTuKhoiNguyen[2]) % 10;
tbattu[3] = (tthangbt + BatTuKhoiNguyen[3]) % 12;
int tngaybt = (jd - 1) % 60;
tbattu[4] = (tngaybt + BatTuKhoiNguyen[4]) % 10;
tbattu[5] = (tngaybt + BatTuKhoiNguyen[5]) % 12;
int tyc = (agio * 60 + 60 + aphut) / 120;
tbattu[7] = tyc % 12;
tyc = tyc / 12;
tbattu[6] = ((tbattu[4] % 5) * 2 + tbattu[7] + tyc * 12) % 10;
return tbattu;
}
//--------------------------------------
string kqua = "";
for (int buoctest = 1; buoctest <= 20; buoctest++) { Random r = new Random(); int jdstart = r.Next(0, 12307) + buoctest * 60 * 60 * 60; int jdend = -1; int[] battubd = LayBatTu(0, 30, jdstart, 7); for (int jdi = jdstart + 1; jdi < 60 * 60 * 60 * 60 * 60; jdi++) { int[] tbattu = LayBatTu(0, 30, jdi, 7); if ((tbattu[0] == battubd[0]) && (tbattu[1] == battubd[1]) && (tbattu[2] == battubd[2]) && (tbattu[3] == battubd[3]) && (tbattu[4] == battubd[4]) && (tbattu[5] == battubd[5]) && (tbattu[6] == battubd[6]) && (tbattu[7] == battubd[7])) { jdend = jdi; break; } } int dt = jdend - jdstart; kqua += string.Format("Lần {0} jd từ {1} kết quả lặp lại sau {2} ngày = {3} năm.\r\n", buoctest, jdstart, dt, (int) dt / 365.2530120482); }

Kêt quả của chương trình là:
Lần 1 jd từ 228091 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 2 jd từ 441904 kết quả lặp lại sau 65760 ngày = 180.039583058447 năm.
Lần 3 jd từ 659367 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 4 jd từ 871851 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 5 jd từ 1092226 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 6 jd từ 1303381 kết quả lặp lại sau 65760 ngày = 180.039583058447 năm.
Lần 7 jd từ 1517838 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 8 jd từ 1739971 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 9 jd từ 1949797 kết quả lặp lại sau 65760 ngày = 180.039583058447 năm.
Lần 10 jd từ 2169784 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 11 jd từ 2386173 kết quả lặp lại sau 65760 ngày = 180.039583058447 năm.
Lần 12 jd từ 2598697 kết quả lặp lại sau 65760 ngày = 180.039583058447 năm.
Lần 13 jd từ 2809597 kết quả lặp lại sau 65760 ngày = 180.039583058447 năm.
Lần 14 jd từ 3030657 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 15 jd từ 3242497 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 16 jd từ 3460214 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Lần 17 jd từ 3678872 kết quả lặp lại sau 65760 ngày = 180.039583058447 năm.
Lần 18 jd từ 3891315 kết quả lặp lại sau 43860 ngày = 120.081145269822 năm.
Lần 19 jd từ 4112334 kết quả lặp lại sau 65760 ngày = 180.039583058447 năm.
Lần 20 jd từ 4321946 kết quả lặp lại sau 21900 ngày = 59.9584377886253 năm.
Ta có chu kỳ 21900 ngày xấp xỉ 60 năm. Một năm can chi có 365.2530120482 ngày nên ở một số đoạn là 120, 180 năm.

Leave a Comment