0

我尝试构建一些函数来计算太阳经度,通常缩写为Ls,是太阳的黄道经度,即太阳在天球上沿黄道的位置。

例如,当输入日期 07/Nov/2021 时,它将返回 225.08684077988164。我在 python 上搜索了一些库,但它主要返回 Equinox 的日期。

我找到了一些代码来手动计算它,但也停留在最后一行。

JD是朱利安日期(输入日期+位置后,我会计算它)

定义学位的最后一步

T = (JD - 2451545.0) / 36525

L0 = 280°.46645 + 36000°.76983*T + 0°.0003032*T2

M = 357°.52910 + 35999°.05030*T - 0°.0001559*T2 - 0°.00000048*T3

C = (1°.914600 - 0°.004817*T - 0°.000014*T2) * sin M + (0°.01993 - 0°.000101*T) * sin 2M + 0°.000290 * sin 3M

theta = L0 + C

lambda = theta - 0.00569 - 0.00478 * sin(125°.04 - 1934°.136*T)

**lambda = lambda - 360 * [lambda/360]**

但在最后一行公式似乎是错误的,因为它总是返回 0

4

1 回答 1

0

如果您想在 Skyfield 中做同样的事情(您将其添加为标签,所以我假设您会欢迎使用它的答案),其文档的“其他参考框架中的坐标”部分指向此方法:

https://rhodesmill.org/skyfield/api-position.html#skyfield.positionlib.ICRF.frame_latlon

将该方法与黄道参考系一起使用,您将获得:

from skyfield import api
from skyfield.framelib import ecliptic_frame

ts = api.load.timescale()
t = ts.utc(2021, 11, 7)
eph = api.load('de421.bsp')
astrometric = eph['Earth'].at(t).observe(eph['Sun'])
lat, lon, distance = astrometric.frame_latlon(ecliptic_frame)

print(lon.degrees)

要确定为什么它的答案略有不同,您必须深入研究 Skyfield 的所有数学,以及为您生成该数字的方程式中的所有数学,并确定哪个数学具有更高的精度并最能反映真实的运动地球和太阳。

于 2021-11-08T13:16:12.967 回答