Íme egy akadémiai szintű kutatói elemzés megoldása Python programnyelven, ami egy numerikus integrációt és egy differenciálegyenlet-rendszer szimulációját valósítja meg.A kód a matematikai modellezés és a tudományos számítások (pl. fizika, biológia) alapjait képező Lotka–Volterra (ragadozó-préda) egyenletrendszert szimulálja. A megoldáshoz a scipy integrálási segédletét, az eredmények vizualizációjához pedig a matplotlib könyvtárat használja.
-----------------------
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# A rendszer dinamikáját leíró differenciálegyenlet-rendszer
def lotka_volterra(t, z, alpha, beta, delta, gamma):
x, y = z
dxdt = alpha * x - beta * x * y
dydt = delta * x * y - gamma * y
return [dxdt, dydt]
# 1. Paraméterek beállítása (akadémiai szimuláció)
alpha = 0.1 # préda szaporodási ráta
beta = 0.02 # ragadozó általi zsákmányolási ráta
delta = 0.01 # ragadozó szaporodási ráta zsákmány elfogyasztásakor
gamma = 0.1 # ragadozó természetes halálozási rátája
# 2. Kezdeti feltételek és időintervallum
x0 = 20.0 # Préda kezdeti populációja
y0 = 10.0 # Ragadozó kezdeti populációja
z0 = [x0, y0]
t_span = (0, 200) # Kezdő és végidő
t_eval = np.linspace(0, 200, 1000) # Kiértékelési pontok (numerikus integrációhoz)
# 3. Numerikus megoldás (Runge-Kutta 4/5. rendű módszerrel - RK45)
solution = solve_ivp(
lotka_volterra, t_span, z0, args=(alpha, beta, delta, gamma),
t_eval=t_eval, rtol=1e-8, atol=1e-8
)
# 4. Vizualizáció
plt.figure(figsize=(12, 5))
# Időbeli lefolyás
plt.subplot(1, 2, 1)
plt.plot(solution.t, solution.y[0], 'g-', label='Préda (Növényevő)')
plt.plot(solution.t, solution.y[1], 'r-', label='Ragadozó')
plt.title('Pop_uláci_ók időbeli alakulása')
plt.xlabel('Idő ($t$)')
plt.ylabel('Egyedszám')
plt.legend()
plt.grid(True)
# Fázistér diagram
plt.subplot(1, 2, 2)
plt.plot(solution.y[0], solution.y[1], 'b-', label='Trajektória')
plt.title('Fázistér diagram')
plt.xlabel('Préda populáció ($x$)')
plt.ylabel('Ragadozó populáció ($y$)')
plt.grid(True)
plt.tight_layout()
plt.show()
---------------------
Eredmény
---------------

Nincsenek megjegyzések:
Megjegyzés küldése