如何用mathematica求解变参数的常微分方程

当r=0.3;beta=0.1;e=0.2;NDSolve[{r*S[t]-beta*S[t]*M[t]+e*M[t]==S'[t],beta*S[t]*MDt]-d*I... 当r = 0.3; beta = 0.1; e = 0.2;NDSolve[{r*S[t] - beta*S[t]*M[t] + e*M[t] == S'[t],
beta*S[t]*MDt] - d*I[t] == M'[t], S[0] == 8.2, M[0] == 3.8}, {S,
M}, {t, 0, 100}]在这个函数中d的值是这么取的,当0=<t<=50时,d=0.8;当50<t<100时,d=0.4.请问应该怎么实现????
展开
 我来答
frokaikan
2015-07-04 · TA获得超过109个赞
知道小有建树答主
回答量:57
采纳率:0%
帮助的人:51.1万
展开全部
  1. I是什么?虚数单位?还是某个函数?

  2. 输入有问题,请自己检查输入。

  3. 分段用If或者Piecewise.

追问
非常抱歉,应该是这样的题目:r = 0.3; beta = 0.1; e = 0.2;NDSolve[{r*S[t] - beta*S[t]*M[t] + e*M[t] == S'[t],
beta*S[t]*M[t] - d*M[t] == M'[t], S[0] == 8.2, M[0] == 3.8}, {S,
M}, {t, 0, 100}]
追答

NDSolveValue[{0.2` M[t] + 0.3` S[t] - 0.1` M[t] S[t] == 

   Derivative[1][S][t], -0.8 M[t] + 0.1` M[t] S[t] == 

   Derivative[1][M][t], S[0] == 8.2`, M[0] == 3.8`}, {S, M}, {t, 0, 

  50}]

NDSolveValue[{0.2` M[t] + 0.3` S[t] - 0.1` M[t] S[t] == 

   Derivative[1][S][t], -0.4 M[t] + 0.1` M[t] S[t] == 

   Derivative[1][M][t], S[0] == 8.2`, M[0] == 3.8`}, {S, M}, {t, 50, 

  100}]

Plot[Piecewise[{{%37[[#]][x], 0 <= x <= 50}, {%38[[#]][x], 

       50 < x <= 100}}] // Evaluate, {x, 0, 100}] & /@ {1, 2}

(把%37、%38换成你的输出)

东莞大凡
2024-11-14 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于... 点击进入详情页
本回答由东莞大凡提供
matlabfunc
2015-07-04 · TA获得超过1197个赞
知道小有建树答主
回答量:1004
采纳率:0%
帮助的人:589万
展开全部
分段不可以吗?
追问
可以分段,关键是怎么将d加进函数中呢?
Which[t > 0 && t 50 && t < 100, 0.4]
追答
分成两个语句做就行了,非放到一句里没有什么意义啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式