为什么这个交互式操作显示不了图像呢
mathematica吧
全部回复
仅看楼主
level 2
Jiwooooo 楼主
Clear["Global`*"]
func = {i'[t] == \[Alpha]\[Beta] * i[t] s[t] - \[Gamma] *i[t]*i[t],
s'[t] == -\[Alpha] *s[t] *i[t],
r'[t] == \[Alpha] (1 - \[Beta]) * i[t] s[t] + \[Gamma] *i[t]*i[t],
i[0] == 1/100, s[0] == 99/100, r[0] == 0};
parasol =
ParametricNDSolve[{i'[
t] == \[Alpha]\[Beta] * i[t] s[t] - \[Gamma] *i[t]*i[t],
s'[t] == -\[Alpha] *s[t] *i[t],
r'[t] == \[Alpha] (1 - \[Beta]) * i[t] s[t] + \[Gamma] *i[t]*i[t],
i[0] == 1/100, s[0] == 99/100, r[0] == 0}, {i, s, r}, {t, 0,
100}, {\[Alpha], \[Beta], \[Gamma]}];
max[\[Beta]_, \[Gamma]_, amin_, amax_, da_] :=
max[\[Beta], \[Gamma], amin, amax, da] =
Table[{
#2[[1, 2]], #
1} & @@
NMaximize[{Evaluate[s[a, \[Beta], \[Gamma]][t] /. parasol],
0 < t < 50}, t, Method -> "RandomSearch"], {a, amin, amax, da}];
Manipulate[
Show[Plot[
Evaluate[{i[\[Alpha], \[Beta], \[Gamma]][t],
s[\[Alpha], \[Beta], \[Gamma]][t],
r[\[Alpha], \[Beta], \[Gamma]][t]} /. parasol], {t, 0, 50},
PlotRange -> {{0, 50}, {0, 1}}, PlotLegends -> {i, s, r}],
ListPlot[max[\[Beta], \[Gamma], 0, 1, 0.05],
PlotStyle -> {Red, PointSize[0.008]}]], {{\[Alpha], 0.6}, 0, 1,
0.01, Appearance -> "Labeled"}, {{\[Beta], 0.5}, 0, 1, 0.01,
Appearance -> "Labeled"}, {{\[Gamma], 0.6}, 0, 1, 0.01,
Appearance -> "Labeled"}]
ListPlot[max[0.5, 0.6, 0, 1, 0.01],
PlotStyle -> {Red, PointSize[0.008]}, PlotRange -> {{0, 50}, {0, 1}}]
2022年05月28日 12点05分 1
吧务
level 10
\[Alpha] \[Beta]间缺少空格,导致向ParametricNDSolve返回的ParamatricFunction代入值时无法取得插值函数。
2022年05月29日 06点05分 2
谢谢!真的成功了呜呜呜
2022年05月29日 09点05分
1