优化方法上机大作业上机大作业Ⅰ:编写程序求解下述问题minxf(x)=(1−x1)2+100(x2–x12)2
初始点取x0=0,精度取ε=1e−4,步长由Armijo线搜索生成,方向分别由下列方法生成:1最速下降法2牛顿法3BFGS方法4共轭梯度法1
最速下降法源程序如下:functionx_star=steepest(x0,eps)gk=grad(x0);res=norm(gk);k=0;whileres>eps&&kf0+0
1*ak*slopeak=ak/2;xk=x0+ak*dk;f1=fun(xk);endk=k+1;x0=xk;gk=grad(xk);res=norm(gk);fprintf('--The%d-thiter,theresidualis%f\n',k,res);endx_star=xk;endfunctionf=fun(x)f=(1-x(1))^2+100*(x(2)-x(1)^2)^2;endfunctiong=grad(x)g=zeros(2,1);g(1)=2*(x(1)-1)+400*x(1)*(x(1)^2-x(2));g(2)=200*(x(2)-x(1)^2);end运行结果:>>x0=[0,0]';eps=1e-4eps=1
0000e-004>>xk=steepest(x0,eps)--The1-thiter,theresidualis3
271712--The2-thiter,theresidualis2
504194--The3-thiter,theresidualis2
073282……………………………--The998-thiter,theresidualis0
449447--The999-thiter,theresidualis0
449447--The1000-thiter,there