Modèle de Lotka Volterra

On considère l’équation diférentielle suivante :

(1)\[\begin{eqnarray} \frac{\mathrm d L}{\mathrm d t} = 2L - 0.2 LR \\ \frac{\mathrm d R}{\mathrm d t} = -30R + 0.15 LR \end{eqnarray}\]

Il s’agit d’un modèle qui décrit une population de renards \(R\) et une population de lapins \(L\) qui se partagent le même territoire.

Le coefficient 2 est le taux de croissance des lapins en l’absence de renards, d’où le signe positif, 30 est le taux de décroissance des renards en l’absence de lapins, d’où le signe négatif, 0.2 est un coefficient exprimant que les rencontres tournent mal pour les lapins, d’où le -, 0.15 est un coefficient exprimant que les rencontres sont bénéfiques aux renards, d’où le +.

  1. Résoudre cette équation pour \(L_0 = 150\) et \(R_0 = 5\) et tracer l’évolution jusque \(t=10\).

  2. Avec les même paramètres, tracer la valeur absolue de la transformée de Fourier numérique du nombre de lapin (en prenant t=100) et donner approximativement la fréquence fondamentale du signal.

from scipy.integrate import solve_ivp
from numpy.fft import rfft, rfftfreq
import numpy as np
from scipy.integrate import solve_ivp


def f(t, y):
    L, R = y
    return (2*L - 0.2*L*R, -30*R + 0.15*L*R )


t_eval = np.linspace(0, 10, 2001)
res = solve_ivp(f, y0=(150, 3), t_span=[0, 10], t_eval=t_eval, method='BDF')
from matplotlib.pyplot import figure

fig = figure()
ax = fig.subplots(1, 1)

ax.plot(t_eval, res.y[0])
ax.plot(t_eval, res.y[1])
[<matplotlib.lines.Line2D at 0x7927af632c80>]
../_images/d46996292e705b1cee9bea2d0c1735a84522fb1e80167ff94b6b66eb9d548278.png
t_eval = np.linspace(0, 100, 2001)
res = solve_ivp(f, y0=(150, 3), t_span=[0, 100], t_eval=t_eval, method='BDF')
from numpy.fft import rfft, rfftfreq

x_tile = rfft(res.y[0])
freq = rfftfreq(len(res.y[0]), t_eval[1])

fig = figure()
ax = fig.subplots(1, 1)

mask = np.abs(freq - 1.1)<0.2
#mask = slice(None)
ax.plot(freq[mask], np.abs(x_tile[mask]))
ax.grid()
ax.set_xlabel('
[<matplotlib.lines.Line2D at 0x7927af5e2860>]
../_images/e0512f6a189c374df7142b7d9dffa8bac896a0234b8b306d934db05ad55e7c48.png