捕获Mathematica警告/错误而不显示它们

Kas*_*ers 12 warnings wolfram-mathematica try-catch

我在Mathematica中遇到了一个涉及NDSolve的问题,我使用不同的参数值运行多次.对于其中一些值,解决方案会产生奇点,NDSolve会对NDSolve :: ndsz或其他相关警告发出警告.

我只想捕捉这些警告,抑制它们的显示,并且只是跟踪这些特定参数值出现问题的事实.我想到了以下几个选项(两者都没有真正的诀窍):

  1. 我知道我可以通过使用确定命令是否导致警告或错误Check.但是,这仍然会显示警告.如果我把它关掉OffCheck没有报告警告过.
  2. 可以使用该EventLocator方法停止NDSolve ,因此我可以检查函数或其派生的非常大的值,并在这种情况下停止评估.但是,在实践中,这仍然会不时产生警告,大概是因为步长有时会非常大,以至于NDSolve警告在我Event发生之前就会触发.

还有其他建议吗?

Sim*_*mon 11

如果包裹CheckQuiet那么我相信一切都没有问题,只要你想.例如,您可以禁止显示特定消息Power::indet

In[1]:= Quiet[Check[0^0,err,Power::indet],Power::indet]
Out[1]= err
Run Code Online (Sandbox Code Playgroud)

但仍会显示其他消息

In[2]:= Quiet[Check[Sin[x,y],err,Power::indet],Power::indet]
During evaluation of In[2]:= Sin::argx: Sin called with 2 arguments; 1 argument is expected. >>
Out[2]= Sin[x,y]
Run Code Online (Sandbox Code Playgroud)


Sjo*_*ies 5

使用Quiet和Check一起工作:

Quiet[Check[Table[1/Sin[x], {x, 0, \[Pi], \[Pi]}], $Failed]]
Run Code Online (Sandbox Code Playgroud)