我有兩個來源與赤道座標(ra, dec)
和(ra_0, dec_0)
位於距離r
和r_0
,我需要計算它們之間的3D距離。不能再現距離值之間的距離值獲得與astropy
我使用兩種方法,應該給我相同的結果,據我瞭解,但不。
第一種方法是應用astropy的separation_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
我沒有安裝模塊,但提出了一個建議。你確定'SkyCoord()'完全知道你給它的角度值是多少? – Reti43
它沒有,這就是爲什麼我使用'* u.degree'和'* u.pc'來顯式使用單位的原因。 – Gabriel