#orbit #aerospace #astronomy #lambert #orbits

lambert-bate

快速求解Lambert问题的工具

1个不稳定版本

0.1.0 2022年6月14日

#1034 in 数学

MIT许可证

16KB
274

lambert-bate

一个轻量级的Lambert问题求解器。使用《天体动力学基础》中引入的通用变量方法(Bate, Mueller, 和 White, 1971)。这种方法在《Lambert问题综述》文章(《Review of Lambert's Problem》Sangrà and Fantino, 2021)中调查的方法中,被发现是最快的收敛方法。

Lambert问题

Lambert问题是给定卫星轨道上的两点及其之间的飞行时间,计算卫星轨道。它在许多方面都有应用,从规划航天器交会到轨道确定。没有公式可以将轨道参数作为这些参数的函数,但存在一个相当直接的表达式,可以使用牛顿法找到解。

在这里,我们只求解卫星在轨道上的两个已知点的速度。如果需要其他轨道参数,可以很容易地从这些值中计算出来。例如,可以从固定时间的位置和速度中轻松地获得轨道能量,这给出半长轴。轨道角动量也被确定,从而得到半通径。

基准测试

对随机选择的、以原点为中心、边长为1e11米的立方体内分布的位置进行10,000次调用get_velocities。比较了执行时间和每次函数调用的耗时与Python lamberthub库(版本0.1)中实现的算法作为参考。

由于Rust比Python具有速度优势,lambert-bate比Python实现快50多倍。

算法名称 总时间(ms) 每次函数调用时间(μs)
lambert-bate(本crate) 36 3.6
lamberthub.izzo2015(Python) 2,700 270
lamberthub.gooding1990(Python) 3,700 370
lamberthub.avanzini2008(Python) 14,000 1,400

变更日志

  • 版本0.1.0(2022年6月14日):lambert-bate发布。

无运行时依赖