问题描述:

I am trying to evaluate and find the minimum and maximum values of a function over a certain interval. I also want it to evaluate the endpoints to see if they are the maximum or the minimum values. I have the following code which is not giving me what I want. The minimum values should be -1 and 2 but I am getting -0.9999 and 1.9999. Any help would be much appreciated.

minVal1 = fminbnd(f,-1,0);

minVal2 = fminbnd(f,0,2);

网友答案:

I believe that your problem lies in the fact that the default of TolFun for Matlab's fminbnd` function is 0.0001 - so when the function evaluation changes by less than that number, it stops. This may lead to stopping before reaching the true maximum.

If you want to be "right to within 0.0001", you need to set the tolerance on the function evaluation. You could use for example

minVal1 = fminbnd(f, -1, 0, optimset('TolFun', 1e-5));

That ought to get you the precision you need. Make the tolerance even smaller if you need greater precision (a the expense of computation time). See more details on how to fine tune these parameters on the Matlab website

相关阅读:
Top