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