Advertisement
mirosh111000

pr4

Dec 24th, 2023
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. import numpy as np
  2. from scipy.integrate import odeint
  3. import matplotlib.pyplot as plt
  4.  
  5. # Визначення параметрів
  6. A = 10
  7. m = 10
  8. r1 = 1
  9. r2 = 1.1
  10. r3 = 4
  11.  
  12. # Обчислення констант B, C та D
  13. B = (4/3) * A * (1/r1**4 + 1/r2**4 + 1/r3**4)
  14. C = 2 * A * (1/(r1**4*r2**4) + 1/(r2**4*r3**4) + 1/(r1**4*r3**4))
  15. D = 4 * A / (r1**4 * r2**4 * r3**4)
  16.  
  17. # Визначення функції для системи диференціальних рівнянь
  18. def model(Y, t):
  19.     return [Y[1]/m, 16*A/(Y[0]**17 - 12*B/(Y[0]**13) + 8*C/(Y[0]**9) - 4*D/(Y[0]**5))]
  20.  
  21. # Визначення часового інтервалу
  22. tspan = np.linspace(0, 100, 1000)  # Змініть кількість точок за потреби
  23.  
  24. # Визначення початкових умов
  25. q0_values = np.linspace(0.1, 2, 20)
  26. p0_values = np.zeros_like(q0_values)
  27.  
  28. # Ініціалізація масивів для збереження результатів
  29. q_values = []
  30. p_values = []
  31.  
  32. # Розв'язання диференціальних рівнянь для різних початкових умов
  33. for q0, p0 in zip(q0_values, p0_values):
  34.     Y = odeint(model, [q0, p0], tspan)
  35.    
  36.     # Додавання результатів до списків
  37.     q_values.append(Y[:, 0])
  38.     p_values.append(Y[:, 1])
  39.  
  40. # Побудова фазового портрету
  41. plt.figure()
  42. for q, p in zip(q_values, p_values):
  43.     plt.plot(q, p)
  44.  
  45. plt.xlabel('Розтяг (q)')
  46. plt.ylabel('Імпульс (p)')
  47. plt.title('Фазовий портрет осцилятора')
  48. plt.grid(True)
  49. plt.show()
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement