中华农历论坛知识讨论区历法知识 → [求助]就“月历生成”中的“望、上下弦”请教一下许兄


  共有14487人关注过本帖树形打印

主题:[求助]就“月历生成”中的“望、上下弦”请教一下许兄

帅哥哟,离线,有人找我吗?
linkerson
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:89 积分:1001 威望:0 精华:0 注册:2009/2/22 21:16:00
[求助]就“月历生成”中的“望、上下弦”请教一下许兄  发帖心情 Post By:2009/5/11 13:19:00


许兄您好:


我学着写了个万年历(数据与算法均参考了“寿星万年历”)。我的万年历是先计算十几个节气、朔,然后再排出月序、大小月等。这样也有个好处是:一整年的信息都算好了,当你点击“上月、下月”时,月历显示速度是很快的,但由于所有的信息都是采用现场计算得到,所以计算量如果大的话,必然会影响程序响应速度。正因为这个原因,在我的万年历中没去计算“望、上下弦”。


计算“望、上下弦”的方法与计算“朔”的方法一样。我也是写了个定朔函数,当形参用0代入得到是“朔”时刻,当形参用180代入得到是“望”时刻。……这样,要算出一整年“朔、望、上下弦”的时间开销相当于只计算一年的“朔”的时间开销的4倍。


由于对JavaScript非常不熟悉,所以对《寿星》中这一部分的代码无法透彻理解。所以想请教许兄,您是怎么处理“朔望、上下弦”在月历中显示的问题,是否计算了13个望、13个上下弦?谢谢!

<!--EndFragment-->

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
xjw01
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蝙蝠侠 帖子:866 积分:3804 威望:3 精华:20 注册:2008/3/20 22:14:00
  发帖心情 Post By:2009/5/11 13:47:00

1、计算一下当月第一天t0的日月黄经差W0
2、W0之前的第一个能够被90整除的W就是朔望弦
3、连续计算几个朔望弦,超出本月之后停止。这样只需计算4到5个朔望弦。如果用你的算法,要计算50几个

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
linkerson
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:89 积分:1001 威望:0 精华:0 注册:2009/2/22 21:16:00
  发帖心情 Post By:2009/5/11 17:35:00

十分感谢许兄的指点!

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
xjw01
  4楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蝙蝠侠 帖子:866 积分:3804 威望:3 精华:20 注册:2008/3/20 22:14:00
  发帖心情 Post By:2009/5/11 17:55:00

  寿星万年历中排历谱时用的气朔算法是高速的,它通通用低精度的高速算法计算,仅在气朔时刻十分接近0点的时候才转换到高精度算法。这样可提速5到10倍。因此寿星万年历即使在低配置电脑上同要可以流畅运行。因此,与《日梭万年历》等相比较,精度提高了10倍,但速度没有低为1/10,反而比日梭快了10倍以上。我想,一个编程爱好者,一定会在算法的优化过程中体会到乐趣。

  算法优化水平能够达到寿星的,必竞是少数,所以你不必一次性就定位在《寿星万年历》标准上,这样可能会自讨苦吃。你可以按照你自已的思路,先简单一些。VB的速度是比较快的,比JavaScript要好快很多,所以不必太担心速度不理想,程序能够简单一些则更好,我想,程序写得简洁也是我们追求之一。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
linkerson
  5楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:89 积分:1001 威望:0 精华:0 注册:2009/2/22 21:16:00
  发帖心情 Post By:2009/5/11 21:25:00

以下是引用xjw01在2009-5-11 17:55:00的发言:

  寿星万年历中排历谱时用的气朔算法是高速的,它通通用低精度的高速算法计算,仅在气朔时刻十分接近0点的时候才转换到高精度算法。这样可提速5到10倍。因此寿星万年历即使在低配置电脑上同要可以流畅运行。因此,与《日梭万年历》等相比较,精度提高了10倍,但速度没有低为1/10,反而比日梭快了10倍以上。我想,一个编程爱好者,一定会在算法的优化过程中体会到乐趣。

  算法优化水平能够达到寿星的,必竞是少数,所以你不必一次性就定位在《寿星万年历》标准上,这样可能会自讨苦吃。你可以按照你自已的思路,先简单一些。VB的速度是比较快的,比JavaScript要好快很多,所以不必太担心速度不理想,程序能够简单一些则更好,我想,程序写得简洁也是我们追求之一。

我家里的电脑是2003年配的,赛扬1.7G、256内存。

在这样的配置下,《寿星》仍可以非常流畅地运行!点击“上下月、上下年”没有停顿的感觉。而《日梭》我也用过,打开程序就很慢了,点击“上下月、上下年”会停顿很久,才显示新的月历信息!所以,可以说《寿星》算法是:高精度、高效率、高速度完美结合!

我完全赞同我在引用您的帖子中“蓝色”部分的内容!真的不必一次性就定位在《寿星万年历》标准上,这样可能会自讨苦吃。

感谢您毫无保留的指点!

[此贴子已经被作者于2009-5-12 21:19:57编辑过]

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

[求助]就“月历生成”中的“望、上下弦”请教一下许兄








签名