【问题标题】:Wolfram Mathematica, entering differential equationsWolfram Mathematica,输入微分方程
【发布时间】:2016-09-18 08:09:08
【问题描述】:

我正在尝试使用本网站http://www.maa.org/press/periodicals/loci/joma/the-sir-model-for-spread-of-disease-the-differential-equation-model 和 Wolfram Mathematica 上给出的微分方程来模拟疾病的传播。

我输入了:

 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 的新手,如果有人能提供帮助,我将不胜感激。

【问题讨论】:

  • 你在这个 s'[0]==0} i 中间少了一个逗号,如果你把它变成 s'[0]==0},那么它就可以工作了。跨度>

标签: wolfram-mathematica differential-equations


【解决方案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}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多