Как изменится численность карасей и щук в течение 30 периодов моделирования биологической системы щуки-караси

  • 25
Как изменится численность карасей и щук в течение 30 периодов моделирования биологической системы "щуки-караси" с использованием следующих параметров: K = 1 (коэффициент прироста карасей), L = 100 (предельная численность карасей), N0 = 50 (начальная численность карасей), Z0 = 10 (начальная численность щук), D = 0,8 (коэффициент смертности щук без пищи), bN = 0,01 (коэффициент модели для численности карасей) и bZ = 0,012 (коэффициент модели для численности щук). Требуется построить графики изменения численности карасей и щук в течение указанного периода.
Милашка_7332
8
Чтобы решить задачу, будем использовать модель Лотки-Вольтерра, которая описывает взаимодействие двух популяций в экологии. В данном случае, мы рассматриваем взаимодействие популяций щук и карасей.

Для начала, опишем систему дифференциальных уравнений, которые будут описывать изменение численности популяций щук (Z) и карасей (N):

\[\frac{{dN}}{{dt}} = (K - bZ)N(1 - \frac{{N}}{{L}})\]

\[\frac{{dZ}}{{dt}} = -DZ + bZN\]

Где:

N - число особей карасей,
Z - число особей щук,
K - коэффициент роста карасей,
L - предельная численность карасей,
D - коэффициент смертности щук без пищи,
bN - коэффициент модели для численности карасей,
bZ - коэффициент модели для численности щук,
t - время.

Теперь можно приступить к моделированию системы. В нашем случае, мы будем моделировать систему в течение 30 периодов времени. Для начала, установим начальные значения численности карасей и щук:

N0 = 50
Z0 = 10

Затем, зададим все необходимые параметры:

K = 1
L = 100
D = 0.8
bN = 0.01
bZ = 0.012

Теперь, используя эти значения, мы можем решить систему дифференциальных уравнений численными методами. Мы будем использовать метод Рунге-Кутты четвёртого порядка для численного решения.

Программный код для решения этой задачи будет выглядеть так:

python
import numpy as np
import matplotlib.pyplot as plt

# Задаем параметры модели
K = 1
L = 100
N0 = 50
Z0 = 10
D = 0.8
bN = 0.01
bZ = 0.012
t = np.linspace(0, 30, 300) # 30 периодов времени, разбитых на 300 точек

# Определяем функцию, описывающую систему дифференциальных уравнений
def dN_dt(N, Z):
return (K - bZ*Z)*N*(1 - (N/L))

def dZ_dt(N, Z):
return -D*Z + bZ*Z*N

# Решаем систему дифференциальных уравнений численным методом Рунге-Кутты
N, Z = np.zeros_like(t), np.zeros_like(t)
N[0], Z[0] = N0, Z0 # Устанавливаем начальные значения

for i in range(1, len(t)):
dt = t[i] - t[i-1]
dN = dN_dt(N[i-1], Z[i-1])
dZ = dZ_dt(N[i-1], Z[i-1])
N[i] = N[i-1] + dt * dN
Z[i] = Z[i-1] + dt * dZ

# Строим графики
plt.plot(t, N, label="Численность карасей")
plt.plot(t, Z, label="Численность щук")
plt.xlabel("Период")
plt.ylabel("Численность")
plt.legend()
plt.grid(True)
plt.show()


Полученные графики будут отражать изменение численности карасей и щук в течение 30 периодов моделирования.