中华农历论坛知识讨论区历法知识 → DE405/406星历表算法


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

主题:DE405/406星历表算法

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


加好友 发短信
等级:蝙蝠侠 帖子:866 积分:3804 威望:3 精华:20 注册:2008/3/20 22:14:00
DE405/406星历表算法  发帖心情 Post By:2009/2/5 20:43:00

您无权查看精华帖子

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


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

您无权查看精华帖子

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


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

注意

第2楼为 sxwnl_eph.cpp


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


加好友 发短信
等级:论坛游民 帖子:58 积分:3673 威望:0 精华:0 注册:2008/8/6 9:17:00
  发帖心情 Post By:2009/2/6 8:56:00

不错的学习资料。谢谢许老师。

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


加好友 发短信
等级:论坛游侠 帖子:190 积分:1585 威望:0 精华:1 注册:2008/7/6 15:34:00
  发帖心情 Post By:2009/2/7 19:36:00

 

许老师为什么不用瑞士星历表?
Swiss Ephemeris
是由Astrodienst基于美国宇航局JPL实验室发布的
DE406
星表拓展而来的一个高精度的星历表.它不是一个面对终端用户的产
,而是面对天文软件程序开发者的一个工具集.它给我们提供了如下一
些计算功能:行星和恒星的计算;食现象和行星现象的计算;日期和时间转
换功能;初始化,安装和关闭的功能;黄道十二宫的计算以及一些辅助功
.
Swiss Ephemeris
与其他星历表相比,具有如下一些优势:
1.Swiss Ephemeris
是在NASAJPL实验室最新的行星和月亮表DE405
DE406
基础上拓展而来的.DE405星表的时间跨度为公元前3000年到公元
3000
年共6000,它的数据总共需要550M的磁盘空间.DE406是它的压缩
版本并且提高了精度.这些数据被Astrodient利用复杂的压缩技术进一步
压缩,对于6000年的行星数据只需5M磁盘空间,月亮数据需要13M空间,
并且达到了0.001角秒的精度.此外他们还将时间跨度拓展为从公元前5400
年到公元5400.
2.
完成了从惯性参照系到当以当日真春分点为原点的天文坐标系的转
.所有需要考虑的修正如相对论性偏差,光在太阳重力场中的弯曲等都
以极高的精度加以考虑以使整体转换精度达到0.001角秒.
3.
可以利用三种不同的星表数据(DE406,Swiss Ephemeris,Moshier
model)
进行计算,该软件包将根据所安装的数据文件自动切换到精度最高
星历表进行计算.
4.
它还包含了所有已知的小行星甚至是假想天体的计算.它包含了
55000
颗小行星的数据.
20
5.
它不仅精度高,并且运算速度很快.在一台1000MHz的奔三处理器
的测试机器上,计算10000颗星星的位置只需9秒钟.

 

http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f732668c8c4668d4e50cce735b361a26b6a6717f4145ce83263040f40841eaf23475200454e8c889ce1d9dac955c51d360412341f71b418e0eafbc04739534d507a9f916b1ede733e3a8d0d4c85422cc51016d81809c2c0203bb6ae76533f4d2ea5f142f07caee271289&p=8b2a9401c0d215c308e2932652&user=baidu


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


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

总觉得,瑞士星历表没有您想像的那么好用,原因有3个:(1)代码太长不易加
入自己的工程中;(2)不易搞清楚它的坐标的具体函义,及其调用方法,
我在使用瑞士星历表时,仍然须要结合《2008年天文年历》、elm/mpp02、
VSOP87、DE405/406星历表、岁差章动计算才能彻底知道瑞士星历表调用
参数的关系。注意:如果不考虑文件存取的问题,DE405/DE406比瑞士星历表
的计算要简单得多!!!!!说实在,文件存取及相关的数据结构,是计算机专业
的事。(3)瑞士星历表把星历扩展到+-5400年没有太大的意义,如果有必要,
DE406当时也会提供这么长的数据,因为数据积分方法不适合长时间的外推。
我曾用科威尔方法积分,用80位的长双精度表示数字(不是64位的),发现
几千年后的截断积累误差非常大,不是这毫角秒数量级,可能达到角秒数
量级,在这种情况下计算太阳位置,千后以后的误差可能达到1分钟,如果
是这样,远期的的星历推算还不如使用VSOP87。实际上,从数值积分的原
理看来,如果外推10年产生1ms的误差,那么外推100年的误差就不是10ms,
而是更大,比如30ms,千年后可能达到角秒,误差积累与时间不是线性关系
的!所以说,瑞士星历表扩展了范围,只是为了提高适用范围,并不是说
它的精度很高。

 

我的想法:如果不打算做太专业的计算,使用vsop87算法就可以了,改正一下坐标的起算点(只是一个常数),计算地内行星,近几十年的精度高达10ms(这是指最大可能的误差),平均误差大约为几毫角秒,瑞士星历表的精度仅仅高了3至5倍。当然vsop87计算地外行星,误差大一些。如果想做专业一些的计算,很有必要了解DE星历表,瑞士星历表倒不是很有必要(它本身也在使用DE星历表),因为《中国天文年历》已经开始使用DE星历表。顺便说明一下,DE星历表使用的是它的专用坐标系(ICRF),swiss把它旋转到了J2000惯性平黄道及J2000平赤道坐标系,二者有几十毫角秒的差异,中国天文年历也使用这个J2000坐标系。

不要过份介意远期的精度!几千年后的星历精度一般认为只能精钟到分钟,不可能精确到毫秒。

DE星历表被很多国家采用,我觉得不单单是因为它的精度高,还有一个原因是它的算法简单,维护起来容易,DE102、DE200、DE403、DE405、DE406等等,算法几乎相同。DE星历表的算法难度与vsop87差不多,只是DE星历表体积很大,需要一些文件操作,造成了一些麻烦。

 

 

[此贴子已经被作者于2009-2-8 11:04:39编辑过]

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


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

以上程序的javascript调用测试结果

寿星星历activeX测试

测试1:Javascript仿c语言printf()格式化输出函数
printf("%s %4.1d %6e", "test", -0.058, 0.00008233458); 结果如下
test -0.1 8.233458e-5

测试2:activeX路径:E:\天文包\剑\万年历\actX\

测试3:解方程组
 x+y+z=6
 x+2y+z=8
 x+y+3z=12
 结果:(x,y,z)=1,2,3

=============================行星测试==================================
测试4:JD=36525(J2000起算),地球J2000坐标(VSOP87日心球面):
 黄经: 99°43'13.746"黄纬:- 0°00'45.554"距离:0.9833513122
 黄经: 99°43'13.692"黄纬:- 0°00'45.555"距离:0.9833513125修正了平黄经

测试5:JD=36525(J2000起算),地球J2000坐标(swiss地心球面):
 黄经: 99°43'13.692"黄纬:- 0°00'45.559"距离:0.9833513062

测试6:JD=36525(J2000起算),地球J2000坐标(DE406地心球面):
 黄经: 99°43'13.694"黄纬:- 0°00'45.556"距离:0.9833513065

=============================月历测试==================================
测试7:JD=2926.5(J2000起算) 月球J2000坐标(ELP/mpp02 fit DE405 地心球面)
 黄经: 256°47'45.133"黄纬:- 4°52'10.387"距离:401817.6342
测试8:JD=2926.5(J2000起算) 月球J2000坐标(swiss, 地心球面)
 黄经: 256°47'45.133"黄纬:- 4°52'10.342"距离:401817.6341
测试9:JD=2926.5(J2000起算) 月球J2000坐标(DE406, 地心球面)
 黄经: 256°47'45.134"黄纬:- 4°52'10.386"距离:401817.6337
 黄经: 256°47'45.134"黄纬:- 4°52'10.341"距离:401817.6337 补0.047ms交角
视黄经: 256°54'36.317"黄纬:- 4°52'14.134"距离:401817.6711

测试10:取swiss星历表中编号为1的星体名称:Moon
测试11:取swiss星历表中 2008年 deltatT: 65.48秒

测试12:DE406测试 JED 2440400.5 全部星体太阳系质心(SSB)坐标

水星      0.3572602064473    -0.0915490424305   -0.0859810399869 AU
          0.0033678456622     0.0248893428422    0.0129440715868 AU/日
金星      0.6082494331856    -0.3491324431959   -0.1955443457854 AU
          0.0109524201099     0.0156125067399    0.0063288764517 AU/日
地球      0.1160247289670    -0.9265813177178   -0.4017930667289 AU
          0.0168043165197     0.0017451662484    0.0007570133973 AU/日
火星     -0.1146885824391    -1.3283665308335   -0.6061551894194 AU
          0.0144820048079     0.0002372854924   -0.0002837498361 AU/日
木星     -5.3842094069921    -0.8312476561611   -0.2250947570335 AU
          0.0010923632912    -0.0065232941912   -0.0028230122672 AU/日
土星      7.8898899338228     4.5957107269260    1.5584315167251 AU
         -0.0032172034911     0.0043306322336    0.0019264174638 AU/日
天王星  -18.2699008149783    -1.1627115802190   -0.2503695407426 AU
          0.0002215401656    -0.0037676535582   -0.0016532438049 AU/日
海王星  -16.0595450919245   -23.9429482908795   -9.4004227803540 AU
          0.0026431227916    -0.0015034920808   -0.0006812710049 AU/日
冥王星  -30.4878221121555    -0.8732454301967    8.9112969841848 AU
          0.0003225621959    -0.0031487479276   -0.0010801779316 AU/日
日心月    0.1152165516391    -0.9285759477194   -0.4028803293898 AU
          0.0174054013363     0.0015777207878    0.0006714512523 AU/日
太阳      0.0000000000000     0.0000000000000    0.0000000000000 AU
          0.0000000000000     0.0000000000000    0.0000000000000 AU/日
SSB      -0.0045025081562    -0.0007670747009   -0.0002660568052 AU
          0.0000003517482    -0.0000051776254   -0.0000022291019 AU/日
EMB       0.1160149091392    -0.9266055536404   -0.4018062776070 AU
          0.0168116200522     0.0017431316880    0.0007559737671 AU/日
地心月   -0.0008081773279    -0.0019946300016   -0.0010872626608 AU
          0.0006010848167    -0.0001674454606   -0.0000855621450 AU/日

JED 2440400.5 的DE405初始标准坐标,ICRF参考架(不是J2000赤道&分点),JPL说明书中的:

水星     0.35726020644727541518 -0.09154904243051842990 -0.08598103998694037053 位置(AU)
         0.00336784566219378527  0.02488934284224928990  0.01294407158679596663 速度(AU/日)
金星     0.60824943318560406033 -0.34913244319590053792 -0.19554434578540693592
         0.01095242010990883868  0.01561250673986247038  0.00632887645174666542
EMB      0.11601490913916648627 -0.92660555364038517604 -0.40180627760698804496
         0.01681162005220228976  0.00174313168798203152  0.00075597376713614610
火心    -0.11468858243909270380 -1.32836653083348816476 -0.60615518941938081574
         0.01448200480794474793  0.00023728549236071136 -0.00028374983610239698
木星    -5.38420940699214597622 -0.83124765616108382433 -0.22509475703354987777
         0.00109236329121849772 -0.00652329419119226767 -0.00282301226721943903
土星     7.88988993382281817537  4.59571072692601301962  1.55843151672508969735
        -0.00321720349109366378  0.00433063223355569175  0.00192641746379945286
天王星 -18.26990081497826660524 -1.16271158021904696130 -0.25036954074255487461
         0.00022154016562741063 -0.00376765355824616179 -0.00165324380492239354
海王星 -16.05954509192446441763 23.94294829087950141524 -9.40042278035400838599
         0.00264312279157656145 -0.00150349208075879462 -0.00068127100487234772
冥王星 -30.48782211215555045830 -0.87324543019672926542  8.91129698418475509659
         0.00032256219593323324 -0.00314874792755160542 -0.00108017793159369583
太阳     0.00450250884530125842  0.00076707348146464055  0.00026605632781203556
        -0.00000035174423541454  0.00000517762777222281  0.00000222910220557907
月亮    -0.00080817732791148419 -0.00199463000162039941 -0.00108726266083810178
         0.00060108481665912983 -0.00016744546061515148 -0.00008556214497398616


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


加好友 发短信
等级:论坛游侠 帖子:190 积分:1585 威望:0 精华:1 注册:2008/7/6 15:34:00
  发帖心情 Post By:2009/2/9 11:04:00

据我所知  现在大部分软件 都是调用的瑞士星历表。从我所引用那片文章看  现在有学校向学生讲授瑞士星历表的方法
我这里有一个用c语言写的调用瑞士星历表的占星软件的源码,许老师需要的话,可寄给你
我对c语言非常不熟,看不懂,所以希望许老师能写一个基于瑞士星历表的实用软件


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


加好友 发短信
等级:新手上路 帖子:1 积分:241 威望:0 精华:0 注册:2009/3/3 22:54:00
  发帖心情 Post By:2009/3/4 12:00:00

您好,请讲一下二进制星历数据文件的存储结构,和p1变量的作用以及数据结构图,谢谢。


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


加好友 发短信
等级:新手上路 帖子:1 积分:221 威望:0 精华:0 注册:2009/7/27 22:44:00
  发帖心情 Post By:2009/7/27 23:04:00

谢谢楼主的精华帖!

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
总数 19 1 2 下一页

返回版面帖子列表

DE405/406星历表算法








签名