Хорошая вещь в функциях оптимизации Matlab состоит в том, что вы можете установить некоторые полезные опции и посмотреть, что делает оптимизатор.
У меня нет символического набора инструментов, поэтому я поместил вашу функцию в отдельный файл:
options = optimset('Display','iter');
x = fminbnd(@myfun, 0, 1, options);
Вот вывод оптимизатора:
16 0.000453104 1.0262e+20 golden
17 0.000280034 6.34228e+19 golden
18 0.00017307 3.91974e+19 golden
19 0.000106963 2.42254e+19 golden
20 6.6107e-05 1.49721e+19 golden
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-04
Посмотрите на критерии завершения.
Теперь добавьте свои собственные критерии завершения в опции и выполнитекод:
options = optimset('Display','iter', 'TolX', 1e-7);
x = fminbnd(@myfun, 0, 1, options);
Выход:
31 3.32187e-07 7.52347e+16 golden
32 2.05303e-07 4.64976e+16 golden
33 1.26884e-07 2.87371e+16 golden
34 7.84188e-08 1.77605e+16 golden
35 4.50855e-08 1.02111e+16 golden
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-07
![Using fminbnd. Setting your own termination criteria](https://i.stack.imgur.com/50X2E.png)