有什么方法可以获取在 Mathematica 中计算表达式期间生成的实际消息?假设我正在对一个 ODE 进行数值求解,它爆炸了,就像这样
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
变量,我只会收到消息名称;特别是,关于 t
的值的信息已经丢失,其中 NDSolve
决定退出。
现在,我总是可以使用标准附加包之一的 InterpolatingFunctionDomain
函数从 sol
获取该信息,但如果我能以某种方式将其从的消息,这将是非常有帮助的。
最佳答案
您可以使用 $MessagePrePrint 设置一个函数来存储每条消息以供以后检索。
关于wolfram-mathematica - 对 Mathematica 中生成的消息的反省,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2007160/