Advanced Optimization
fminunc() in Octave
costFunction.m
function [jVal, gradient] = costFunction(theta)
jVal = (theta(1)-5)^2 + (theta(2)-5)^2;
gradient = zeros(2,1);
gradient(1) = 2*(theta(1)-5);
gradient(2) = 2*(theta(2)-5);
endfunction
prompt
>> options = optimset('GradObj', 'on', 'MaxIter', '100');
>> initialTheta = zeros(2,1);
>> initialTheta
initialTheta =
0
0
>> [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options)
optTheta =
5.0000
5.0000
functionVal = 1.5777e-30
exitFlag = 1
>> %% exitFlag == 1, means converged
>> %% intialTheta must be an at least 2-dimensional vector