当前位置:  开发笔记 > 编程语言 > 正文

无法再现使用星座获得的源之间的距离值

如何解决《无法再现使用星座获得的源之间的距离值》经验,为你挑选了1个好方法。

我有两个来源与赤道坐标(ra, dec)(ra_0, dec_0)位于距离rr_0,我需要计算它们之间的3D距离.

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

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

在此输入图像描述

如图所示这里.

在下面的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

Cody Piersal.. 9

这是坐标系的问题,赤纬(星体坐标)和极角θ(球面坐标)之间的差异:-)

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

如果您alpha_delta_par通过添加np.pi/2所有赤纬条款来更改您对该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.

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



1> Cody Piersal..:

这是坐标系的问题,赤纬(星体坐标)和极角θ(球面坐标)之间的差异:-)

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

如果您alpha_delta_par通过添加np.pi/2所有赤纬条款来更改您对该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.

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

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有