Adloun

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}")

Illustration É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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →