import numpy as np
from scipy.integrate import solve_ivp
a, b, c, d = 1.1, 0.4, 0.4, 0.1
def lotka_volterra(t, z):
x, y = z
return [a*x - b*x*y, -c*y + d*x*y]
t_eval = np.linspace(0, 60, 3000)
sol = solve_ivp(lotka_volterra, (0,60), [10,5], t_eval=t_eval, rtol=1e-10, atol=1e-10)
X = sol.y.T
dX = np.gradient(X, t_eval[1]-t_eval[0], axis=0)