首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非法输入ODEINT

非法输入ODEINT
EN

Stack Overflow用户
提问于 2021-03-09 21:16:42
回答 1查看 66关注 0票数 0

给出下列方程组:

$$\frac{dP}{dt} = \alpha P(1-\frac{P}{K}) -\βP$

$$\frac{dI}{dt} =\βdI \rho I$

给了我一个数值求解系统的任务,并绘制了变参数的求解图。但出于某种原因我得到了这个错误

/home/gideon/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:16: /home/gideon/anaconda3/lib/python3.7/site-packages/scipy/integrate/odepack.py:247: RuntimeWarning:除以double_scalars app.launch_new_instance()中遇到的零,/home/gideon/anaconda3/lib/python3.7/site-packages/scipy/integrate/odepack.py:247: ODEintWarning:检测到非法输入(内部错误)。使用full_output =1运行以获得数量信息。warnings.warn(warning_msg,ODEintWarning)

有人能帮忙解决这个问题吗。这是我的密码

代码语言:javascript
复制
'''
 x[0]  : P(t). population not infected
 x[1]  : I(t). population Infected
 k     : population carrying capacity
 alpha : growth rate
 rho   : death rate
 beta  : infection rate
 t     : time
'''

k = 2
alpha = 2
rho = 1
beta = 5

xprime = lambda  x,k,alpha,rho,beta,t: np.array([alpha*x[0]*(1-(x[0]/k))-beta*x[0]*x[1],
                                            beta*x[0]*x[1]-rho*x[1]])
x0 = np.array([(4/5)*k,k/5])
t = np.linspace(0,20,50)
x = odeint(xprime,x0,t,args=(k,alpha,rho,beta,))



y1 = x[:,0]
y2 = x[:,1]


plt.plot(t,y1,'b',label='P(t)')
plt.plot(t,y2,'g--',label='I(t)')
plt.legend()
plt.xlabel('time')
plt.show()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-05 07:08:13

不介意,我明白了。问题是,变量必须在参数之前定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66554900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档