import numpy as np def invasion_fitness(z, zm, pars): n_res = z / pars return zm - pars * n_res def invasion_fitness2(z, zm, pars): alpha, beta = pars n_res = (z - z**beta) / alpha return zm - zm**beta - alpha * n_res def pop_dynamics2(t, n, pars): alpha, beta, z = pars return n * (z - z**beta - alpha * n) def invasion_fitness3(z, zm, pars): z0, k = pars r = np.exp(-((z - z0) ** 2) / 2) n_res = r rm = np.exp(-((zm - z0) ** 2) / 2) am = np.exp(-((zm - z) ** 2) / k) return rm - am * n_res