我正在尝试评估并找到某个时间间隔内函数的最小值和最大值。我还希望它评估端点,看它们是最大值还是最小值。我有以下代码,它没有给我我想要的东西。最小值应为-1和2,但我得到-0.9999和1.9999。任何帮助将不胜感激。
minVal1 = fminbnd(f,-1,0);
minVal2 = fminbnd(f,0,2);
答案 0 :(得分:0)
我相信你的问题在于Matlab的fminbnd`函数的默认值TolFun
是0.0001 - 因此当函数评估变化小于该数字时,它就会停止。这可能会导致在达到真正的最大值之前停止。
如果您希望“在0.0001范围内”,则需要在功能评估中设置容差。你可以使用例如
minVal1 = fminbnd(f, -1, 0, optimset('TolFun', 1e-5));
应该为你提供所需的精确度。如果您需要更高的精度(计算时间的代价),则使公差更小。有关如何在the Matlab website
上微调这些参数的详细信息,请参阅