你需要重新考虑问题陈述和初始条件。最初的职位不可能在附近100米因为这几乎是在地球的中心。在附近和初始速度为0.1米/秒也不合理,因为这会有效地生产出近直线运动与一切下降几乎垂直向下。这些应该是“相对”位置和速度一些参考圆轨道高度呢?
也不知道为什么你正在运行一个N体问题首先不是N单独2-Body问题。你想模拟弱引力相互作用的影响4小身体轨道时关闭组高于地球更大?或者…?
你列表的质量每个小身体10 ^ 10公斤,但如果我做了我的计算正确的球形岩石的质量会有一个半径约98米。这意味着这些小的身体几乎触摸对方。这是目的吗?
你当前的描述与初始位置,速度,和群众并没有意义,你需要正确的这和发布一个更新你的问题。
注:很难跟随你的索引,但乍一看速度衍生品看起来不正确。我希望看到累积向量添加计算这些衍生品,但我看不出。我可以建议你重塑你的状态向量进入3 x2n矩阵简化你的索引。例如,
然后第一个体位只是Y(: 1)和它的速度是Y (:, 2)。第二身体Pos &韦尔是Y(:, 3)和Y (:, 4)。n体Pos &韦尔(:2 * n - 1)和Y (: 2 * n)。等等。这将是更容易编写代码下游比你现在所拥有的东西。
或者你可以重塑一个6 xn矩阵,例如,
然后第一个体位是Y(1:3, 1)和速度是Y (4:6 - 1)。第二身体Pos &韦尔(1:3,2)和Y (4:6 - 2)。n体Pos &韦尔(1:3,n)和Y (4:6 - n)。等。
我猜你甚至可以可爱,创建两个辅助索引变量:
然后第n个身体位置和速度是Y (pos, n)和Y(韦尔,n)下游这将使你的代码更加可读。
例如,使用最后一个方案可以得到一行中的所有位置衍生品:
然后运行循环填写dYdt(韦尔:)部分。
后计算3 x2n或6 xn矩阵导数dYdt,然后重塑为返回一个列向量的目的: