0

我必须NMinimize在各种实例上运行许多命令。其中一些运行未能收敛。

我想确定哪些未能收敛获得 Mathematica 找到的当前解决方案。

搜索建议使用的其他帖子Check[],但一旦出现错误,它不会返回结果。

所以目前,我的实现效率低下,如下所示:

allfit1 = ConstantArray[0,16];
For[i = 1, i <= 16, i++, (
allfit1[[i]] = Check[
                    {0, NMinimize[f[x,data[[i]]], x]}, 
                    {1, NMinimize[f[x,data[[i]]], x]}
                    ] 
)]

如您所见,我必须执行NMinimize两次,这既浪费又耗时。

有没有更好的办法?

4

2 回答 2

0

作为一个小改动:您可以将结果存储在一个变量中:

Block[{res}, 
      Check[{0, res = NMinimize[...]}, {1, res}]
]
于 2012-11-21T17:48:31.960 回答
0

你可以做

Table[Reap@Quiet@Check[Sow@NMinimize[f[x, d], x]; 1, 0]~
  Extract~{{1}, {2, 1, 1}}, {d, data}]
于 2012-11-21T19:09:50.933 回答