scipy 基于python的S-I-S模型优化问题

sf6xfgos  于 2022-11-10  发布在  Python
关注(0)|答案(1)|浏览(153)

我有一个易感-感染-易感的模型

我已经写了下面的python代码

def SIS(I0, beta, gamma, N=2000):
    f1 = N - I0

    f2 = -beta * I0
    f2 /= N
    f2 = 1 - exp(f2)

    f3 = gamma * I0

    return (f1 * f2) - f3 + I0

我用下面的代码来解决这个问题

I0, beta, gamma, N = 10, 0.2, 0.25, 2000

t = np.linspace(0, 100, 101)

inf = [I0]

for i in t[:-1]:
    inf.append(SIS(inf[-1], beta, gamma))

这部分很好。我在寻找二重导数

并针对beta参数的值进行优化时遇到了麻烦。问题是beta没有给定,而且由于该参数在指数函数范围内,对我来说,得到传染性参数的第10个值,然后把它等于0来求解是没有意义的。m仅给出


如果有人能指引我正确的方向,那将是一个很大的帮助。

jpfvwuh4

jpfvwuh41#

你可以用有限差分法来近似导数。下面是二阶导数的例子:

h = 0.0001
t = 10
I_left   = solve(I0, t, beta-h, gamma, N)
I_right  = solve(I0, t, beta+h, gamma, N)
I_center = solve(I0, t, beta, gamma, N)

d2I_dB2 = (I_right - I_center + I_left) / h**2

其中solve可求解最高为t的递归。

相关问题