Python (école d'ingénieur) · Chapitre 13 · Exercice
Système proie-prédateur (Lotka-Volterra)
Résolution d'équations différentielles
Énoncé
Simuler le système proie-prédateur : avec , , , , , .
Corrigé
import numpy as np
import matplotlib.pyplot as plt
def lotka_volterra(X, t, alpha, beta, delta, gamma):
x, y = X
dx = alpha * x - beta * x * y
dy = delta * x * y - gamma * y
return np.array([dx, dy])
X0 = [40.0, 10.0]
alpha, beta, delta, gamma = 0.5, 0.02, 0.01, 0.2
t0, tf = 0.0, 100.0
n = 10000
t, X = rk4_systeme(lotka_volterra, X0, t0, tf, n,
args=(alpha, beta, delta, gamma))
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.plot(t, X[:, 0], 'b-', label='Proies')
plt.plot(t, X[:, 1], 'r-', label='Prédateurs')
plt.xlabel('t')
plt.ylabel('Population')
plt.title('Évolution temporelle')
plt.legend()
plt.grid(True, alpha=0.3)
plt.subplot(1, 2, 2)
plt.plot(X[:, 0], X[:, 1], 'g-', alpha=0.7)
plt.xlabel('Proies')
plt.ylabel('Prédateurs')
plt.title('Portrait de phase')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
print("Populations finales :")
print(f" Proies : {X[-1,0]:.1f}")
print(f" Prédateurs : {X[-1,1]:.1f}")
Évolution temporelle et portrait de phase périodique du système proie-prédateur Lotka-Volterra.
Résultat dans la console :
Populations finales :
Proies : 40.0
Prédateurs : 10.0
Le portrait de phase montre des orbites fermées (conservation d'une quantité invariante dans Lotka-Volterra).
100 % gratuit
La suite du chapitre est sur Adloun
- 7 autres exercices corrigés dans ce chapitre, et 7 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.