MATLAB:跟踪航天器的方向-精度损失

piok6c0g  于 6个月前  发布在  Matlab
关注(0)|答案(1)|浏览(60)

假设你有一个我们称之为“dir“的目标方向,一个以地球为中心的酉向量,现在,你有了航天器的轨道,它正朝着太阳系的边界行进,每个位置都在日心坐标系中给出(见图)。你只想知道航天器是否保持目标方向“dir“。想象一下,除了航天器之外,没有任何东西在移动。然后,对于每个日心位置,你做以下事情:
r_A = r-r_Earth
其中r_A是第一个点的地心位置向量,那么你应该对每个点都做,所以你计算r_A的方向,然后把它和“dir”进行比较。
重要提示:我们想象没有力作用在s/c上,所以轨迹是直的。
这看起来很简单,但当s/c离太阳越来越远时,r会越来越大,“r-r_Earth”操作会带来显著性损失误差。想象一下,我们将实际方向和目标方向之间的误差量化为它们之间的Angular ,这些Angular 从0开始,然后达到10^-4。这不应该发生,因为轨迹是直的,没有偏差应该被观察到。如果你需要,我可以给你一个小代码这个问题。非常感谢你的帮助伙计。[Here the image](https://i.stack.imgur.com/jfiuJ.jpg
我希望在方向上总是有0个错误。

mwngjboj

mwngjboj1#

如果我理解正确的话,由于r的值变得更大而导致的舍入误差会导致精度下降。我的猜测是由于Matlab用于其双精度的精度位数有限而导致的舍入误差。
避免舍入错误的一个选择是使用Matlab的符号数学函数切换到符号计算,参见this article on increasing precisionthis one covering round-off errors
另一个想法是改变r的单位,例如,改为Au或其他自定义单位。但我想这取决于您需要的精度水平。

相关问题