作业帮 > 数学 > 作业

【mathematica】微分方程求助

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/22 08:26:06
【mathematica】微分方程求助
出现NDSolve::ndsz At t=3.73777385.,step size is effectively zero; singularity or stiff system suspected.是什么意思 应该进行怎样的修改?
s = NDSolve[{
D[M1[t], t] == 0.21 q[t] + 3 - M1[t]/(0.5 M1[t] + 0.298 M2[t] + 0.302 M3[t]) 0.5*20,
D[M2[t], t] == 0.44 q[t] - M2[t]/(0.5 M1[t] + 0.298 M2[t] + 0.302 M3[t]) 0.298*20,
D[M3[t], t] == 0.35 q[t] - M3[t]/(0.5 M1[t] + 0.298 M2[t] + 0.302 M3[t]) 0.302*20,
M1[0] == 4, M2[0] == 6, M3[0] == 5.5}, {M1, M2, M3}, {t, 0.01, 9.99}];
Plot[Evaluate[{M1[t], M2[t], M3[t]} /. s], {t, 0, 10}, PlotStyle -> Automatic]
……你不贴代码的话很难判断.这个问题可能在常微分方程及方程组的边值问题求解中出现,解决方法是使用打靶法(具体在帮助里搜搜“打靶法”或者“shooting method"),此外也可能是方程本身的缺陷.总之你最好贴代码.
再问:
再答: 把这段代码贴上来应该不至于导致被吞吧,这样的我不愿抄啊……总之你先试试提高WorkingPrecision看看。
再问: 额。。它怎么说字数超过呢- -
再答: ……你不要追问,补充到问题本体里去。
再问: 前两行(后两行在上面): list = RandomVariate[PoissonDistribution[20], 20]; q[t_] :=Piecewise[{{list[[IntegerPart[2 t] + 1]], EvenQ[IntegerPart[2 t]]}, {1, OddQ[IntegerPart[2 t]]}} ];(现在问题是泊松分布不管怎么变图像都不变,不知道哪错了)
再答: 你的q的定义有疏漏,Piecewise对于完全定义域外的输出返回0,而NDSolve没有HoldAll之类的属性,所以在解方程时,所有q[t]都成了0。不信你可以单独执行一下q[t]试试。解决方法很简单,限制模式: Clear[q] q[t_?NumericQ] := Piecewise[{{list[[IntegerPart[2 t] + 1]], EvenQ[IntegerPart[2 t]]}, {1, OddQ[IntegerPart[2 t]]}}];