中华农历论坛知识讨论区历法知识 → 回复帖子

  回复帖子
用户名:   *您没有注册?
密码:   *忘记论坛密码?    标题采用“回复:XXX....”
主题标题:  *不得超过 200 个汉字
当前心情
上一页 发帖表情 下一页
内容
高级设置: 签名: 回帖通知:
 

主题最新回顾(发布时间:2008/12/26 0:33:00)
--  作者:bbsman
--  
因本人上网的时间非常少,未能及时感谢各位前辈的热心帮助及支持。在此不胜感激!谢谢了!

主题最新回顾(发布时间:2008/12/10 17:15:00)
--  作者:xjw01
--  

楼上的方法是个好办法,不过为了得到高精度,楼上的方法需在原有基础上进行一次迭代计算。寿星万年历中的算法与楼上的方法是相近的,但使用了标准的天文参数以及标准的坐标旋转变换方法,以便进行各种坐标修正。

“中天”“升起”“降落”的精确计算(寿星万年历采用的算法):

以下以升起为例。

第1步:算出jd时刻天体的赤道坐标及恒星时。(jd应接近升起时刻,误差几个小时不要仅,但不要相差半天以上)
第2步:由赤道坐标及恒星时估推(如线性外推)长起的时角Ho。
第3步:算出H距Ho的差距,即ΔH = Ho - H,那么jd距升起大约还相差ΔH/(2*3.1416)天,即把jd修正为jd = jd + ΔH/6.28
第4步:jd看作新的升起时刻的估值,重复以上计算过程(重复一即就可以精确到20秒以内)

至于说什么是恒星时、赤道坐、地平坐标,以及相差的坐标旋转变换,楼主可自行查一下相差资料。上面为什么使用到了6.28,其实太阳时角每天转了大约360度,6.28就是它在平行圈上的转速估计。不要求速度估计得很准,因为以上算法使用了迭代逼算法,原理描述如下:
  在赛场上,t=3时刻,小明以大约以每秒5.0米的速度冲刺,小明距终点还有9米,到达终点估计还有9/5.0秒,t=t+9/5.0。重新观测t时刻小明位置,并再算一次,得到小明冲刺的准时间。
  在天球上,t=1时刻,太阳以大约以每天360度的速度运动,太阳距长起还有3度,到达长起估计还有3/360天,t=t+3/360。重新计算t时刻太阳位置,并再算一次,得到太阳冲刺的准时间。


主题最新回顾(发布时间:2008/12/10 9:40:00)
--  作者:浪-淘-沙
--  
以下是引用浪-淘-沙在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β)=sinα/tg(β+90)

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.

作一下简化及更正.结果不变.


主题最新回顾(发布时间:2008/12/10 9:28:00)
--  作者:浪-淘-沙
--  
您没有浏览该精华帖子的权限

主题最新回顾(发布时间: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.


主题最新回顾(发布时间:2008/12/8 13:41:00)
--  作者:浪-淘-沙
--  

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

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

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


主题最新回顾(发布时间: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小时,但实际上每个真太阳日不一定是这个数。

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

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


主题最新回顾(发布时间:2008/12/8 12:15:00)
--  作者:浪-淘-沙
--  

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

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

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


主题最新回顾(发布时间:2008/12/7 13:38:00)
--  作者:bbsman
--  回复:(浪-淘-沙)天文历算本来就是很复杂的,仅仅用高...
以下是引用浪-淘-沙在2008-12-5 8:37:00的发言:

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

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

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

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

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

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

祝楼主早日成功。

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


主题最新回顾(发布时间: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表的万年历了.