我正在尝试使用Wolfram Mathematica在本网站http://www.maa.org/press/periodicals/loci/joma/the-sir-model-for-spread-of-disease-the-differential-equation-model上给出的微分方程来模拟疾病的传播。
我进入了:
NDSolve[{i'[t]== 1/2s[t]i[t]-1/3i[t], s[t]==-1/2s[t]i[t],r[t]==1/3i[t], r[0] ==0, s[0]==1, i[0]==1.27*10^-6,s'[0]==0} i, {t, 0, 100}]
并收到错误 NDSolve用2个参数调用;预计有3个或更多的论点。
我也试过
NDSolve[{i'[t]== 1/2s[t]i[t]-1/3i[t], s[t]==-1/2s[t]i[t],r[t]==1/3i[t], r[0] ==0, s[0]==1, i[0]==1.27*10^-6,s'[0]==0} i, {t, 0, 100}]
并得到了同样的错误
我是微分方程和Mathematica的新手,所以如果有人可以提供帮助,我将不胜感激。
答案 0 :(得分:1)
比尔告诉他们这不是昏迷。 NDSolve的第二个参数是函数集。您可以不带参数或参数键入它。您的代码应如下所示:
sol = NDSolve[
{i'[t] == 1/2 s[t] i[t] - 1/3 i[t],
s[t] == -1/2 s[t] i[t], r[t] == 1/3 i[t],
r[0] == 0,
s[0] == 1,
i[0] == 1.27*10^-6,
s'[0] == 0}, {i[t], s[t], r[t]}, {t, 0, 10}]
它会产生与数字问题相关的错误:
NDSolve :: ivres:NDSolve计算的初始值为微分代数系统提供零残差,但某些组件与指定的组件不同。如果您需要满足它们,建议为所有因变量及其衍生物提供初始条件。 >>
但您可以打印结果:
Plot[{Evaluate[i[t] /. sol], Evaluate[s[t] /. sol],
Evaluate[r[t] /. sol]}, {t, 0, 10}]