2011-02-05 739 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