2015-03-03 3 views
-1

Я работаю над заданием, где мы должны запустить симуляцию для модели ракеты. Мне дана формула для положения ракеты, и мое задание - запустить симуляцию до тех пор, пока модельная ракета не вернется на землю и не напечатает расстояние ракеты на каждую секунду полета.Как остановить уравнение, когда результат равен 0?

Пользователь вводит начальную скорость, которая будет рандомизировать, как долго ракета будет в полете. У меня возникают проблемы с тем, как остановить цикл, когда ракета снова достигнет земли (0 футов). Я использовал цикл while:

while not position == 0: 

Это приводит к бесконечному циклу. Есть ли еще одно решение для этого?

+0

Можете ли вы опубликовать код, который у вас есть до сих пор? – electrometro

+2

Дикая догадка: после повторного входа ваша ракета слегка вливается в поверхность Земли, останавливаясь на высоте отрицательных 0,1 фута. Так как это не равно 0 футам, ваш цикл продолжается навсегда. – Kevin

+0

Возможный дубликат [Является ли математика с плавающей запятой?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –

ответ

1

Вероятность ракетного возвращения в точно уровня земли точно в момент времени шага является очень низким. Вместо этого попробуйте

while height > 0.: 
    simulate() 
-1

скорость вычислений очень быстрая, поэтому, возможно, вы можете вымарывать цифры рядом с концом. вы можете разделить процесс на две части для достижения своей цели. я предоставил нисходящую часть, чтобы дать вам идею

...your code to reach max velocity before coming down 
while height > 0: 
     kmh = kmh + randrange(0,1000) 
     height = height-kmh 
height = 0 
print height 
+0

плотина, люди соленые – LampPost

Смежные вопросы