数值:如何重新规范以下ODE


9

这个问题更多地是关于如何从数字上解决问题。

在一个小项目中,我想模拟Janus和Epimetheus的轨道运动。这基本上是一个三体问题。我选择土星固定在原点,令和分别是janus和epimetheus的位置向量。由于这种效果是在Janus和Epimetheus靠得很近时发生的,因此我选择了相对坐标以获得更好的分辨率,即和。现在,我得到以下运动方程:r1r2r=r1r2R=r1+r2

d2dt2(Rr)=G(m2±m1)RR34MG(r+R(r+R)3rR(rR)3)

其中mi对应于卫星的质量,M是土星的质量,G是引力常数。当我尝试以数值方式解决此问题时,就会出现问题。必须处理完全不同的大小的值,即Me28mie17。并且rR在0到150,000的范围内。

老实说,我不确定这是否是讨论此类数字问题的论坛。

更多信息:

代码是用Matlab编写的,我使用标准的ODE求解器来获取结果。但是,由于无法在机器精度下减小步长,因此这种方法正在崩溃。(我发现这并不奇怪,因为必须处理已经提到的数量级)。


2
您是否以SI单位运行此仿真?至少,应将所有内容除以G * m_ {2}的某个因子Gm2,以便可以消除几个数量级。

嗨,我这个,但是它仍然无法正常工作...发生与以前相同的问题。:(

您必须将质量单位设置为月球的质量之一,并且将长度/时间单位设置为1。如果写得好,任何东西都不应小于1/100。无需非处方药求解器。编写代码以自己完成此操作,并在此控制步进大小。在冲突时可能会发生具有这些类型电位的逐步分解,在这种情况下,求解器将尝试减小逐步分解直到收敛为止,而在冲突时则没有收敛。您需要确保轨道不是共线的,因此需要查看模拟。您无法原样获得答案。
罗恩·迈蒙

1
请避免标题缩写。DGL =差异化?

您使用什么标准的ODE求解器?
Geoff Oxberry 2012年

Answers:


2

您当前的方法破坏了数值稳定性;实际上,您可能会以这种方式失去分辨率。

将每个卫星的开普勒变量和包含卫星位置,速度和原点的平面角度作为坐标。这样,在卫星之间没有相互作用的情况下,微分方程就变得简单了,只有相互作用变得有些复杂。如果卫星距离较远,则相互作用很小,因此产生的动力学在数值上应该是稳定的。


2

可以使用专用算法进行几何数值积分,而不是使用“经典”(刚性)ODE求解器。例如,请参见本书以及您可以在Ernst Hairer网站上找到的GNI代码。


0

如果您在仿真中包含三个步骤,该怎么办:

  1. 通过计算Janus-土星力来更新Janus位置。
  2. 通过计算Epimetheus-土星力来更新Epimetheus位置。
  3. 通过计算Janus-Epimetheus力来更新Janus和Epimetheus位置。

可能为#3使用更精细的时间步长。

我不确定这是否有帮助。我想真正的问题是,除非卫星是近距离的,否则在月球和月球-土星的情况下,力的大小是不同的?

或者:

  1. 如果卫星闭合,则使用其质心矢量计算近似的卫星-土星力,并使用相同的矢量更新两个位置。
  2. 如果它们相距较远,请分别进行更新。
  3. 像以前一样。

祝你好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.