Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- from scipy.integrate import odeint
- # Визначення системи диференціальних рівнянь для "Хижак-Жертва"
- def predator_prey_system(y, t):
- x, z = y
- dydt = [2*x - 2*z, x - z]
- return dydt
- # Визначення системи диференціальних рівнянь для "Активатор-Інгібітор"
- def activator_inhibitor_system(y, t):
- u, v = y
- dydt = [u*(3 - u - v), v*(u - 1)]
- return dydt
- # Функція для побудови фазового портрету
- def plot_phase_portrait(system, title, xlabel, ylabel, y0, t):
- sol = odeint(system, y0, t)
- plt.plot(sol[:, 0], sol[:, 1], label='Фазовий портрет')
- plt.title(title)
- plt.xlabel(xlabel)
- plt.ylabel(ylabel)
- plt.axis('equal')
- plt.legend()
- plt.grid(True)
- plt.show()
- # Означимо матриці систем
- A_predator_prey = np.array([[2, -2],
- [1, -1]])
- A_activator_inhibitor = np.array([[3, -1],
- [1, -1]])
- # Розрахунок власних значень
- eigenvalues_predator_prey = np.linalg.eigvals(A_predator_prey)
- eigenvalues_activator_inhibitor = np.linalg.eigvals(A_activator_inhibitor)
- # Виведемо власні значення
- print("Власні значення матриці A (Хижак-Жертва):", eigenvalues_predator_prey)
- print("Власні значення матриці A (Активатор-Інгібітор):", eigenvalues_activator_inhibitor)
- # Перевірка на стійкість положення рівноваги для "Хижак-Жертва"
- if all(eig_real < 0 for eig_real in eigenvalues_predator_prey.real):
- print("Положення рівноваги для системи 'Хижак-Жертва' є стійким.")
- else:
- print("Положення рівноваги для системи 'Хижак-Жертва' нестійким.")
- # Перевірка на стійкість положення рівноваги для "Активатор-Інгібітор"
- if all(eig_real < 0 for eig_real in eigenvalues_activator_inhibitor.real):
- print("Положення рівноваги для системи 'Активатор-Інгібітор' є стійким.")
- else:
- print("Положення рівноваги для системи 'Активатор-Інгібітор' нестійким.")
- # Задання початкових умов і часу
- y0_predator_prey = [-10.0, 10.0] # початкові значення x і z для "Хижак-Жертва"
- y0_activator_inhibitor = [1.0, 1.0] # початкові значення u і v для "Активатор-Інгібітор"
- t = np.linspace(0, 100, 1000) # часовий проміжок
- # Побудова фазових портретів для обох систем
- plot_phase_portrait(predator_prey_system, 'Фазовий портрет системи "Хижак-Жертва"', 'Хижак (x)', 'Жертва (z)', y0_predator_prey, t)
- plot_phase_portrait(activator_inhibitor_system, 'Фазовий портрет системи "Активатор-Інгібітор"', 'Активатор (u)', 'Інгібітор (v)', y0_activator_inhibitor, t)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement