Page 149 - 6734
P. 149

scipy.integrate.odeint – модель польоту снаряду
               Модель польоту снаряду, випущеного під кутом 45 градусів до
           горизонту. Систему диференціальних рівнянь другого порядку




           перетворимо в систему диференціальних рівнянь першого порядку








           де  x,  y  –  переміщення;  x’,  y’  –  швидкості.  Початкові  умови:  x=0,
           x’=50, y=0, y’=50. Знайти функції x, x’, y, y’.

           from scipy.integrate import odeint
           import numpy as np
           import matplotlib.pyplot as plt
           def deriv(xy,t):
               x=xy[0] # переміщення по x
               x_=xy[1] # швидкість по x
               y=xy[2] # переміщення по y
               y_=xy[3] # швидкість по y
               return np.array([x_, 0.0, y_, -9.8]) # повертає
           значення функцій dx/dt, dx'/dt, dy/dt, dy'/dt
           t = np.linspace(0.0, 10.0, 100) # час
           init = np.array([0.0, 50.0, 0.0, 50.0]) # початкові
           умови для x, x', y, y'
           xy = odeint(deriv, init, t) # інтегруємо систему диф.
           рівнянь, отримуємо масив [x, x', y, y']
           plt.plot(xy[:,0], xy[:,2]) # траєкторія

                                         148
   144   145   146   147   148   149   150   151   152   153   154