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 );
调用高级优化函数:
>> %设置高级梯度下降 打开,最大迭代次数 100
>> options = optimset('GradObj', 'on', 'MaxIter', '100');
>> %根据经验给出初始参数
>> initialTheta = zeros(2,1);
>> %调用高级优化库
>> [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options)
optTheta = %输出:用高级梯度下降,得出的参数最优值。
5.0000
5.0000
functionVal = 1.5777e-30 %代价值几乎等于0了
exitFlag = 1 %exitFlag指示该算法是否已经将代价函数收敛到最优。
>>