#python #projectile
#python #снаряд
Вопрос:
Я пишу код для построения нескольких траекторий полета снаряда с различными значениями тета в Python.
theta = np.arange(np.pi/6, np.pi/3)
t = np.linspace(0,2,num=100)
while y0>=0:
for i in theta:
x = []
y = []
for k in t:
x0= v_0*np.cos(i)*k
y0= v_0*np.sin(i)*k - 1/2*g*(k**2)
x.append(x0)
x.append(y0)
После формирования массивов и ввода необходимых условий для projectile я использовал цикл while, чтобы поместить завершающую инструкцию в программу. Я думаю, я упускаю важный момент. Спасибо!
Ответ №1:
Я думаю, вы хотите, чтобы ваше условие завершения находилось внутри вашего самого внутреннего цикла. Смотрите ниже, где я также определил пару отсутствующих констант ( v_0
, g
) и исправил одну x
y
. также печать результатов
theta = np.arange(np.pi/6, np.pi/3)
t = np.linspace(0,2,num=100)
v_0 = 1
g=10
for i in theta:
x = []
y = []
for k in t:
x0= v_0*np.cos(i)*k
y0= v_0*np.sin(i)*k - 1/2*g*(k**2)
x.append(x0)
y.append(y0)
if y0 < 0: # the main change here. Stop looping when y_0 below zero
break
print(f'theta:{i}')
print(f'x:{x}')
print(f'y:{y}')
производит
theta:0.5235987755982988
x:[0.0, 0.017495462702715934, 0.03499092540543187, 0.052486388108147805, 0.06998185081086374, 0.08747731351357968]
y:[0.0, 0.008060401999795939, 0.012039587797163551, 0.011937557392102841, 0.007754310784613805, -0.0005101520253035577]
Построение графика (y против x) выглядит разумно
Также стоит отметить, что ваше определение theta = np.arange(np.pi/6, np.pi/3)
выглядит довольно странно, чего вы пытаетесь здесь добиться?
Комментарии:
1. Я пытаюсь создать диапазон значений Theta для программы, которая должна быть запущена. Таким образом, первый цикл for повторяет значения theta в течение непрерывного интервала времени (выполняется вторым циклом for).
2. @Manu тогда вы также должны включить шаг, в противном случае step = 1, что вряд ли то, что вы хотите. так что установите, например
theta = np.arange(np.pi/6, np.pi/3, np.pi/24)
3. О, спасибо, я думаю, я понял. Но вопрос в том, почему мы получаем только один график вместо трех траекторий для трех значений тета?
4. вы должны поместить команду построения графика, где
print(...)
операторы, естественно, с одинаковым смещением, которые будут выполняться для каждого значения theta