日心位置

2024-06-01 06:01:24 发布

您现在位置:Python中文网/ 问答频道 /正文

用太阳系程序来计算行星经度吗?在

如果我只做:

mercury(utc=(1980, 1, 1)).ecliptic_latlon()

我得到了一个重心物体,因此纬度和经度与日心值不匹配。在

我试过了: sun(utc=(1980, 1, 1)).observe(jupiter) 但这也带来了错误:

skyfield/relativity.py:128: RuntimeWarning: invalid value encountered in true_divide
ehat = pe / emag
skyfield/relativity.py:144: RuntimeWarning: divide by zero encountered in double_scalars
fac1 = 2.0 * GS / (C * C * emag * AU_M * rmass)

使用python3.4,skyfield0.4, de423

谢谢!在


Tags: inpy程序行星utc太阳系divideskyfield
2条回答

非常感谢布兰登。有了你的答案,我很快就发现了问题所在:而不是仅仅用:
sun(utc=(1980, 1, 1)).observe(jupiter)
我接着试图创建一个明显的对象:
astrometric = sun(utc=(1980, 1, 1)).observe(jupiter) apparent = astrometric.apparent()
这就是造成错误的原因。

1) 但这给我留下了一个难题:
获得的经度和纬度值为:
+151度19'21.7“
01度00'46.7“
我查了一下JPL Horizon的在线站点,他们得到的值几乎完全相同。
然而,在Java程序中,helios(以经度为中心)的值也是基于jpi编写的: 151度02'
在网上搜索日心星历表时,我立刻发现了一个星历表(http://www.astro.com/swisseph/ahel/1900/ahel1980.pdf),它也表示+151deg02'。
知道为什么有两组值吗?

2) 顺便说一句,stackoverflow是问这些问题的合适地方吗?在

再次感谢!在

使用Python 3.4和Skyfield 0.4,我可以运行:

from skyfield.api import sun, jupiter
p = sun(utc=(1980, 1, 1)).observe(jupiter)
lat, lon, d = p.ecliptic_latlon()
print(lat)
print(lon)

然后得到结果:

^{pr2}$

我想知道在你的例子中,是什么使得引用的等式返回除以零的结果?你的方法是正确的,顺便说一句-日心位置是从太阳来测量的,而不是从太阳系的中心来测量的,所以你做的事情完全正确!在

如果您可以将print语句添加到Skyfield源代码中错误行的正上方,那么看看分母中的哪些值将变为零是很有趣的!在

相关问题 更多 >