Ниже находится код программы, которая позволяет с помощью 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()

От IvanPetrov