您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 无法重现使用astropy获取的源之间的距离值

5b51 2022/1/14 8:22:59 python 字数 3001 阅读 569 来源 www.jb51.cc/python

我有两个赤道坐标(ra,dec)和(ra_0,dec_0)位于距离r和r_0的源,我需要计算它们之间的3D距离. 我使用两种方法,据我所知,应该给出相同的结果,但不是. 第一种方法是应用astropy的separation_3d功能.第二种方法是使用表达式给出两个具有球面坐标的源之间的距离: 如here所示. 在下面的MCVE中,返回的值是: 91.3427173002 pc 93.8470493

概述

我使用两种方法,据我所知,应该给出相同的结果,但不是.

第一种方法是应用astropyseparation_3d功能.第二种方法是使用表达式给出两个具有球面坐标的源之间的距离:

here所示.

在下面的MCVE中,返回的值是:

91.3427173002 pc
93.8470493776 pc

这两个值不应该相等吗?

MCVE

from astropy.coordinates import SkyCoord
from astropy import units as u
import numpy as np

# Define some coordinates and distances for the sources.
c1 = SkyCoord(ra=9.7*u.degree,dec=-50.6*u.degree,distance=1500.3*u.pc)
c2 = SkyCoord(ra=7.5*u.degree,dec=-47.6*u.degree,distance=1470.2*u.pc)

# Obtain astropy's distance between c1 & c2 coords.
print c1.separation_3d(c2)

# Obtain distance between c1 & c2 coords using explicit expression.
ra_0,dec_0,r_0 = c1.ra.radian,c1.dec.radian,c1.distance
ra,dec,r = c2.ra.radian,c2.dec.radian,c2.distance
alpha_delta_par = np.sin(dec) * np.sin(dec_0) * np.cos(ra - ra_0) +\
    np.cos(dec) * np.cos(dec_0)
d_pc = np.sqrt(r**2 + r_0**2 - 2*r*r_0*alpha_delta_par)
print d_pc

星体坐标将赤纬定义为天体赤道的北部,而球面坐标将极角θ定义为从垂直向下.

如果您通过在所有赤纬项中添加np.pi / 2来更改alpha_delta_par以解释此90°差异,则会得到

alpha_delta_par = np.sin(np.pi/2 + dec)*np.sin(np.pi/2 + dec0)*np.cos(ra - ra0) +\
np.cos(np.pi/2 + dec)*np.cos(np.pi/2 + dec0)

这给出了正确的结果:91.3427173002 pc.

原来物理学家通常使用符号θ作为极角,而数学家通常使用φ;我和θ一起去,因为我跟着我的心. @L_502_5@

总结

以上是编程之家为你收集整理的python – 无法重现使用astropy获取的源之间的距离值全部内容,希望文章能够帮你解决python – 无法重现使用astropy获取的源之间的距离值所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶