1.[~15%]使用deSolve软件包中的函数ode(),计算SIR模型的解,其中N = 100,β = 0.02,γ = 1,初始条件S(0)= 99.9,I(0)= 0.1,时间点向量范围为0到20。在(S,I)相平面中绘制解。
对这个问题有什么帮助吗?
library(deSolve)
beta<-0.02
gamma<-1
N<-100
initial<-c(S=99.9, I=0.1, R=1000)
parms<-c(beta=beta, gamma=gamma, N=N)
times<-seq(0, 20 ,by=0.1)
output<-ode(y=initial, times=times, func=SIR_dydt, parms=parms)
plot(output[, "S", "I"], type="l", xlab="t", ylab="No. individuals, main="SIR solutions")
legend("topright", legend = c("S", "I"), lty = 1, col = c("blue", "red"))
尝试此代码,但得到此错误
checkFunc(函数2,时间,y,rho)中出错:模型函数必须返回列表
1条答案
按热度按时间uwopmtnx1#
原题中的代码不完整,附加注解中的代码有一些错误,所以我试着做了一个综合。
有几点:
N
是冗余的N
作为第一个元素,因此参数被混淆。通常,通过命名向量而不是通过它们的位置来传递参数和状态变量更健壮。steps
的数量,以获得平滑的图形。除了2D状态图,还可以使用phaseR包添加可选的流场。