欢迎来到天天文库
浏览记录
ID:60807350
大小:124.50 KB
页数:9页
时间:2020-12-20
《最优化 马昌凤 第五章作业培训资料.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、精品好文档,推荐学习交流最优化方法及其Matlab程序设计习题作业暨实验报告学院:数学与信息科学学院班级:12级信计一班姓名:李明学号:1201214049仅供学习与交流,如有侵权请联系网站删除谢谢9精品好文档,推荐学习交流第四章共轭梯度法一、上机问题与求解过程仅供学习与交流,如有侵权请联系网站删除谢谢9精品好文档,推荐学习交流1、用算法求解取初始点和初始矩阵为。解:仿照书上编写程序,将程序矩阵变为具体如下:function[x,val,k]=dfp(fun,gfun,x0)%功能:用DFP算法求解吴宇舒问题:minf(x)%输入:x0是初始点,fun,
2、gfun分别是目标函数及其梯度%输出:x,val分别是近似最优点和最优值,k是迭代次数maxk=1e5;%给出最大迭代次数rho=0.55;sigma=0.4;epsilon=1e-5;k=0;n=length(x0);Hk=[21;11];while(k3、ma*rho^m*gk'*dk)mk=m;break;endm=m+1;endx=x0+rho^mk*dk;sk=x-x0;yk=feval(gfun,x)-gk;if(sk'*yk>0)Hk=Hk-(Hk*yk*yk'*Hk)/(yk'*Hk*yk)+(sk*sk')/(sk'*yk);endk=k+1;x0=x;endval=feval(fun,x0);然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=x(1)^2+3*x(2)^2;functiong=gfun(x)g=[2*x(1)6*x(2)]';选取初始点为,调用4、函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:x0=[1-1]';[x,val,k]=dfp('fun','gfun',x0)仅供学习与交流,如有侵权请联系网站删除谢谢9精品好文档,推荐学习交流x=1.0e-06*-0.2203-0.1599val=1.2527e-13k=4从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、用算法求的极小点,选取初始点为解:仿照书上编写程序具体如下:function[x,val,k]=bfgs(fun,gfun,x0,varargin)%功能:用BFGS算法求解无约束5、问题:minf(x);%输入:x0是初始点,fun,gfun分别是目标函数及梯度;%varargin是输入的可变参数变量,简单调用bfgs时可以忽略它;%但若其他程序循环调用该程序时将会发生重要的作用%输出:x,val分别为近似最优点和最优值,k是迭代次数maxk=500;rho=0.55;sigma=0.4;epsilon=1e-5;k=0;n=length(x0);Bk=eye(n);while(k6、解方程组,计算搜索方向m=0;mk=0;while(m<20)%用Armijo搜索求步长newf=feval(fun,x0+rho^m*dk,varargin{:});oldf=feval(fun,x0,varargin{:});if(newf0)Bk=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk7、*yk')/(yk'*sk);endk=k+1;x0=x;end仅供学习与交流,如有侵权请联系网站删除谢谢9精品好文档,推荐学习交流val=feval(fun,x0,varargin{:});%在一开始的时候输入格式有错误为:[x,val,k]=bfgs(‘fun’,‘gfun’,x0,varargin)%后来改为[x,val,k]=bfgs(fun,gfun,x0)得出正确答案建立两个目标函数和梯度的M文件:functionf=fun(x)f=x(1)^2+x(2)^2+x(1)*x(2);functiong=gfun(x)g=[2*x(1)+x(2)8、2*x(2)+x(1)]';选取初始点为,调用函数程序,得出最小极值点为,极小值
3、ma*rho^m*gk'*dk)mk=m;break;endm=m+1;endx=x0+rho^mk*dk;sk=x-x0;yk=feval(gfun,x)-gk;if(sk'*yk>0)Hk=Hk-(Hk*yk*yk'*Hk)/(yk'*Hk*yk)+(sk*sk')/(sk'*yk);endk=k+1;x0=x;endval=feval(fun,x0);然后仿照书上建立两个目标函数和梯度的M文件:functionf=fun(x)f=x(1)^2+3*x(2)^2;functiong=gfun(x)g=[2*x(1)6*x(2)]';选取初始点为,调用
4、函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:x0=[1-1]';[x,val,k]=dfp('fun','gfun',x0)仅供学习与交流,如有侵权请联系网站删除谢谢9精品好文档,推荐学习交流x=1.0e-06*-0.2203-0.1599val=1.2527e-13k=4从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、用算法求的极小点,选取初始点为解:仿照书上编写程序具体如下:function[x,val,k]=bfgs(fun,gfun,x0,varargin)%功能:用BFGS算法求解无约束
5、问题:minf(x);%输入:x0是初始点,fun,gfun分别是目标函数及梯度;%varargin是输入的可变参数变量,简单调用bfgs时可以忽略它;%但若其他程序循环调用该程序时将会发生重要的作用%输出:x,val分别为近似最优点和最优值,k是迭代次数maxk=500;rho=0.55;sigma=0.4;epsilon=1e-5;k=0;n=length(x0);Bk=eye(n);while(k6、解方程组,计算搜索方向m=0;mk=0;while(m<20)%用Armijo搜索求步长newf=feval(fun,x0+rho^m*dk,varargin{:});oldf=feval(fun,x0,varargin{:});if(newf0)Bk=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk7、*yk')/(yk'*sk);endk=k+1;x0=x;end仅供学习与交流,如有侵权请联系网站删除谢谢9精品好文档,推荐学习交流val=feval(fun,x0,varargin{:});%在一开始的时候输入格式有错误为:[x,val,k]=bfgs(‘fun’,‘gfun’,x0,varargin)%后来改为[x,val,k]=bfgs(fun,gfun,x0)得出正确答案建立两个目标函数和梯度的M文件:functionf=fun(x)f=x(1)^2+x(2)^2+x(1)*x(2);functiong=gfun(x)g=[2*x(1)+x(2)8、2*x(2)+x(1)]';选取初始点为,调用函数程序,得出最小极值点为,极小值
6、解方程组,计算搜索方向m=0;mk=0;while(m<20)%用Armijo搜索求步长newf=feval(fun,x0+rho^m*dk,varargin{:});oldf=feval(fun,x0,varargin{:});if(newf0)Bk=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk
7、*yk')/(yk'*sk);endk=k+1;x0=x;end仅供学习与交流,如有侵权请联系网站删除谢谢9精品好文档,推荐学习交流val=feval(fun,x0,varargin{:});%在一开始的时候输入格式有错误为:[x,val,k]=bfgs(‘fun’,‘gfun’,x0,varargin)%后来改为[x,val,k]=bfgs(fun,gfun,x0)得出正确答案建立两个目标函数和梯度的M文件:functionf=fun(x)f=x(1)^2+x(2)^2+x(1)*x(2);functiong=gfun(x)g=[2*x(1)+x(2)
8、2*x(2)+x(1)]';选取初始点为,调用函数程序,得出最小极值点为,极小值
此文档下载收益归作者所有