【问题标题】:How can use a list or array variable in scipy.odeint如何在 scipy.odeint 中使用列表或数组变量
【发布时间】:2020-07-28 22:01:51
【问题描述】:

我目前正在研究 SEIR 模型,并且我有一个表示锁定级别的列表变量'ld'。因此,对于每一天,锁定可能会有所不同。但我需要一个变量作为列表的索引。我尝试使用 't' 作为索引,但 't' 的值可以是浮动的,它不会一次增加一个。

ld = [0.8, 0.8, 0.8, 0.8, 0.8, 0.5, 0.5, 0.5, 0.5, 0.5, 0.2, 0.2, 0.2, 0.2]

def SIRD_model(y, t, alfa, beta, gamma, M):
      S,E, I, R, D = y
      dS_dt = (-beta*S*I) #+mi*E*I  
      dE_dt = (beta*S*I - alfa*E)+ ld[t]*S*I

这不是完整的功能。在 dE_dt 中,我使用 ld[t] 来显示锁定的效果。

我应该使用 For 循环来解决这些差异方程,就像我在一些 Matlab 代码中看到的那样,还是有办法在 odeint 中使用列表。

【问题讨论】:

    标签: python python-3.x scipy differential-equations


    【解决方案1】:

    您需要的过程称为“插值”,给定一个函数表,在任何给定参数处提取近似值。您有函数numpy.interp 和插值函数构造函数scipy.interpolate.interp1d 可用于执行这些计算。

    当然,在整数节点的零保持的最原始情况下,您也可以使用ld[int(t)]。然后,您还应该在 tcrit 可选参数中传递最大时间,以便希望不会访问越界的索引。

    ld 应该直接影响事务术语的两次出现中的beta 值,您当前的应用程序没有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-19
      • 2023-03-05
      • 2013-05-16
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多