fminuncВ этом примере показано, как использовать fminunc решать нелинейную задачу минимизации
Чтобы решить эту двумерную задачу, запишите функцию, которая возвращается . Затем вызовите стандартную программу безусловной минимизации fminunc запуск с начальной точки x0 = [-1,1].
Функция помощника objfun в конце этого примера вычисляет .
Найти минимум , установите начальную точку и вызовите fminunc.
x0 = [-1,1]; [x,fval,exitflag,output] = fminunc(@objfun,x0);
Local minimum found. Optimization completed because the size of the gradient is less than the value of the optimality tolerance.
Просмотрите результаты, включая меру оптимальности первого порядка в output структура.
disp(x)
0.5000 -1.0000
disp(fval)
3.6609e-15
disp(exitflag)
1
disp(output.firstorderopt)
1.2284e-07
exitflag выведите указывает, сходится ли алгоритм. exitflag = 1 среднее значение fminunc находит локальный минимум.
output структура предоставляет больше подробную информацию об оптимизации. Для fminunc, структура включает
output.iterations, количество итераций
output.funcCount, количество вычислений функции
output.stepsize, размер последнего шага
output.firstorderopt, мера оптимальности первого порядка (который в этом неограниченном случае является нормой по бесконечности градиента в решении),
output.algorithm, тип алгоритма используется
output.message, причина остановленный алгоритм
Этот код создает objfun функция помощника.
function f = objfun(x) f = exp(x(1)) * (4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + 1); end