欢迎来到天天文库
浏览记录
ID:61937006
大小:83.00 KB
页数:7页
时间:2021-03-31
《最优化 马昌凤 第三章作业上课讲义.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、__________________________________________________最优化方法及其Matlab程序设计习题作业暨实验报告学院:数学与信息科学学院班级:12级信计一班姓名:李明学号:1201214049____________________________________________________________________________________________________第三章最速下降法和牛顿法一、上机问题与求解过程1、用最速下降法求的极小值。解:仿照书上编写最速下降法程序如
2、下:function[x,val,k]=grad(fun,gfun,x0)%功能:用最速下降法求解无约束化问题:minf(x)%输入:x0是初始点,fun,gfun分别是目标函数和梯度%输出:x,val分别是近似嘴有点和最优值,k是迭代次数maxk=5000;rho=0.5;sigma=0.4;%一开始选择时选择的rho和sibma选择的数据不够合理,此处我参照书上的数据编写数据k=0;epsilon=1e-5;while(k3、__________________________________________________________________________d=-g;%计算搜索方向if(norm(d)4、*d;k=k+1;endx=x0;val=feval(fun,x0)%求得每一个的函数值然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=3*x(1)^2+2*x(2)^2-4*x(1)-6*x(2);functiong=gfun(x)g=[6*x(1)-4,4*x(2)-6]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:[x,val,k]=grad('fun','gfun',x0)val=-5.8333x=0.66671.5000val=-5.8333k=10从5、结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、分别用牛顿法和阻尼牛顿法求解函数的极小点。解:牛顿法:改编书上的阻尼牛顿法,将Armijo____________________________________________________________________________________________________线性搜索公式去掉,改编为牛顿法,其中程序为:function[x,val,k]=netwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:min6、f(x)%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=500;%因为是牛顿法,感觉不能简单直接找出最佳数值,所以需要加大迭代次数k=0;epsilon=1e-5;while(k7、架,得出上面迭代步骤k=k+1;end%只是将阻尼牛顿法,简单的删去Armijo搜索公式x=x0;val=feval(fun,x);然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=4*x(1)^2+x(2)^2-8*x(1)-4*x(2);functiong=gfun(x)g=[8*x(1)-8,2*x(2)-4]';最后仿照书上建立Hess矩阵的M文件:functionHe=Hess(x)n=length(x);He=zeros(n,n);He=[8,0;0,2];选取初始点为,调用函数程序,得出最8、小极值点为,极小值为,在界面框中输入的程序如下:x0=[00]';x,val,k]=netwn('fun','gfun','Hess',x0)x=12val=-8k=1从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,
3、__________________________________________________________________________d=-g;%计算搜索方向if(norm(d)4、*d;k=k+1;endx=x0;val=feval(fun,x0)%求得每一个的函数值然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=3*x(1)^2+2*x(2)^2-4*x(1)-6*x(2);functiong=gfun(x)g=[6*x(1)-4,4*x(2)-6]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:[x,val,k]=grad('fun','gfun',x0)val=-5.8333x=0.66671.5000val=-5.8333k=10从5、结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、分别用牛顿法和阻尼牛顿法求解函数的极小点。解:牛顿法:改编书上的阻尼牛顿法,将Armijo____________________________________________________________________________________________________线性搜索公式去掉,改编为牛顿法,其中程序为:function[x,val,k]=netwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:min6、f(x)%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=500;%因为是牛顿法,感觉不能简单直接找出最佳数值,所以需要加大迭代次数k=0;epsilon=1e-5;while(k7、架,得出上面迭代步骤k=k+1;end%只是将阻尼牛顿法,简单的删去Armijo搜索公式x=x0;val=feval(fun,x);然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=4*x(1)^2+x(2)^2-8*x(1)-4*x(2);functiong=gfun(x)g=[8*x(1)-8,2*x(2)-4]';最后仿照书上建立Hess矩阵的M文件:functionHe=Hess(x)n=length(x);He=zeros(n,n);He=[8,0;0,2];选取初始点为,调用函数程序,得出最8、小极值点为,极小值为,在界面框中输入的程序如下:x0=[00]';x,val,k]=netwn('fun','gfun','Hess',x0)x=12val=-8k=1从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,
4、*d;k=k+1;endx=x0;val=feval(fun,x0)%求得每一个的函数值然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=3*x(1)^2+2*x(2)^2-4*x(1)-6*x(2);functiong=gfun(x)g=[6*x(1)-4,4*x(2)-6]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:[x,val,k]=grad('fun','gfun',x0)val=-5.8333x=0.66671.5000val=-5.8333k=10从
5、结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、分别用牛顿法和阻尼牛顿法求解函数的极小点。解:牛顿法:改编书上的阻尼牛顿法,将Armijo____________________________________________________________________________________________________线性搜索公式去掉,改编为牛顿法,其中程序为:function[x,val,k]=netwn(fun,gfun,Hess,x0)%功能:用牛顿法求解无约束问题:min
6、f(x)%输入:x0是初始点,fun,gfun,Hess分别是求%目标函数值,梯度,Hesse矩阵函数%输出:x,val分别是近似点最优解和最优质,k是迭代次数maxk=500;%因为是牛顿法,感觉不能简单直接找出最佳数值,所以需要加大迭代次数k=0;epsilon=1e-5;while(k7、架,得出上面迭代步骤k=k+1;end%只是将阻尼牛顿法,简单的删去Armijo搜索公式x=x0;val=feval(fun,x);然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=4*x(1)^2+x(2)^2-8*x(1)-4*x(2);functiong=gfun(x)g=[8*x(1)-8,2*x(2)-4]';最后仿照书上建立Hess矩阵的M文件:functionHe=Hess(x)n=length(x);He=zeros(n,n);He=[8,0;0,2];选取初始点为,调用函数程序,得出最8、小极值点为,极小值为,在界面框中输入的程序如下:x0=[00]';x,val,k]=netwn('fun','gfun','Hess',x0)x=12val=-8k=1从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,
7、架,得出上面迭代步骤k=k+1;end%只是将阻尼牛顿法,简单的删去Armijo搜索公式x=x0;val=feval(fun,x);然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=4*x(1)^2+x(2)^2-8*x(1)-4*x(2);functiong=gfun(x)g=[8*x(1)-8,2*x(2)-4]';最后仿照书上建立Hess矩阵的M文件:functionHe=Hess(x)n=length(x);He=zeros(n,n);He=[8,0;0,2];选取初始点为,调用函数程序,得出最
8、小极值点为,极小值为,在界面框中输入的程序如下:x0=[00]';x,val,k]=netwn('fun','gfun','Hess',x0)x=12val=-8k=1从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,
此文档下载收益归作者所有