Python 进动、自行和古代或未来观察者的时代

Python 进动、自行和古代或未来观察者的时代,python,astronomy,pyephem,Python,Astronomy,Pyephem,我有一个关于时代的问题。我想把夜空展示给一个超级远古的观测者或者遥远未来的某个人看。我应该将年份和纪元设置为相同吗 Brandon Rhodes Halley彗星示例中概述的三种场景如下 my_star.compute(历元='-100000') my_star.compute(-100000',epoch='-100000') my_star.compute('-100000') 对我来说,基于他对赤道望远镜的描述和第二个例子1066年对当代观测者的描述,我认为我应该选择第二个选项。也就是说,

我有一个关于时代的问题。我想把夜空展示给一个超级远古的观测者或者遥远未来的某个人看。我应该将年份和纪元设置为相同吗

Brandon Rhodes Halley彗星示例中概述的三种场景如下

  • my_star.compute(历元='-100000')
  • my_star.compute(-100000',epoch='-100000')
  • my_star.compute('-100000')
  • 对我来说,基于他对赤道望远镜的描述和第二个例子1066年对当代观测者的描述,我认为我应该选择第二个选项。也就是说,将纪元和年份都设置为古代或未来年份

    halley.compute(epoch='1066')
    这可能是无用的:它计算哈雷的当前位置,但返回相对于1066年地轴指向的方向的坐标。除非你使用征服时代的星图,否则这是没有用的

    halley.compute('1066',epoch='1066')
    这一点更有希望:它计算出1066年哈雷的位置,并返回当年地球方位的坐标。这可能有助于你想象这个物体是如何被放置在当代观察家之上的,他们认为这是英格兰国王哈罗德和私生子威廉之间即将爆发的冲突中的不祥预兆。但要在恒星背景下绘制此位置,首先必须重新计算每颗恒星在1066坐标系下的位置

    halley.compute('1066')
    这可能是你最常使用的;你在1066年得到了哈雷的位置,但用星图可能使用的2000坐标表示

    我之所以对我得到的描述如此不确定,是因为伊恩·里奇帕斯和里克·波格得到了不同的结果。这些相关结果的链接发布在github期刊上。Rick说,StarryNight的结果也证实了他的说法。我不介意我是否错了,我只是看到了哈雷的例子,我认为这是与一些人的结果相冲突的最好的例子

    我还不能在stackoverflow上发布很多链接(或者图片!),但是我在我的github上对此进行了详细的记录。我只是想非常清楚我在寻找什么,并向您展示可能的场景

    %pylab inline
    import ephem
    
    UMa = {
    'dubhe': 'αUMa', #HIP 54061
    'merak': 'βUMa', #HIP 53910
    'phecda':'γUMa', #HIP 58001
    'megrez':'δUMa', #HIP 59774
    'alioth':'εUMa', #HIP 62956
    'mizar': 'ζUMa', #HIP 65378
    'alcor': '80UMa',#HIP 65477
    'alcaid':'ηUMa', #HIP 67301
    }
    
    def const(const,year=None,epoch='2000',title=None):
        s = []
    
        for star in const.keys():
            s.append(ephem.star(star.capitalize()))
        
        for i in range(len(s)):
            if(year!=None):
                s[i].compute(year,epoch=epoch)
            else:
                s[i].compute(epoch=epoch)
        
        tau = 2.0 * pi
        degree = tau / 360.0
        hour = tau / 24.0
    
        ra_list = [star.a_ra / hour for star in s]
        dec_list = [star.a_dec / degree for star in s]
    
        mag_array = np.array([star.mag for star in s])
        size_array = (5 - mag_array) ** 1.5 * 4
    
        scatter(ra_list,dec_list,size_array)
        if(title!=None):
            pyplot.title(title)
        gca().xaxis.grid(True)
        gca().yaxis.grid(True)
        gca().invert_xaxis()
        return s
    
    如果您想测试两台IPython笔记本电脑,请参阅github上我的文件夹中的第1部分:
    property motion.ipynb
    和第2部分:
    bigpiper.ipynb

    北斗七星.ipynb
    示例中有很多代码,因此我不会将其发布在跟踪器中,但我会很快在博客上发布。请参阅上面的github问题链接,了解所有代码和图像

    我相信,不同的纪元和年份合在一起是我想要的关于古代观测者以自己的视角观察夜空和未来观测者以自己的视角观察夜空的描述。这有时很难理解,所以我非常喜欢社区在这个问题上的一些意见

    下面是代码的较小部分。
    北斗七星.ipynb
    笔记本显示了更全面的场景

    %pylab inline
    import ephem
    
    UMa = {
    'dubhe': 'αUMa', #HIP 54061
    'merak': 'βUMa', #HIP 53910
    'phecda':'γUMa', #HIP 58001
    'megrez':'δUMa', #HIP 59774
    'alioth':'εUMa', #HIP 62956
    'mizar': 'ζUMa', #HIP 65378
    'alcor': '80UMa',#HIP 65477
    'alcaid':'ηUMa', #HIP 67301
    }
    
    def const(const,year=None,epoch='2000',title=None):
        s = []
    
        for star in const.keys():
            s.append(ephem.star(star.capitalize()))
        
        for i in range(len(s)):
            if(year!=None):
                s[i].compute(year,epoch=epoch)
            else:
                s[i].compute(epoch=epoch)
        
        tau = 2.0 * pi
        degree = tau / 360.0
        hour = tau / 24.0
    
        ra_list = [star.a_ra / hour for star in s]
        dec_list = [star.a_dec / degree for star in s]
    
        mag_array = np.array([star.mag for star in s])
        size_array = (5 - mag_array) ** 1.5 * 4
    
        scatter(ra_list,dec_list,size_array)
        if(title!=None):
            pyplot.title(title)
        gca().xaxis.grid(True)
        gca().yaxis.grid(True)
        gca().invert_xaxis()
        return s
    
    如果我想模仿地球上的古代观察家或未来观察家,我们应该一起改变时代和时间

    他回答道


    谢谢你的帮助:)

    你能解释一下“1066年的当代观察家”是什么意思吗?你接着说,“但是要在恒星背景下绘制哈雷彗星的位置,你必须首先重新计算每颗恒星在1066坐标系下的位置。”不。你重新计算哈雷彗星在当时的天体方向。@WeatherVane嗨,对不起,听起来是一样的?你能解释一下区别吗?在《1066年的当代观察家》一书中,我引用了布兰登·罗德斯的例子。我期望的结果是看到天空,就像古人在历史上的位置看到天空一样。谢谢你的快速回复!看到你的消息来源说“意识到在这些例子中我一直很懒”,然后用你引用的三个场景原谅自己,我会对他的建议持保留态度。我制作了一台太阳系的计算机,所有已知的行星和卫星(但不是彗星)都可以随时间调整。为此,我需要它们在已知时间点的位置和运动矢量,以及它们的物理数据,其中大部分是从JPL发布的数据中获得的。包括彗星也不例外。年代和年代之间有什么区别?你从已知条件下倒带X秒。@我不使用pyephem,所以我不知道它后面的轮子,但一般来说:1。如果你设置了epoch,这意味着所有的时间计算都是相对于那个点的,所以离得越远(不管是未来还是过去),你得到的精度就越低。要将历元设置为某个合理接近的时间,您需要它的轨道数据,而您很可能无法获得这些数据。2.我非常怀疑JPL的数据,因为他们现在使用重力模拟,而不是Keppler的模型。Keppler的模型在短期内更准确,但在长期内也是如此off@electricwizard这就是为什么他们经常更新
    轨道常数的原因。下一个问题是恒星你需要计算它们的运动(不仅仅是进动/章动…它们也会自己运动…)一些星表有这些信息,但精确度是值得怀疑的。。。您希望如何检查正确性?(除非您在精确的时间/位置上有精确的坐标)。。。彗星模拟是最大的问题,因为任何靠近大质量物体的飞行都可能改变轨道,而我们仍然无法足够精确地解决它。。。(也不是相反)