WPROWADZENIE
Model Lotki-Volterry to klasyczne narz臋dzie w ekologii, s艂u偶膮ce do opisania dynamicznych relacji mi臋dzy dwiema populacjami: drapie偶nika i ofiary. Model zak艂ada, 偶e wzrost populacji ofiar jest hamowany przez obecno艣膰 drapie偶nik贸w, a wzrost populacji drapie偶nik贸w zale偶y od dost臋pno艣ci po偶ywienia, czyli liczebno艣ci ofiar.
Podstawowe za艂o偶enia modelu:
- S膮 dwie populacje: W modelu wyst臋puj膮 tylko dwie populacje: drapie偶niki i ofiary.
- Brak innych czynnik贸w: Nie uwzgl臋dnia si臋 innych czynnik贸w, takich jak konkurencja mi臋dzygatunkowa, choroby czy zmiany 艣rodowiskowe.
- Proste zale偶no艣ci: Wzrost populacji ofiar jest hamowany przez obecno艣膰 drapie偶nik贸w, a wzrost populacji drapie偶nik贸w zale偶y od dost臋pno艣ci po偶ywienia, czyli liczebno艣ci ofiar.
R贸wnania modelu:
R贸wnania s膮 r贸偶niczkowe, bo pokazuj膮 zmiany liczebno艣ci w czasie:
$$\frac{dx}{dt} = x(\alpha – \beta y)$$
$$\frac{dy}{dt} = y(\gamma x -\delta)$$
gdzie:
x – liczebno艣膰 populacji ofiar
y – liczebno艣膰 populacji drapie偶nik贸w
t – czas
伪 – wsp贸艂czynnik wzrostu naturalnego populacji ofiar (w przypadku braku drapie偶nik贸w)
尾 – wsp贸艂czynnik 艣miertelno艣ci ofiar spowodowany drapie偶nictwem
纬 – wsp贸艂czynnik wzrostu populacji drapie偶nik贸w zale偶ny od ilo艣ci po偶ywienia
未 – wsp贸艂czynnik 艣miertelno艣ci naturalnej populacji drapie偶nik贸w (w przypadku braku po偶ywienia)
KOD W J臉ZYKU PYTHON
import numpy as np
import matplotlib.pyplot as plt
def lotka_volterra(alpha, beta, gamma, delta, x0, y0, t):
"""
Funkcja symuluj膮ca model Lotki-Volterry.
alpha: Wsp贸艂czynnik wzrostu naturalnego populacji ofiar.
beta: Wsp贸艂czynnik 艣miertelno艣ci ofiar spowodowany drapie偶nikami.
gamma: Wsp贸艂czynnik wzrostu populacji drapie偶nik贸w zale偶ny od ilo艣ci po偶ywienia.
delta: Wsp贸艂czynnik 艣miertelno艣ci naturalnej populacji drapie偶nik贸w.
x0: Pocz膮tkowa liczba ofiar.
y0: Pocz膮tkowa liczba drapie偶nik贸w.
t: Czas symulacji.
"""
dt = 0.1 # Krok czasowy
n = int(t/dt)
x = np.zeros(n+1)
y = np.zeros(n+1)
x[0] = x0
y[0] = y0
for i in range(1, n+1):
dx = x[i-1] * (alpha - beta * y[i-1])
dy = y[i-1] * (-gamma + delta * x[i-1])
x[i] = x[i-1] + dx * dt
y[i] = y[i-1] + dy * dt
return x, y
# ZMIE艃 PARAMETRY MODELU
alpha = 0.65
beta = 0.65
gamma = 0.5
delta = 0.2
x0 = 10
y0 = 5
t = 100
# SYMULACJA
x, y = lotka_volterra(alpha, beta, gamma, delta, x0, y0, t)
# WYKRES
plt.plot(x, label='Ofiary')
plt.plot(y, label='Drapie偶niki')
plt.xlabel('Czas')
plt.ylabel('Liczba osobnik贸w')
plt.legend()
plt.show()
猬嗭笍猬嗭笍猬嗭笍 Zobacz w Google Colaboratory
JAK DZIA艁A PROGRAM?
- Definicja funkcji聽
lotka_volterra
:- Funkcja ta s艂u偶y do symulacji modelu Lotki-Volterry, kt贸ry opisuje dynamik臋 populacji dw贸ch gatunk贸w: ofiar i drapie偶nik贸w.
- Przyjmuje ona nast臋puj膮ce parametry:
alpha
: Wsp贸艂czynnik wzrostu naturalnego populacji ofiar.beta
: Wsp贸艂czynnik 艣miertelno艣ci ofiar spowodowany przez drapie偶niki.gamma
: Wsp贸艂czynnik wzrostu populacji drapie偶nik贸w zale偶ny od ilo艣ci po偶ywienia (ofiar).delta
: Wsp贸艂czynnik 艣miertelno艣ci naturalnej populacji drapie偶nik贸w.x0
: Pocz膮tkowa liczba ofiar.y0
: Pocz膮tkowa liczba drapie偶nik贸w.t
: Czas symulacji.
- Wewn膮trz funkcji zdefiniowano聽
dt
聽(krok czasowy) i obliczono聽n
聽(liczb臋 krok贸w). - Tworzone s膮 dwie tablice聽
x
聽i聽y
, kt贸re przechowuj膮 odpowiednio populacj臋 ofiar i drapie偶nik贸w w kolejnych krokach. - P臋tle for symuluj膮 zmiany w populacjach w czasie, uwzgl臋dniaj膮c r贸wnania modelu.
- Funkcja zwraca tablice聽
x
聽i聽y
.
- Ustawienie parametr贸w modelu:
- Zdefiniowane s膮 warto艣ci dla parametr贸w聽
alpha
,聽beta
,聽gamma
,聽delta
,聽x0
,聽y0
聽i聽t
. - Parametry te reprezentuj膮 wsp贸艂czynniki wzrostu i 艣miertelno艣ci oraz pocz膮tkowe populacje i czas symulacji.
- Zdefiniowane s膮 warto艣ci dla parametr贸w聽
- Symulacja modelu:
- Wywo艂anie funkcji聽
lotka_volterra
聽z ustalonymi parametrami. - Wynikiem s膮 dwie tablice:聽
x
聽(populacja ofiar) i聽y
聽(populacja drapie偶nik贸w) w kolejnych krokach symulacji.
- Wywo艂anie funkcji聽
- Tworzenie wykresu:
- U偶ycie biblioteki聽
matplotlib.pyplot
聽do utworzenia wykresu. plt.plot(x, label='Ofiary')
: Rysuje lini臋 reprezentuj膮c膮 populacj臋 ofiar w czasie.plt.plot(y, label='Drapie偶niki')
: Rysuje lini臋 reprezentuj膮c膮 populacj臋 drapie偶nik贸w w czasie.plt.xlabel('Czas')
: Opis osi x (czas).plt.ylabel('Liczba osobnik贸w')
: Opis osi y (liczba osobnik贸w).plt.legend()
: Dodaje legend臋, kt贸ra identyfikuje, kt贸ra linia reprezentuje ofiary, a kt贸ra drapie偶niki.plt.show()
: Wy艣wietla wykres.
- U偶ycie biblioteki聽
Dodaj komentarz