国学数典

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7694|回复: 72

[工具] 自制历法计算软件(beta0.3)

  [复制链接]
  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    发表于 2018-11-29 00:14 | 显示全部楼层 |阅读模式
    本帖最后由 xsg 于 2018-12-23 15:14 编辑

    自制可视化历算程序,希望能有助于历法相关的学习和研究。

    程序主体分快捷工具和天文计算及古历推步三部分。快捷工具提供了一些实用功能,比如输入年份能立即获得对应的年号,无须查表。反之,输入年号也可获得对应的公元纪年。(但是目前我只录入了-841至-1年的主要数据)输入年份即可快速获得冬至合朔时间,对于历法研究很有必要。
    程序还提供了一些常用表,如太阳节气经度表,可以以黄经或赤经、古度或今度表示。甲子表提供从1或0开始的两种排表方式,可根据习惯查看。

    天文计算主要涉及恒星行星及日月食。
    目前试用版暂无法精确计算日月食,会在正式版给出。
    可以计算恒星和行星位置,输出不仅以经纬度表示,还可以给出日月五星的星次、入宿度等,可直接用于比照史料。
    (恒星部分目前只录入了宋以前的二十八宿)
    如果电脑速度较慢,可能有些计算需要等待,因为计算数据量大,一般不会卡死。
    本程序也提供古六历的计算,无需手动推步,可以获得入蔀年、大小余等。

    在计算机普及的今天,天文计算不再像以前那样繁琐。希望通过这个软件,帮助学习者理解史料中的天文历法问题。
    譬如,《尧典》所载四仲中星的天象是何时。利用本程序,只需输入年份估值(这个估值误差可以很大,相差数千年),从下拉列表中选择星宿名和节气名,即可获得答案。如“日短星昴,以正仲冬”,选择“昴宿”和“冬至”,点击相应的计算按钮即可。
    再如,岁星纪年的问题。整理《左传》《国语》中的相关记载,利用本程序计算相应年份的木星位置,发现12条记录中只有一条符合实际天象。有助于理解《左传》中的预言是如何形成的,以及上世纪史学界的一些争论。

    利用软件计算,还可以在阅读相关历法书籍时发现排印错误,获得正确答案。软件编写过程中,对照一些书上的数据,发现相关书籍的排印错误还不少。
    如去年出版的《中国的天文历法》第89页的去极度表,出现记载数据和计算数据相同而存在误差的情况,是明显的排印问题。并且今年加印没有进行修订,直接二刷。
    还有如《二毋室古代天文历法论丛》,旧版为80年代出版,也有排表错误。但时隔多年去年再版时虽然重新排印,也未能修正相关错误。

    程序除了日月食部分主体功能已经完成。还有许多数据和优化要处理。由于寒冬将至,下面的任务留待明年。提前给出试用版,希望大家能多反馈bug,或者说明缺少什么功能,现有的功能哪些没必要。争取正式的版本比较好用。在正式版出来之前,仍然会更新beta版,主要是修复bug或增加数据等,不会有大的更新。顺便,取名废求给软件取个名。
    程序目前在win8和win10 64位下运行正常。其他未测试。

    软件部分功能的代码可参见:https://blog.csdn.net/weixin_42763614/
    2018.11.29 beta 0.1 2018.12.5 beta 0.2  更正已知错误,增加岁星纪年。
    2018.12.23 beta 0.3 更正节气地方时表示,纪年数据增加至东晋,增加32位版EXE

    链接:https://pan.baidu.com/s/1y6ZPR3RHIIIy_K5COUssug
    提取码:rm62
    (x86为32位,x64为64位)












    补充内容 (2019-3-4 20:16):
    2019.3.4 beta0.4 更正已知错误,整合部分功能
    链接:https://pan.baidu.com/s/17HHHIia-YqyWEQkaBuTupg
    提取码:x0jk


    补充内容 (2019-3-6 23:33):
    2019.3.6 beta0.5 新增现行农历的转换
    链接:https://pan.baidu.com/s/1S1A5Nmt1sTW_TGdG6zV01w
    提取码:iqu2


    补充内容 (2019-3-10 23:02):
    2019.3.6 beta0.6 修正农历置闰问题
    链接:https://pan.baidu.com/s/1pj-ny8m6IC63gyqdUhHrQQ
    提取码:ff51

    补充内容 (2019-3-25 23:29):
    2019.3.25 beta0.7 修正已知问题,增加太初历计算
    链接:https://pan.baidu.com/s/1RnEFXYzOlWvbG9_DnzwXzQ
    提取码:ypno

    补充内容 (2019-3-27 15:57):
    3.27 beta0.8 修正已知问题,增加历代宿度表
    链接:https://pan.baidu.com/s/15emqeB0DRDKZbtrSuEkNLw
    提取码:aiys

    补充内容 (2019-3-30 21:52):
    3.29 beta0.9 修正已知问题,增加月亮出入和位置、昏旦中星
    链接:https://pan.baidu.com/s/1-nQUAXcD8418LtN5xn5_Mw
    提取码:hgsz

    补充内容 (2019-4-4 20:22):
    4.4 beta1.0 部分功能的整合与优化,年号增录至隋代(618)
    链接:https://pan.baidu.com/s/10LPxpAVOFom4fmwK4jkWJA
    提取码:5lke

    补充内容 (2019-4-27 23:09):
    4.27 beta1.1 增加三统历五星动态,增加实历天象计算,年号增录至唐代(907)
    链接:https://pan.baidu.com/s/1VQ2NttQwQHeZTo7oRBehcQ
    提取码:kd5f

    补充内容 (2019-5-1 21:31):
    5.1 beta1.2 修正已知问题,年号增录至南宋(1279)
    链接:https://pan.baidu.com/s/1vOUmtMB2Wqwi1t71gpN8SA
    提取码:9q0t

    补充内容 (2019-5-21 00:15):
    5.20 beta1.3 修正已知问题,增加古六历节气和所在月中的日期,年号增录至清末
    链接:https://pan.baidu.com/s/1AkAoLtT90TUR-NLUBlhgiw
    提取码:8x7u

    评分

    1

    查看全部评分

    [发帖际遇]: xsg 帮曹植卖新诗集,赚 2 没奈何. 幸运榜 / 衰神榜
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-11-29 00:16 | 显示全部楼层
    软件界面


    计算示例1


    计算示例2


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-11-29 00:48 | 显示全部楼层
    利用软件对书中排印错误重新计算示例


    图一的明显错误:计算结果与史料记载无误差。
    图二的明显错误:根据书中的宿度表,心宿二赤经为180°的年代应该在-2500至-3000年间。

    其中图一的数据可以对比日文原版证明。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-5-20 09:16
  • 签到天数: 337 天

    [LV.8]以坛为家I

    发表于 2018-11-29 04:59 | 显示全部楼层
    很好。很有用。辛苦了。多谢了。
    能否多问一句:是用什么语言编的?界面只有label、text和botton等3种控件,看不出来。比如VB6做的界面也是这样的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-11-29 09:56 | 显示全部楼层
    本帖最后由 xsg 于 2018-11-29 10:03 编辑
    gongqi 发表于 2018-11-29 04:59
    很好。很有用。辛苦了。多谢了。
    能否多问一句:是用什么语言编的?界面只有label、text和botton等3种控件 ...

    python。我原来只是自己做些简便计算,用python更方便,后来才想到弄成图形界面。然后才发现Python的界面排版很麻烦。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-10 20:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-11-29 17:21 | 显示全部楼层
    本帖最后由 lanlingsun 于 2018-12-1 16:20 编辑

    希望能查询岁星纪年和太岁纪年的内容
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-5-20 09:16
  • 签到天数: 337 天

    [LV.8]以坛为家I

    发表于 2018-11-30 00:51 | 显示全部楼层
    Python好啊,现在这么火。正在准备教小孩学这个呢。但是还不太熟,以前一直用vb6
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-1 00:45 | 显示全部楼层
    本帖最后由 xsg 于 2018-12-1 10:13 编辑
    lanlingsun 发表于 2018-11-29 17:21
    希望能查询岁星纪念和太岁纪念的内容

    岁星纪年,其实就是对木星位置的计算。
    软件已提供计算行星真实星次。
    之前考虑岁星纪年,以十二年为周期,与实际周期不同,实际行用不会长,也无法确定实际使用年限。且以刘歆之百四十四年超辰法计算亦不合于史料。而各家仅以各自所信之历元排表,结果互不相同,故没有添加此项。
    不过现在想想岁星纪年的确是学习者必须理解之问题,下次应该会加上


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-10 20:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-12-1 16:19 | 显示全部楼层
    xsg 发表于 2018-12-1 00:45
    岁星纪年,其实就是对木星位置的计算。
    软件已提供计算行星真实星次。
    之前考虑岁星纪年,以十二年为周期 ...

    身边没有懂天文历法的,恰好请教您:
    许慎《说文解字叙》“粤在永元,困顿之年”按照岁星纪年法当在汉永元哪一年?


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-1 23:16 | 显示全部楼层
    本帖最后由 xsg 于 2018-12-1 23:17 编辑
    lanlingsun 发表于 2018-12-1 16:19
    身边没有懂天文历法的,恰好请教您:
    许慎《说文解字叙》“粤在永元,困顿之年”按照岁星纪年法当在汉永 ...

    永元即汉和帝年号,在89-104年。
    而困顿是地支别名,对应关系可参见《尔雅》
    “大歲在寅曰攝提格,在卯曰單閼,在辰曰執徐,在巳曰大荒落,在午曰敦牂,在未曰協洽,在申曰涒灘,在酉曰作噩,在戌曰閹茂,在亥曰大淵獻,在子曰困敦,在丑曰赤奮若。”


    即对应干支纪年中地支为子的一年。查《历史纪年表》,永元间地支为子之年仅有庚子年,为永元十二年,即公元100年。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-10 20:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-12-2 10:53 | 显示全部楼层
    xsg 发表于 2018-12-1 23:16
    永元即汉和帝年号,在89-104年。
    而困顿是地支别名,对应关系可参见《尔雅》
    “大歲在寅曰攝提格,在卯曰 ...

    按照尔雅的说法,就字面上看,困顿不是地支别名,而是太岁纪年的年份别名?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-2 21:07 | 显示全部楼层
    本帖最后由 xsg 于 2018-12-2 21:08 编辑
    lanlingsun 发表于 2018-12-2 10:53
    按照尔雅的说法,就字面上看,困顿不是地支别名,而是太岁纪年的年份别名?
    ...


    《尔雅》这里直接就是太岁纪年的岁名。下面还有两行“载,岁也,夏曰岁商曰祀,周曰年,唐虞曰载。岁名。”,按《尔雅》的体例表示前面两行解释的是岁名。再如《淮南子·天文训》“太阴在子,岁名困敦”可证。
    关于“困顿”是地支别名(的确有表达不准确):
    具体来说。古人最早发现岁星每隔十二年的位置重复,于是将星空分为十二区(星次),这样观察岁星在哪个区就能知道今年是哪一年。可是很快发现岁星也不是严格按12年重复一次,所谓“岁在星纪,而淫与玄枵”(-545),已不能根据岁星位置判断年份。于是假想了一个太岁的存在,它是严格按照一年走一个区来设定的。并且为方便,与已有的十二辰(用地支表示)相对应,而给了另一套称呼,并不直接用地支表示年名。譬如我们现在用十二生肖称呼年份,就是一种别名。
    准确来说,这里的岁名不是地支的别名,而是地支表示的年份的别名。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-4 11:58
  • 签到天数: 50 天

    [LV.5]常住居民I

    发表于 2018-12-4 12:57 | 显示全部楼层
    不明觉厉,下载学习一下,感谢楼主
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-10 20:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-12-4 22:40 | 显示全部楼层
    xsg 发表于 2018-12-2 21:07
    《尔雅》这里直接就是太岁纪年的岁名。下面还有两行“载,岁也,夏曰岁商曰祀,周曰年,唐虞曰载。岁名。 ...

    谢谢指教
    明天安排时间仔细钻研您的历法计算软件
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-5 02:24 | 显示全部楼层
    lanlingsun 发表于 2018-12-4 22:40
    谢谢指教
    明天安排时间仔细钻研您的历法计算软件

    主要还是看书。软件只是遇到计算问题时提供方便。
    古天文历法的问题有很多争议,程序的一旦写成能处理的问题就相对固定,遇到不同问题还是需要经常修改代码临时处理。
    预计正式版我把功能弄全,代码整理好后会提供源码。
    [发帖际遇]: xsg 帮刘备卖草席,赚 2 没奈何. 幸运榜 / 衰神榜
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-5 02:25 | 显示全部楼层
    lanlingsun 发表于 2018-11-29 17:21
    希望能查询岁星纪年和太岁纪年的内容

    已增加此项,多谢建议。
    [发帖际遇]: xsg 帮孙悟空捉妖怪,奖励3 没奈何. 幸运榜 / 衰神榜
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-10 20:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-12-5 11:18 | 显示全部楼层
    xsg 发表于 2018-12-5 02:25
    已增加此项,多谢建议。

    不客气。
    翻检了一阵儿刘坦的《论星岁纪年》,感觉把岁星纪年的数据添加到程序里要耗费不少精力。谢谢你的辛劳。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-5 14:38 | 显示全部楼层
    本帖最后由 xsg 于 2018-12-5 15:33 编辑
    lanlingsun 发表于 2018-12-5 11:18
    不客气。
    翻检了一阵儿刘坦的《论星岁纪年》,感觉把岁星纪年的数据添加到程序里要耗费不少精力。谢谢你 ...

    才发现我前面回的是同一个人。
    我考虑过通过输入年限获得较长的岁星纪年表。但再整理到excel也不方便。其实岁星纪年最大的问题在于,先秦史料的记载都不是实际天象。所以用现代天文学计算也研究不出什么,只能作为一种参考。还是依赖于对史料本身的分析。
    比较各家的理论,直接用excel排表最方便、最直观。只需要下拉,就可以生成数百年的数据。


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-10 20:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-12-5 19:40 | 显示全部楼层
    本帖最后由 lanlingsun 于 2018-12-5 20:20 编辑
    xsg 发表于 2018-12-5 14:38
    才发现我前面回的是同一个人。
    我考虑过通过输入年限获得较长的岁星纪年表。但再整理到excel也不方便。其 ...

    Win7 SP1 64位系统上运行历法计算软件出现如下错误提示:



    在win10 专业版 64位系统上运行正常,功能全面,数据准确。
    当然有助于历法相关的学习和研究,对搞文史的也有很大帮助。

    又及:软件名称中似应增补天文两个字。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-5 20:23 | 显示全部楼层
    本帖最后由 xsg 于 2018-12-5 20:31 编辑
    lanlingsun 发表于 2018-12-5 19:40
    Win7 SP1 64位系统上运行历法计算软件出现如下错误提示:

    https://jingyan.baidu.com/article/d169e1865acd58436611d83a.html

    暂时那个也不算名字。名字的话我还是想想一个好的,像看书的时候见过“天学真原”“历算求索”这样的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-21 10:41
  • 签到天数: 628 天

    [LV.9]以坛为家II

    发表于 2018-12-10 12:18 | 显示全部楼层
    感谢楼主分享好工具并保持更新!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-24 20:31
  • 签到天数: 67 天

    [LV.6]常住居民II

    发表于 2018-12-11 16:27 | 显示全部楼层
    WIN10不能运行
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2019-1-19 19:17
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2018-12-11 22:24 | 显示全部楼层
    不错,功德无量
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-10 20:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-12-12 09:51 | 显示全部楼层
    印象里殷历建丑
    您这里看起来是建子:


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-13 02:10 | 显示全部楼层
    lanlingsun 发表于 2018-12-12 09:51
    印象里殷历建丑
    您这里看起来是建子:

    这里是古六历的殷历。
    殷历建丑的说法,来源于三正说。两种说法都起源于战国,在当时而言互不相关。(其实现在也类似,搞文史和搞历法的各自强调某种说法而可以互不相干)
    但可以确定的是,以历法创建的要求来看,中国古代是阴阳合历,一个重点就是调节阴历和阳历,使二者相协调。阳历用于确定年岁,确定一年的长度,在当时而言是通过测影长确定冬至,找到一年的开始。以此时的阴历月作为一年的起始月。所以不可能先有建寅的历法,再有建子的历法。


    而两者都不是殷代真实的历法。
    以《春秋》所记日食多合天,而《左传》多失天可知,春秋时尚为观象授时,还没有确定的历法。至战国则已能用历法推步。
    无论是从《左传》等来看鲁历,还是出土秦汉历简来看颛顼历,都与古六历有相当的不合之处。
    古六历的价值在于,一者,先秦和秦汉间史料中的历日有部分为战国秦汉间人所推。二者,它是所传最早的历法,其后的历法,也是在此基础是发展起来的。



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-10 20:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-12-13 13:47 | 显示全部楼层
    xsg 发表于 2018-12-13 02:10
    这里是古六历的殷历。
    殷历建丑的说法,来源于三正说。两种说法都起源于战国,在当时而言互不相关。(其 ...

    多谢指教
    多亏没学天文,太难了。
    [发帖际遇]: lanlingsun 替吴刚砍了一天树,奖励 1 没奈何. 幸运榜 / 衰神榜
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-10 12:36
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2018-12-15 10:18 | 显示全部楼层
    win7的32位系统提示不能用。楼主能不能改一个32位能用的啊?拜谢!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-16 22:54
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-22 21:13 | 显示全部楼层
    本帖最后由 xsg 于 2018-12-23 15:12 编辑
    鑫龙 发表于 2018-12-15 10:18
    win7的32位系统提示不能用。楼主能不能改一个32位能用的啊?拜谢!!

    更新了32位版,未测试,如果有问题反馈给我。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-5-6 12:26
  • 签到天数: 104 天

    [LV.6]常住居民II

    发表于 2018-12-27 19:08 | 显示全部楼层
    之前有自学过,感觉自己没太懂。谢谢楼主分享,我改天试试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-12-29 09:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-12-29 09:32 | 显示全部楼层
    好东西。先收藏。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    Archiver|手机版|小黑屋|国学数典 ( 2006-2019 冀ICP备19008975号-2 )

    GMT+8, 2019-5-22 03:19

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表