Advertisement
mirosh111000

pr7

Dec 23rd, 2023
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.35 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from scipy.integrate import odeint
  4.  
  5.  
  6. # Визначення системи диференціальних рівнянь для "Хижак-Жертва"
  7. def predator_prey_system(y, t):
  8.     x, z = y
  9.     dydt = [2*x - 2*z, x - z]
  10.     return dydt
  11.  
  12. # Визначення системи диференціальних рівнянь для "Активатор-Інгібітор"
  13. def activator_inhibitor_system(y, t):
  14.     u, v = y
  15.     dydt = [u*(3 - u - v), v*(u - 1)]
  16.     return dydt
  17.  
  18. # Функція для побудови фазового портрету
  19. def plot_phase_portrait(system, title, xlabel, ylabel, y0, t):
  20.     sol = odeint(system, y0, t)
  21.     plt.plot(sol[:, 0], sol[:, 1], label='Фазовий портрет')
  22.     plt.title(title)
  23.     plt.xlabel(xlabel)
  24.     plt.ylabel(ylabel)
  25.     plt.axis('equal')
  26.     plt.legend()
  27.     plt.grid(True)
  28.     plt.show()
  29.  
  30.    
  31. # Означимо матриці систем
  32. A_predator_prey = np.array([[2, -2],
  33.                             [1, -1]])
  34.  
  35. A_activator_inhibitor = np.array([[3, -1],
  36.                                   [1, -1]])
  37.  
  38. # Розрахунок власних значень
  39. eigenvalues_predator_prey = np.linalg.eigvals(A_predator_prey)
  40. eigenvalues_activator_inhibitor = np.linalg.eigvals(A_activator_inhibitor)
  41.  
  42. # Виведемо власні значення
  43. print("Власні значення матриці A (Хижак-Жертва):", eigenvalues_predator_prey)
  44. print("Власні значення матриці A (Активатор-Інгібітор):", eigenvalues_activator_inhibitor)
  45.  
  46. # Перевірка на стійкість положення рівноваги для "Хижак-Жертва"
  47. if all(eig_real < 0 for eig_real in eigenvalues_predator_prey.real):
  48.     print("Положення рівноваги для системи 'Хижак-Жертва' є стійким.")
  49. else:
  50.     print("Положення рівноваги для системи 'Хижак-Жертва' нестійким.")
  51.  
  52. # Перевірка на стійкість положення рівноваги для "Активатор-Інгібітор"
  53. if all(eig_real < 0 for eig_real in eigenvalues_activator_inhibitor.real):
  54.     print("Положення рівноваги для системи 'Активатор-Інгібітор' є стійким.")
  55. else:
  56.     print("Положення рівноваги для системи 'Активатор-Інгібітор' нестійким.")
  57.    
  58. # Задання початкових умов і часу
  59. y0_predator_prey = [-10.0, 10.0]  # початкові значення x і z для "Хижак-Жертва"
  60. y0_activator_inhibitor = [1.0, 1.0]  # початкові значення u і v для "Активатор-Інгібітор"
  61. t = np.linspace(0, 100, 1000)  # часовий проміжок
  62.  
  63. # Побудова фазових портретів для обох систем
  64. plot_phase_portrait(predator_prey_system, 'Фазовий портрет системи "Хижак-Жертва"', 'Хижак (x)', 'Жертва (z)', y0_predator_prey, t)
  65. plot_phase_portrait(activator_inhibitor_system, 'Фазовий портрет системи "Активатор-Інгібітор"', 'Активатор (u)', 'Інгібітор (v)', y0_activator_inhibitor, t)
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement