2011-02-05 33 views
1

在执行使用最小化的优化[]在Mathematica中,我得到什么似乎是一些提示NaN:在Mathematica中,如何查看完整的消息输出?

NMinimize :: nnum:函数值 不确定是不是在{Q}号码= {0}。 >> NMinimize :: nnum:函数 值Indeterminate不是 {q} = {0.}中的数字。 >> NMinimize :: nnum: 函数值Indeterminate不是在{q} = {0}处的 数字。 >> General :: stop: NMinimize :: nnum将在此计算过程中被抑制 。 >>

NaNs没问题,因为它们似乎没有影响优化结果。但是由于进一步的消息被抑制,我不确定是否我得到的消息与(例如)超过最大迭代次数没有达到要求的精度。

那么,有没有办法看到完整的消息列表?如果存在这样的选项,是否必须在评估之前激活此选项,或者是否有完整的消息缓冲区,以后我可以参考?优化需要很长的时间,所以我希望避免重新计算它。

我只发现关闭和打开功能,这似乎没有做我想做的。

+1

谨防不涉足调试时解决级联错误。正如蒂莫说[`这里`](http://stackoverflow.com/questions/4176612/setting-up-diagnostic-error-messages-in-large-mathematica-projects)** Mathematica的错误信息是不透明的,古老的,和军团。** – 2011-02-05 17:59:51

回答

3

两点意见。首先,Off[General::stop]应该做你想要的,即关闭消息抑制。其次,只有给定类型的消息已被抑制,例如NMinimize::nnum您的情况。其他消息不是,例如,如果超过$IterationLimit,则会收到该消息。

编辑: 例子:

On[General::stop] 
Do[ 
NIntegrate[Sin[a*x], {x, 0, 10}]; 
If[i == 20, 1/0], 
{i, 1, 100}] 
3

试试这个:

Off[General::stop] 

--mark