如何解决PyDSTool:非负约束使用 xdomain不起作用
我正在使用 PyDSTool 创建一个“SIRV”模型。对于此模型,变量“S”、“I”、“R”或“V”都不能低于 0 或高于预定义值(称为“N”)。我已经看到 PyDSTool 有一个内置函数“xdomain”,它声称能够实现这些限制。但是,很像 this question,它不起作用。尽管代码运行,但它就好像它被当作它不存在一样对待。我附上了我的相关代码:
#---Import---#
import PyDSTool as dst
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
#---SIRV Code---#
icdict = {'s': 0.999,'i': 0.001,'r': 0,'v': 0}
pardict = {'beta': 2.4/14,'D': 14,'L': 5,'N': 1,'rho': 0}
ds_rhs = '-beta * (i/N) * s - rho'
di_rhs = 'beta * (i/N) * s - ((1/D) * i)'
dr_rhs = '(1/D) * i'
dv_rhs = 'rho'
vardict = {'s': ds_rhs,'i': di_rhs,'r': dr_rhs,'v': dv_rhs}
DSargs = dst.args()
DSargs.name = 'SIRV'
DSargs.ics = icdict
DSargs.pars = pardict
DSargs.tdata = [0,20]
DSargs.varspecs = vardict
#DSargs.xdomain = {'s': [0,5000000],'i': [0,'r': [0,'v': [0,5000000]}
DS = dst.Generator.Vode_ODEsystem(DSargs)
DS.set(pars={'beta': 5/14,'N': 5000000,'rho': 9000},ics={'s': 4999999,'i': 1},xdomain = {'s': [0,5000000]},#has no effect
tdata = [0,400])
traj = DS.compute('demo')
pts = traj.sample()
#---Plotting---#
plt.plot(pts['t'],pts['s'],label='S')
plt.plot(pts['t'],pts['i'],label='I')
plt.plot(pts['t'],pts['r'],label='R')
plt.plot(pts['t'],pts['v'],label='V')
plt.legend()
plt.xlabel('t')
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。