pyGregorian2LunarCalendar
前言:
由于三體運(yùn)動(dòng)(主要地球脖隶、太陽、月球)無法準(zhǔn)確預(yù)測暇检,目前二十四節(jié)氣依然還是靠天文臺(tái)觀測产阱,Yovey使用傳說中[Y*D+C]-L方法實(shí)際有很多天數(shù)不準(zhǔn),def getSolarTerms(_date)12個(gè)if嵌套判斷讓代碼變得十分冗余块仆,由簡書網(wǎng)友“大咖_247c”首先發(fā)現(xiàn)計(jì)算不準(zhǔn)問題……
【方案過程】
1构蹬、在校驗(yàn)過數(shù)據(jù)與公式差異后,第一方案是采用15%黃經(jīng)夾角計(jì)算悔据,計(jì)算后差異依然存在庄敛,地球橢圓形軌道一年內(nèi)公轉(zhuǎn)速度差異超過7%;
2科汗、在發(fā)現(xiàn)橢圓軌道問題后藻烤,嘗試使用平均值、開普勒第二定律計(jì)算行星軌道头滔,計(jì)算值已經(jīng)十分貼近了怖亭,但依然和香港天文臺(tái)數(shù)據(jù)有差異,恍然大悟拙毫,地球依许、月亮、太陽三個(gè)天體呈現(xiàn)無法完美預(yù)測的三體運(yùn)動(dòng)缀蹄,甚至還包括木星引力影響(比如傳說中九星連珠峭跳,雖然引力抵消微弱),而且太陽本身也在運(yùn)動(dòng)缺前,地球和太陽的質(zhì)量也不是永恒不變的蛀醉,這就導(dǎo)致地球的恒星年相對(duì)穩(wěn)定,但回歸年浮動(dòng)振蕩衅码;
3拯刁、當(dāng)試過所有技術(shù)物理原理還無法調(diào)節(jié)誤差后,最終使用了Chen Jian的核心設(shè)計(jì)理念逝段,添加了十六進(jìn)制加存二十四節(jié)氣垛玻。(還是要靠香港天文臺(tái))
coding=UTF-8
1901~2100年農(nóng)歷數(shù)據(jù)表
Author: cuba3
base code by Yovey , http://www.reibang.com/p/8dc0d7ba2c2a
powered by Late Lee, http://www.latelee.org/python/python-yangli-to-nongli.html#comment-78
other author:Chen Jian, http://www.cnblogs.com/chjbbs/p/5704326.html
數(shù)據(jù)來源: http://data.weather.gov.hk/gts/time/conversion1_text_c.htm
跟進(jìn)Chen Jian的設(shè)計(jì)思路,增加了一層向量壓縮奶躯。
因?yàn)?4節(jié)氣每個(gè)月新歷月固定有兩個(gè)帚桩,所以list保持順序,月份就不用存了嘹黔,一定是1账嚎、1、2、2郭蕉、3疼邀、3……
只記錄日期的話,日期數(shù)據(jù)過大召锈,所以對(duì)200年內(nèi)4800個(gè)數(shù)據(jù)進(jìn)行分組比對(duì)旁振,求出最小公約數(shù),得出最小公約數(shù)年向量[4, 19, 3, 18, 4, 19, 4, 19, 4, 20, 4, 20, 6, 22, 6, 22, 6, 22, 7, 22, 6, 21, 6, 21]烟勋,將爬取數(shù)據(jù)減去這個(gè)最小公約數(shù)向量规求,就得到了一個(gè)元素最大值不大于3的矩陣。
所有數(shù)字不大于3卵惦,兩個(gè)二進(jìn)制就可滿足存儲(chǔ)一個(gè)日期,一個(gè)十六進(jìn)制就能存儲(chǔ)一個(gè)月瓦戚,利用Python3 位移算法 << 2 將原本龐大的txt文本壓縮成長度200的12位16進(jìn)制list沮尿。
# 1901-2100年二十節(jié)氣最小公約數(shù)序列 向量壓縮法
encryptionVectorList=[4, 19, 3, 18, 4, 19, 4, 19, 4, 20, 4, 20, 6, 22, 6, 22, 6, 22, 7, 22, 6, 21, 6, 21]
# 1901-2100年二十節(jié)氣數(shù)據(jù) 每個(gè)元素的存儲(chǔ)格式如下:
# 1-24
# 節(jié)氣所在天(減去節(jié)氣最小公約數(shù))
# 1901-2100年香港天文臺(tái)公布二十四節(jié)氣按年存儲(chǔ)16進(jìn)制,1個(gè)16進(jìn)制為4個(gè)2進(jìn)制
solarTermsData=[
0x6aaaa6aa9a5a, 0xaaaaaabaaa6a, 0xaaabbabbafaa, 0x5aa665a65aab, 0x6aaaa6aa9a5a, # 1901 ~ 1905
0xaaaaaaaaaa6a, 0xaaabbabbafaa, 0x5aa665a65aab, 0x6aaaa6aa9a5a, 0xaaaaaaaaaa6a,
0xaaabbabbafaa, 0x5aa665a65aab, 0x6aaaa6aa9a56, 0xaaaaaaaa9a5a, 0xaaabaabaaeaa,
0x569665a65aaa, 0x5aa6a6a69a56, 0x6aaaaaaa9a5a, 0xaaabaabaaeaa, 0x569665a65aaa,
0x5aa6a6a65a56, 0x6aaaaaaa9a5a, 0xaaabaabaaa6a, 0x569665a65aaa, 0x5aa6a6a65a56,
0x6aaaa6aa9a5a, 0xaaaaaabaaa6a, 0x555665665aaa, 0x5aa665a65a56, 0x6aaaa6aa9a5a,
0xaaaaaabaaa6a, 0x555665665aaa, 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0xaaaaaaaaaa6a,
0x555665665aaa, 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0xaaaaaaaaaa6a, 0x555665665aaa,
0x5aa665a65a56, 0x6aaaa6aa9a5a, 0xaaaaaaaaaa6a, 0x555665655aaa, 0x569665a65a56,
0x6aa6a6aa9a56, 0xaaaaaaaa9a5a, 0x5556556559aa, 0x569665a65a55, 0x6aa6a6a65a56,
0xaaaaaaaa9a5a, 0x5556556559aa, 0x569665a65a55, 0x5aa6a6a65a56, 0x6aaaa6aa9a5a,
0x5556556555aa, 0x569665a65a55, 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0x55555565556a,
0x555665665a55, 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0x55555565556a, 0x555665665a55,
0x5aa665a65a56, 0x6aaaa6aa9a5a, 0x55555555556a, 0x555665665a55, 0x5aa665a65a56,
0x6aaaa6aa9a5a, 0x55555555556a, 0x555665655a55, 0x5aa665a65a56, 0x6aa6a6aa9a5a,
0x55555555456a, 0x555655655a55, 0x5a9665a65a56, 0x6aa6a6a69a5a, 0x55555555456a,
0x555655655a55, 0x569665a65a56, 0x6aa6a6a65a56, 0x55555155455a, 0x555655655955,
0x569665a65a55, 0x5aa6a5a65a56, 0x15555155455a, 0x555555655555, 0x569665665a55,
0x5aa665a65a56, 0x15555155455a, 0x555555655515, 0x555665665a55, 0x5aa665a65a56,
0x15555155455a, 0x555555555515, 0x555665665a55, 0x5aa665a65a56, 0x15555155455a,
0x555555555515, 0x555665665a55, 0x5aa665a65a56, 0x15555155455a, 0x555555555515,
0x555655655a55, 0x5aa665a65a56, 0x15515155455a, 0x555555554515, 0x555655655a55,
0x5a9665a65a56, 0x15515151455a, 0x555551554515, 0x555655655a55, 0x569665a65a56,
0x155151510556, 0x555551554505, 0x555655655955, 0x569665665a55, 0x155110510556,
0x155551554505, 0x555555655555, 0x569665665a55, 0x55110510556, 0x155551554505,
0x555555555515, 0x555665665a55, 0x55110510556, 0x155551554505, 0x555555555515,
0x555665665a55, 0x55110510556, 0x155551554505, 0x555555555515, 0x555655655a55,
0x55110510556, 0x155551554505, 0x555555555515, 0x555655655a55, 0x55110510556,
0x155151514505, 0x555555554515, 0x555655655a55, 0x54110510556, 0x155151510505,
0x555551554515, 0x555655655a55, 0x14110110556, 0x155110510501, 0x555551554505,
0x555555655555, 0x14110110555, 0x155110510501, 0x555551554505, 0x555555555555,
0x14110110555, 0x55110510501, 0x155551554505, 0x555555555555, 0x110110555,
0x55110510501, 0x155551554505, 0x555555555515, 0x110110555, 0x55110510501,
0x155551554505, 0x555555555515, 0x100100555, 0x55110510501, 0x155151514505,
0x555555555515, 0x100100555, 0x54110510501, 0x155151514505, 0x555551554515,
0x100100555, 0x54110510501, 0x155150510505, 0x555551554515, 0x100100555,
0x14110110501, 0x155110510505, 0x555551554505, 0x100055, 0x14110110500,
0x155110510501, 0x555551554505, 0x55, 0x14110110500, 0x55110510501,
0x155551554505, 0x55, 0x110110500, 0x55110510501, 0x155551554505,
0x15, 0x100110500, 0x55110510501, 0x155551554505,0x555555555515]