有没有办法在Mathematica表达式求值期间获取实际生成的消息?比如说,我正在数值求解一个常微分方程,但是它会像这样崩溃:
在这种情况下,我会得到
现在,我总是可以使用标准附加包中的
In[1] := sol = NDSolve[{x'[t] == -15 x[t], x[0] == 1}, x, {t, 0, 1},
Method -> "ExplicitEuler"];
在这种情况下,我会得到
NDSolve::mxst
错误,告诉我在 t == 0.08671962566152185
时已经达到了最大10000步数的限制。现在,如果我查看 $MessageList
变量,我只能收到消息名称;特别是,NDSolve
决定退出的 t
值的信息已经丢失。现在,我总是可以使用标准附加包中的
InterpolatingFunctionDomain
函数从 sol
中获取该信息,但是如果我能够从消息中提取它,那将会非常有帮助。