Есть ли способ использовать np.array в коде

Я хотел знать, есть ли способ преобразовать этот код в код np.array. затем добавьте его в ссылку. Я хотел добавить угол, с которого мяч вылетает.

import numpy as np
import scipy as sp
from scipy.integrate import ode
import matplotlib.pylab as pl
import matplotlib.pyplot as plt
import math
from matplotlib import*
from matplotlib.pyplot import *
from __future__ import division
import math

 def projectile_xy(initPos,g,initVel):
    data_xy = []
    initTime = 0.0
    while True:

теперь вычисляем высоту y

        y = initPos + (initTime * initVel * math.sin(theta)) - (g * initTime * initTime)/2

снаряд достиг уровня земли

        if y < 0:
            break

рассчитать расстояние х

        x = initVel * math.cos(theta) * initTime

добавить кортеж (x, y) в список

        data_xy.append((x, y))

используйте время с шагом 0,1 секунды

        initTime += 0.1
    return data_xy

g = 9.8
#h = float(raw_input("Enter the height "))
initPos = float(raw_input("Enter the height "))
der = float(raw_input("Enter the angle "))
#v = float(raw_input("Enter velocity ")) 
initVel = float(raw_input("Enter velocity ")) 


theta = math.radians(der)  # radians
data_der = projectile_xy(initPos,g,initVel)

найти максимальную высоту...

point_height_max = max(data_der, key = lambda q: q[1])
xm, ym = point_height_max
x_max = max(data_der)[0]

print('''
Projectile Motion ...
Using a firing angle of {} degrees
and a muzzle velocity of {} meters/second
the maximum height is {:0.1f} meters
at a distance of {:0.1f} meters'''.format(der, initVel, ym, xm))
print "maximum distance" ,(x_max)

Введите высоту 1 Введите угол 45 Введите скорость 30

Projectile Motion ...
Using a firing angle of 45.0 degrees
and a muzzle velocity of 30.0 meters/second
the maximum height is 24.0 meters
at a distance of 46.7 meters
maximum distance 91.2167747731

person Dom    schedule 01.06.2015    source источник


Ответы (1)


Вы можете следовать этому подходу:

import numpy as np

linear_vel = 20
ang = np.pi/3
y=10
x=12
g=9.8
y_vel =  linear_vel*np.cos(ang)
x_vel =  linear_vel*np.sin(ang)


t = (y_vel+np.sqrt(y_vel**2+2*g*y))/g   #time when projectile hits               ground
n= 20 #number of instances of time you want

time_values = np.linspace(0,int(t),n)
axes = np.zeros((2,n))

for i in range(0,n):
    axes[0,i]=x_vel*time_values[i]
    axes[1,i]=y_vel*time_values[i]-0.5*g*time_values[i]**2



#print time_values
#print axes
person HelloWorld.c    schedule 01.06.2015
comment
Вы можете использовать широковещание: axes[0] = x_vel * time_values и axes[1] = y_vel * time_values - 0.5 * g * time_values ** 2 и избавиться от цикла for. - person ryanpattison; 01.06.2015