首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wolfram Mathematica,进入微分方程

Wolfram Mathematica,进入微分方程
EN

Stack Overflow用户
提问于 2016-09-18 16:09:08
回答 1查看 601关注 0票数 2

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

我进入:

代码语言:javascript
复制
 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}]

并收到使用2个参数调用的错误NDSolve;需要3个或更多参数。

我也试过了

代码语言:javascript
复制
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}]

并且得到了同样的错误

我对微分方程和数学都是新手,所以如果有人能帮上忙,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-09-20 17:22:54

就像比尔说的,这不是昏迷。NDSolve的第二个参数是函数集。您可以不带参数或带参数地键入它。您的代码应如下所示:

代码语言:javascript
复制
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计算的初始值给出了微分代数系统的零残差,但某些组件与指定的组件不同。如果你需要满足它们,建议给出所有因变量及其导数的初始条件。>>

但是你可以打印你的结果:

代码语言:javascript
复制
Plot[{Evaluate[i[t] /. sol], Evaluate[s[t] /. sol], 
  Evaluate[r[t] /. sol]}, {t, 0, 10}]

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

https://stackoverflow.com/questions/39555464

复制
相关文章

相似问题

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