利用最速梯度下降法求解:
函数接口:[xstar,fxstar,iter] = SteepDescent(f_name,x0,eps)
其中xstar为最优解,fxstar为最优函数值,iter为迭代次数。
f_name为目标函数文件,可以用feval调用计算函数值及梯度;
x0为初始值,可取[1,1]‘,eps=1e-3,利用0.618法搜索步长。
如:[xstar,fxstar,iter] = SteepDescent(@Myexam1,[1,1]',1e-3)
function [f,g]=Myexam1(x) %%%%调用[f,g] = feval(f_name,xk);
f=x(1)^2+2*x(2)^2; g=[2*x(1);4*x(2)];
end
可直接运行!!
1