中华农历论坛知识讨论区历法知识 → [求助]中历及二十四节气时刻及日出日落时刻计算公式?


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

主题:[求助]中历及二十四节气时刻及日出日落时刻计算公式?

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


加好友 发短信
等级:新手上路 帖子:5 积分:256 威望:0 精华:0 注册:2008/12/4 15:23:00
[求助]中历及二十四节气时刻及日出日落时刻计算公式?  发帖心情 Post By:2008/12/4 15:32:00

问题如题.。我知道“寿星万年历”有相关的算法,基于本人知识有限,拜读几次仍无法得解?(高中学历),哪位高人能否将关于这个问题的算法比较明了的告诉下?JAVAscript好像是用这个脚本语言编写的,谢谢了。

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


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2008/12/5 8:37:00

天文历算本来就是很复杂的,仅仅用高中的物理知识与数学知识,确实无法精确推算地球、月球的位置(这与二十四节气及朔望时刻有关)。

地球绕太阳运转,还受各大行星的摄动,所以可以说地球在黄道上的位置没有准确的周期性。

假设以现在这个时刻观测地球,月球,各大行星的轨道位置。会不会在几万年内(或几十万年内)的某一天的某一时刻,观测到各个星体的与现在相同的轨道位置数据(二次观测所得,各星体之间的相对位置完全一样,暂时不考虑太阳在银河系里的移动)?我估计这是不可能的。

既然没有准确周期规律,那么我们的农历只有靠天体力学理论来推算了。

楼主可以试着按许剑伟先生在置顶贴“天文算法讨论”里的内容,一步步深入下去,或许可以得到想要的结果的。

楼主说自己高中学历,这个不要紧的。有了高中的基础,完全有能力自修部分相关的大学教材。

祝楼主早日成功。


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


加好友 发短信
等级:新手上路 帖子:6 积分:216 威望:0 精华:0 注册:2008/11/29 18:58:00
  发帖心情 Post By:2008/12/7 0:48:00

有沒有可以用 EXCEL 算出來


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


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2008/12/7 10:03:00

以下是引用浪-淘-沙在2008-11-30 21:35:00的发言:
以下是引用mustang在2008-11-29 22:58:00的发言:

請問一下

有沒有人試著用 EXCEL 做精準的節氣嗎

许剑伟兄(xjw01)已经公开了他编算历法的源程序,你若仔细看看,就会发现程序很复杂的.

要想精确推算节气时刻,要考虑的东西很多.比如要把各大行星对地球的摄动考虑进去.所以若用EXCEL表来制作,很难计算保证精度的.

有人以为:地球的回归年周期是365.2422天,那么今年的春分时刻加上这个周期,就是明年的春分了.其实完全不是这样的.因为回归年周期是多年的平均值,不是每年都等长的(这主要是各大行星对地球的摄动造成的).

同样的,春分时刻加上30.4377日(二个中气平均间隔长度),不可能是谷雨的时刻.

首先,节气只是把黄道进行等分,但由于地球公转近日点快,远日点慢,所以各节气的长度不等长.

其次,各大行星对地球的摄动不是每时每刻都均匀的.这使得不同年份的每一个节气的长度也不完全一样的.比如

2008年春分3月20日13:48:16,谷雨4月20日00:51:08,二者相隔30天11小时2分52秒.

2007年春分3月21日08:07:26,谷雨4月20日19:07:04,二者相隔30天10小时59分38秒.

2007年的春分到谷雨的时间间隔比2008年的短3分钟14秒.

你说,用EXCEL表能算出这么准确的数据吗?若能的话,这个EXCEL表肯定非常复杂了.估计没人会有这个耐心去编EXCEL的宏运算的.

这是我在另一个帖子里想到的.我觉得用EXCEL表计算节气时刻,误差很大的.当然,若假设回归年周期是固定的,那么用查表方式做的万年历,其多年的平均结果,或许可以接近真实的回归年平均周期.

但有一点,当定中气,定朔时刻接近零点时,用查表法做的万年历往往会出现一天的误差,且可能搞错了闰月,大小月等.所以查表法无法保证数据的准确性的.建议不要花这个心思去编EXCEL表的万年历了.


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


加好友 发短信
等级:新手上路 帖子:5 积分:256 威望:0 精华:0 注册:2008/12/4 15:23:00
回复:(浪-淘-沙)天文历算本来就是很复杂的,仅仅用高...  发帖心情 Post By:2008/12/7 13:38:00

以下是引用浪-淘-沙在2008-12-5 8:37:00的发言:

天文历算本来就是很复杂的,仅仅用高中的物理知识与数学知识,确实无法精确推算地球、月球的位置(这与二十四节气及朔望时刻有关)。

地球绕太阳运转,还受各大行星的摄动,所以可以说地球在黄道上的位置没有准确的周期性。

假设以现在这个时刻观测地球,月球,各大行星的轨道位置。会不会在几万年内(或几十万年内)的某一天的某一时刻,观测到各个星体的与现在相同的轨道位置数据(二次观测所得,各星体之间的相对位置完全一样,暂时不考虑太阳在银河系里的移动)?我估计这是不可能的。

既然没有准确周期规律,那么我们的农历只有靠天体力学理论来推算了。

楼主可以试着按许剑伟先生在置顶贴“天文算法讨论”里的内容,一步步深入下去,或许可以得到想要的结果的。

楼主说自己高中学历,这个不要紧的。有了高中的基础,完全有能力自修部分相关的大学教材。

祝楼主早日成功。

多谢你的鼓励。要是我是粗算的,有什么还的算法吗?


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


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2008/12/8 12:15:00

节气的计算比较复杂,若要粗略的计算,可以假设回归年周期365.2422是固定,那么每年的节气时刻加上这个数,就是第二年的节气时刻.

误差估计有二三分钟到十来分钟.且有时交节时刻在0点附近,日期上可能会有一天的误差.

恐怕你不会接受这个结果的.


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


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2008/12/8 13:01:00

日出日落的粗略计算,我也找到一个方法,计算结果的误差也很大的,总有十来分钟吧.

先作如下假设:地球是正球体.各地观测者都处于同一海拔高度(且假设为0),观测时忽略大气层的折射效应.观测时假设太阳是点光源.

计算思路:当太阳光直射北纬β度时,作一个平面,且此平面过地球球心,且与太阳光垂直.则这个平面与地球球面的交线(也是过球心的一个大圆)就是日出日落时刻圈(这个名词不好,但我想不出其它好名词).假定此圆与赤道交点为东经120度,西经60度.此时,赤道上的东经120度地方正好是日出时刻,按北京时间来计,就是早上6:00整.

计算日出日落时刻圈大圆在不同纬度时的经度数,再与120度相减,就可以算出日出日落时间了。

我把杭州的纬度(30.25度)代进去,算出夏至时日出时间比6点整早58.5分钟(按地方时)。冬至时比6整晚58.5分钟。查寿星万年历,2008年夏至日出时间比6点早63分钟,冬至比6点晚54分钟(平均下来差不多也是58.5分钟)。

误差主要在假设时考虑地球是匀速公转的,地球公转不受各大行星摄动。

同时假设了一个太阳日就是24小时。其实平太阳日算24小时,但实际上每个真太阳日不一定是这个数。

还有,实际观测时,要考虑大气层的折射效应。还要考虑太阳本身的视直径有半度左右(因为日出的定义是太阳的上切面与地平线相切就算日出了,不是太阳中心与地平线相切)。

还有,要考虑观测者所在地的海拔。日出方向上有无高海拔的地形地物遮挡等等。(到海上去观日出,或许就简单多了。)


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


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2008/12/8 13:41:00

上面的推导是假设已知太阳直射点的纬度,比如夏至直射点为北纬23度26分.冬至为南纬23度26分.春分,秋分为纬度0度.

至于其它日期的直射点纬度,既然是粗略计算,就用365.2422等分一个周年,以线性来拟合,即假设从春分到夏至,直射点每天向北的移动速度是均匀的.

我算了一下,这种线性拟合的误差太大.看来还得想个好一点的办法.bbsman兄也请你同时想个好对策.


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


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2008/12/8 14:34:00

以地球中心为原点O,赤道所在平面为XY平面,东经120度指向西经60度为Y轴正方向.球心指向北极为Z轴正方向.有了Y轴与Z轴就可定X轴的方向(从东经30度指向西经150度)

球面方程:X^2 + Y^2 + Z^2 = 1 (设地球直径为1)

日出日落时刻圈方程:Y^2 + Z'^2 = 1  (Z'以Z轴作坐标变换,见下面)

Z'=Z*sin(β+90)                (β为太阳光直射点纬度)

求纬度α度时日出时刻.先解出纬度为α度时的X,Y坐标.

X=sinα*sin(β+90)*cos(β+90)/(cosβ*cosβ)

Y=-SQRT(1-X^2-sinα*sinα)  (SQRT为平方根)

有了XY坐标,求反正切,得出一个角度值(由于在XY平面内,0度在X轴正向,实际的东经120度在Y轴负方向上,即270度角.所以要换算一下,才能得出经度差)

实算一下:代入杭州的纬度为30.15度,夏至日时,太阳直射点纬度为23.4333度.

算出X=-0.21835,Y=-0.83578,反正切得出-104.64度.计算时假设杭州在Y轴负方向上(即270度或-90度).两者之间相差14.64度,换成时间就是58.56分钟.

(计算出的14.64度的含义是指,夏至日那天,当赤道上(北纬0度)东经120度的地方看到日出时,北纬30.15度,东经(120-14.64)度的地方也正好看到日出.)

(换句话说:当赤道上东经120度的地方看到日出时,北纬30.15度东经120度的地方日出已经过去58.56分钟了.由于赤道上是昼夜等分的(假设太阳是个点光源),即日出时刻一定在6:00.那么同一经度的北纬30.15度地方,日出时间是5:01:26左右.杭州东经120度10分.比120度还早了40秒钟.所以日出时间为5:00:46)

查寿星万年历,杭州在夏至日的日出时间为4:58:07,日落时间19:04:07.


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


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2008/12/10 9:28:00

您无权查看精华帖子

[本帖被加为精华]
支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
总数 13 1 2 下一页

返回版面帖子列表

[求助]中历及二十四节气时刻及日出日落时刻计算公式?








签名