天文吧 关注:443,747贴子:2,899,273
  • 28回复贴,共1

利用万能且万恶的Matlab计算真太阳日,总是和天文馆数据对不上?

只看楼主收藏回复

大体上先做一个椭圆,原点移动到焦点,计算各微元的面积,以此制作地球角位置和TAI时间的理性换算关系,然后加上近地点进动修正、岁差修正,最后进行黄道坐标系和赤道坐标系的变换。
问题是,计算结果(含中间结果)和网上找到的NASA或紫金山天文台的数据都对不上,比如修改岁差系数使冬至点数据对上,会发现夏至点对不上总是差几个小时,平太阳日也对不上。
大家在仿真过程中遇到过什么坑,怎么改正的?能不能介绍一下,让新人学习下呢?
代码会陆续贴出……


1楼2020-12-16 10:53回复
    现在是中间结果都不对,太阳日更不可能对。
    不过,提前发现一个坑,不知道对不对?网上有人提到恒星日不是真恒星日,而是相对黄道坐标系的地球自转周期,也就是扣除了岁差的恒星日。


    2楼2020-12-16 10:57
    收起回复
      经过反复测试,发现把近地点提前差不多1天半,各节气差不多对上了,误差15分钟左右


      3楼2020-12-16 15:41
      回复
        二十四节气时间对不上,说明太阳黄经没有算对。具体哪里出问题了不太好说,不过感觉楼主计算的模型有点太简单了。要准确计算太阳黄道坐标需要叠加至少好几十个三角函数周期项,可以参考《天文算法》。
        另外天文台的二十四节气数据一般包含了光行差、章动和力学时的校正,但不包含光时校正。


        IP属地:北京来自Android客户端4楼2020-12-16 17:09
        收起回复
          许多概念性的东西理解不清楚。比如恒星年,按椭圆轨道理论,选不同的节气作为起点,得到的恒星年是不一样,由于岁差和进动的存在,就算起点是同一节气,每年的恒星年也是不同的。但是百科上都是说“恒星年”,从来不说“平均恒星年”或者“某某年春分恒星年”。这是什么情况呢?
          按理说,恒星日、平太阳日、平均恒星年三者是精确关联的,平均恒星年、近点年、近点进动是精确关联的。但是百科里的这些参数却是相互矛盾的。
          我感觉,我入门都成问题了。


          5楼2020-12-20 23:20
          回复
            我估计,你计算得到的是地月系质心的数据。而编历法用的二十四节气时刻,是地球质心的数据。


            IP属地:浙江来自Android客户端6楼2020-12-21 15:37
            收起回复
              感谢@中华农历网 因为我是业余的,所有没有定力,没坚持完善。
              按照椭圆轨道理论,近日点公转角速度快,远日点公转角速度慢。由于地球进动和岁差,近地点东移、冬至点西移,也就是说,最近几百年及未来的几千年,冬至点附近的公转角速度越来越慢,春分点附近的公转角速度越来越快。
              而一个太阳年(回归年),无论以冬至点计算还是春分点计算,都不足一个公转周期(无论以恒星年计还是以近点年计),假设公转周期是固定的(我自己假定是地月坐标系的近点年保持恒定,就算是恒星年保持不变也行,两者数字相差不大,定性分析而已),从春分点开始,一个太阳年过后不足一个公转周期的部分,时间大致不变,所转过的公转角度会因为公转角速度的变大(由前述进动和岁差引起)越来越大,也就是说一个太阳年公转的角度越来越小,也就是岁差越来越慢。——这显然是错的。
              为了修正这种错误,或者说为了让岁差保持恒定,就需要假定每个太阳年公转的角度是固定的,太阳年和公转年(个人认同近点年,恒星年道理一样)的公转角度差不变。这样,从春分点开始,一个太阳年过后不足一个公转周期的部分,公转角度不变,所需要的公转时间会因为公转角速度的变大(由前述进动和岁差引起)越来越小,也就是说一个太阳年会越来越长。从冬至点开始计算,太阳年会越来越短。春分点距离冬至点的时间越来越长。——这符合天文学家的观测和计算。
              也就是说,地月质心的太阳年,无论以春分点计还是以冬至点计,都是逐渐变化的。也就是说,“平均回归年”根本就不是以春分点计的地月质心的回归年!!“平均回归年”应当是,或者说本应是,公转周期各定位点的回归年的平均值,或者说是,公转周期减去进动和岁差修正时长后的一个时长值。
              换句话说,我认为,利用平均回归年计算历法是原则性的错误,哪怕数值接近。


              7楼2021-01-12 09:52
              收起回复
                编算历谱,首先需要选择一个好的星历表,以精确计算太阳在各个点位(比如24节气)的时刻。
                而精度越高的星历表,往往计算量也越大。
                对于“农历(或万年历)”软件来说,计算量不能太大,要不然,不适合在手机上或网页上使用。
                这就需要对原星历表的计算值进行拟合,以尽量短的代码,求出精度尽量高的星历。
                《寿星天文历》利用的是VSOP87星历,再拟合DE405/406星历表,进行计算24节气时刻(其实就是太阳在特定黄经点位的时刻)。
                朋友如果有兴趣,可试着找一下:DE405/406星历表的计算过程,再找一下VSOP87(还有VSOP2013)星历表。
                参考星历表的各项参数,你应当能计算出精度更高的太阳位置(特定点位的黄经,就是24节气)。


                IP属地:浙江8楼2021-01-12 15:36
                回复
                  摘录《寿星天文历》常数项目中的”年长“
                  年长度
                  回归年:365.24218968 - 0.0000000616(t-2000) = 365天05时48分45.1秒 at 2008.0
                  恒星年:365.25636306 + 0.0000000010(t-2000) = 365天06时09分09.8秒 at 2008.0
                  近点年:365.25963586 + 0.0000000317(t-2000) = 365天06时13分52.6秒 at 2008.0
                  食 年:346.62007598 + 0.0000003240(t-2000) = 346天14时52分54.8秒 at 2008.0
                  这是近期的各种【年】长度的变化公式。将t=2020,就能求出2020年的平均回归年长度。
                  《寿星》中的年长度公式,又是摘引自《中国天文年历》。


                  IP属地:浙江9楼2021-01-12 16:04
                  收起回复
                    非常感谢您。我在网上真没有搜到那么专业的数据。您让我一睹天文历算的奥秘,真是开心。
                    原本想做一个真太阳时计算软件,发现越学越复杂,越学越不知道何时是个头。
                    您的公式提示恒星年更稳定,这点让我很意外。
                    谢谢。


                    10楼2021-01-12 16:17
                    回复
                      小白看完膜拜各路大神


                      来自iPhone客户端11楼2021-01-12 16:36
                      回复
                        朋友若有兴趣,请参考《天文算法》,《寿星天文历》,日升日落时间计算(2.0版),等资料及软件。
                        网上都能下载的。
                        如果找不到下载源,请与我联系。


                        IP属地:浙江12楼2021-01-12 17:00
                        回复