Để 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.
Sửa bởi binhlq: 19/04/2024 - 11:02