Verlet Leap-frog 近似轨道的方法

计算科学 模拟
2021-12-19 16:39:45

在给定椭圆的半长轴、偏心率、初始速度、被轨道物体的质量和轨道卫星的初始位置的情况下,我发现了以下轨道模拟。

该程序基本上以以下初始条件开始:

hstepSizeasemiMajorAxiseeccentricitygGM/aX0=(a(1+e),0,0)Vo=(0,g(1e)(1+e),0)

给定这些初始条件,下一个状态计算如下:

Xtemp=X0+(h2)V0r3(x02+yo2)3Acctemp=GMr3(Xtemp)V1=V0+hAcctempX1=Xtemp+h2V1

近似值相应地继续,精度随着较小的 stepSize 值的增加而增加。

假设我以一种有意义的方式呈现了这个,我的问题是关于我的结果。看看我的模拟:

http://zixg.com/orbits/

注意两个静止的蓝点。这些代表具有半长轴“a”和偏心率“e”的椭圆的远地点和近地点(因此,类似太阳的物体以相应的焦点为中心)。因此,这种方法似乎根本不近似初始椭圆,而是导致轨道轨迹比最初假设的椭圆大得多。我不知道该怎么做?

1个回答

查看您的代码:

var v = new Array(0, Math.sqrt((g*(1-e))/1+e), 0);

您似乎在 (1+e) 周围缺少一组括号。应该:

var v = new Array(0, Math.sqrt((g*(1-e))/(1+e)), 0);