Adloun

Python (école d'ingénieur) · Chapitre 13 · Exercice

Croissance logistique

Résolution d'équations différentielles

Énoncé

Résoudre numériquement l'équation logistique avec , , .

Corrigé

import numpy as np
import matplotlib.pyplot as plt

def logistique(x, t, r=0.5, K=10):
    return r * x * (1 - x / K)

# Euler explicite
def euler_logistique(x0, t0, tf, n):
    h = (tf - t0) / n
    t = np.linspace(t0, tf, n+1)
    x = np.zeros(n+1)
    x[0] = x0

    for k in range(n):
        x[k+1] = x[k] + h * logistique(x[k], t[k])

    return t, x

# Simulation
x0 = 1.0
t0, tf = 0.0, 50.0
n = 1000

t, x = euler_logistique(x0, t0, tf, n)

# Solution analytique
def x_exact_log(t, x0, r, K):
    return K * x0 * np.exp(r*t) / (K + x0 * (np.exp(r*t) - 1))

x_theorique = x_exact_log(t, x0, 0.5, 10)

plt.figure(figsize=(10, 6))
plt.plot(t, x, 'b-', label='Euler explicite')
plt.plot(t, x_theorique, 'r--', label='Solution exacte')
plt.xlabel('t')
plt.ylabel('Population')
plt.title('Croissance logistique')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

print(f"Population à t=50 : {x[-1]:.2f} (capacité limite = 10)")

Illustration Simulation de la croissance logistique par la méthode d'Euler explicite.

Résultat dans la console :

Population à t=50 : 9.98 (capacité limite = 10)

La population tend vers la capacité limite .

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 →