首页 > 解决方案 > JiTCDDE 没有给出预期的输出

问题描述

我一直在尝试使用 JiTCDDE 求解以下延迟微分方程组:

模型方程

这是我的代码:

from jitcdde import y, t
from jitcdde import jitcdde
import matplotlib.pyplot as plt
import numpy as np
from pylab import *

N1=30290000
a1=0.98*N1
eps=1/5
b1=0.000024246
eta=0.3
B1=0.7
m=0.0005
chi=0.071 
k1=0.185
alpha1=0.1155 
delta=0.0225 
phi1=0.26
omega1=0.26
d=3

model=[b1-((y(0)*B1*(y(2)+y(3)+(eta*y(5))))/a1)-b1*y(0)-m*y(0,t-d),
       ((y(0)*B1*(y(2)+y(3)+(eta*y(5))))/a1)-(k1+eps)*y(1)-m*y(1,t-d), 
       k1*eps*y(1)-(alpha1+chi)*y(2)-m*y(2,t-d),
       (1-k1)*eps*y(1)-(phi1+omega1)*y(3)-m*y(3,t-d),
       k1*y(1)+alpha1*y(2)-chi*y(4),
       (phi1+omega1)*y(3)-(chi+delta)*y(5),
       chi*(y(4)+y(5))-b1*y(6)-m*y(6,t-d),
       delta*y(5)]

I=jitcdde(model)
I.constant_past([(0.98*N1-13),0,5,7,0,1,0,0], time=0.0)
I.step_on_discontinuities()
e=[]
for i in range(50):
    e.append(I.integrate(i)[1])
print(e)

问题是,对于解决方案的第二个数组(我正在尝试访问),当我指定 t<0 时,前几个值是负值,该值为 0。我已经尝试过这个相同的模型使用ddeint它给出了一个单调递增的正值曲线,这是我所期望的。不过我想jitcdde工作,因为即使没有延迟项,这个模型也应该运行。第一个数组看起来不错,我检查了我的模型,看看是否有任何错别字,但对我来说一切都很好。我也尝试过使用adjust_diffand integrate_blindly,但问题仍然存在。

标签: pythondifferential-equationsjitcode-jitcdde-jitcsde

解决方案


推荐阅读