python – 无法重现使用astropy获取的源之间的距离值
发布时间:2020-12-05 06:54:51 所属栏目:Python 来源:互联网
导读:我有两个赤道坐标(ra,dec)和(ra_0,dec_0)位于距离r和r_0的源,我需要计算它们之间的3D距离. 我使用两种方法,据我所知,应该给出相同的结果,但不是. 第一种方法是应用astropy的separation_3d功能.第二种方法是使用表达式给出两个具有球面坐标的源之间的距离: 如
|
我有两个赤道坐标(ra,dec)和(ra_0,dec_0)位于距离r和r_0的源,我需要计算它们之间的3D距离. 我使用两种方法,据我所知,应该给出相同的结果,但不是. 第一种方法是应用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
解决方法这是坐标系的问题,赤纬(星体坐标)和极角θ(球面坐标)之间的差异:-)星体坐标将赤纬定义为天体赤道的北部,而球面坐标将极角θ定义为从垂直向下. 如果您通过在所有赤纬项中添加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. 原来物理学家通常使用符号θ作为极角,而数学家通常使用φ;我和θ一起去,因为我跟着我的心. I’m not making this up I swear. (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 如何以有效的方式找到两个轮廓集之间的所有交点
- python – Django中的ValidationError
- python – 什么是django.utils.functional .__ proxy__对象
- python – 是否可以使用__rmod__覆盖str的%行为?
- 为什么在Python中不能统一处理集合?
- python – 如何在PyCharm中找到所有未使用的类的方法?
- 在Python Celery中,如何在连续的工作调用中持久保存对象?
- python – 为什么最后一个命令变量“_”不出现在dir()中?
- python – Fedora上的psycopg2
- Django表单重定向失败 – 页面未找到错误
推荐文章
站长推荐
- python – Pygraphviz / networkx设置节点级别或
- python – Numpy相当于if / else list comprehen
- python – 具有超类类名称的子类变量
- python – django collectstatic overriding
- 如何在TkInter中创建子窗口并与父进行通信
- 在python列表解析中解包元组(未使用* -operator)
- 如何在Python中有效地编码bigram计数和替换的字节
- python – 如何找到可能有重复数字的3个列表之间
- python – 为什么最后一个命令变量“_”不出现在
- python – 如何将列表或字符串解析为固定长度的块
热点阅读
