Как создать условие для прекращения добавления?

#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