我正在尝试运行一个Python脚本,该脚本从地面计算物体的轨迹,高于100,000米,然后回到100,000米以下。我希望能够计算出超过100,000米的时间。我的轨迹代码很好(Runge-Kutta),我可以达到10万米。但是,我无法找到合适的Python算法来保持最高海拔高度并开始降至100,000米以下。
这就是我所拥有的:
while (states[4,(i - 1)] >= 100000 and states[4,i] <= 100000 or states[4,i] != 100000):
states[4,i]
是海拔高度。我的想法是,如果之前的(i - 1
)高度超过100,000米且当前(i
)高度低于100,000米,我希望它退出while循环。 states[4,i] != 100000
旨在让我达到那个高度,至少。
思想?
答案 0 :(得分:1)
我相信你在这里遇到的问题是你需要跟踪你何时越过海拔高度。为什么不在循环之前将变量设置为false,然后在达到&gt; = 100000时将其设置为true,并将其添加到您的while。此外,这些条件是用于离开你的循环,所以你应该否定它。 E.g。
reachedHeight = False
while (not (reachedHeight and states[4,(i - 1)] >= 100000 and states[4,i] <= 100000)):
if (not reachedHeight and states[4,i] >= 100000):
reachedHeight = True
...
也可以是循环中断的条件。
答案 1 :(得分:1)
上面的while
循环将继续循环,除非states[4,i]
等于完全 100,000。
False and False or True == True
这可能是您遇到无限循环的原因。您可能希望删除第三种情况,并在必要时在循环内执行其他检查。