Ниже находится код программы, которая позволяет с помощью Python численно решить систему дифференциальных уравнений, описывающих движение тела, брошенного под углом к горизонту, с учётом сопротивления воздуха.
Видео с пояснениями можно посмотреть на рутубе: https://rutube.ru/video/0b2c22aa428dad0549206b3f3d9f7a96/
Также вы можете скачать отдельно файл с программой из тг-канала: https://t.me/oldfiz/6
import numpy as np
import scipy
import matplotlib.pyplot as plt
def sys_x(z,t):
x,Vx = z
dx_dt=Vx
dV_dt=-alpha*Vx
return [dx_dt, dV_dt]
def sys_y(z2,t):
y,Vy = z2
dy_dt=Vy
dV2_dt=-alpha*Vy-g
return [dy_dt, dV2_dt]
g=9.81
V0=10
gamma_=45
gamma=gamma_*np.pi/180
z0x=[0,V0*np.cos(gamma)]
z0y=[0,V0*np.sin(gamma)]
td=2*V0*np.sin(gamma)/g #оценочное время полёта
t_eval=np.linspace(0,td,500)
for ii in range(0,4):
alpha=0.001+3*ii/4
#alpha=0.001
sol_x=scipy.integrate.odeint(sys_x,z0x,t_eval)
sol_y=scipy.integrate.odeint(sys_y,z0y,t_eval)
kk=0
while sol_y[kk,0]>0 or sol_y[kk,0]==0: kk=kk+1
x1=sol_x[0:kk,0]
y1=sol_y[0:kk,0]
#plt.plot(sol_x[:,0],sol_y[:,0])
plt.plot(x1,y1,label=f'alpha={alpha}',linewidth=3)
plt.grid(True)
plt.legend()
plt.show()