1个不稳定版本
0.1.0 | 2022年6月14日 |
---|
#1034 in 数学
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
发布。