欢迎来到天天文库
浏览记录
ID:56778221
大小:118.50 KB
页数:8页
时间:2020-07-09
《最优化 马昌凤 第五章作业.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、最优化方法及其Matlab程序设计习题作业暨实验报告学院:数学与信息科学学院班级:12级信计一班姓名:李明学号:1201214049第四章共轭梯度法一、上机问题与求解过程1、用算法求解取初始点和初始矩阵为。解:仿照书上编写程序,将程序矩阵变为具体如下:function[x,val,k]=dfp(fun,gfun,x0)%功能:用DFP算法求解吴宇舒问题:minf(x)%输入:x0是初始点,fun,gfun分别是目标函数及其梯度%输出:x,val分别是近似最优点和最优值,k是迭代次数maxk=1e5;%给出最大迭代次数rho=0.55;sig
2、ma=0.4;epsilon=1e-5;k=0;n=length(x0);Hk=[21;11];while(k3、eval(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)]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:x0=[1-1]';[x,val,k]=dfp('fu4、n','gfun',x0)x=1.0e-06*-0.2203-0.1599val=1.2527e-13k=4从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、用算法求的极小点,选取初始点为解:仿照书上编写程序具体如下:function[x,val,k]=bfgs(fun,gfun,x0,varargin)%功能:用BFGS算法求解无约束问题:minf(x);%输入:x0是初始点,fun,gfun分别是目标函数及梯度;%varargin是输入的可变参数变量,简单调用bfgs时可以忽略它;%但若其他程序循环调5、用该程序时将会发生重要的作用%输出:x,val分别为近似最优点和最优值,k是迭代次数maxk=500;rho=0.55;sigma=0.4;epsilon=1e-5;k=0;n=length(x0);Bk=eye(n);while(k6、{:});oldf=feval(fun,x0,varargin{:});if(newf0)Bk=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk*yk')/(yk'*sk);endk=k+1;x0=x;endval=feval(fun,x0,varargin{:});%在一开始的时候输入7、格式有错误为:[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)2*x(2)+x(1)]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的命令如下:x0=[32]';[x,val,k]=bfgs('fun','gfun',x0)x=1.8、0e-05*0.0513-0.1555val=1.8846e-12k=3从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、分别利用算法和算法的
3、eval(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)]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的程序如下:x0=[1-1]';[x,val,k]=dfp('fu
4、n','gfun',x0)x=1.0e-06*-0.2203-0.1599val=1.2527e-13k=4从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、用算法求的极小点,选取初始点为解:仿照书上编写程序具体如下:function[x,val,k]=bfgs(fun,gfun,x0,varargin)%功能:用BFGS算法求解无约束问题:minf(x);%输入:x0是初始点,fun,gfun分别是目标函数及梯度;%varargin是输入的可变参数变量,简单调用bfgs时可以忽略它;%但若其他程序循环调
5、用该程序时将会发生重要的作用%输出:x,val分别为近似最优点和最优值,k是迭代次数maxk=500;rho=0.55;sigma=0.4;epsilon=1e-5;k=0;n=length(x0);Bk=eye(n);while(k6、{:});oldf=feval(fun,x0,varargin{:});if(newf0)Bk=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk*yk')/(yk'*sk);endk=k+1;x0=x;endval=feval(fun,x0,varargin{:});%在一开始的时候输入7、格式有错误为:[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)2*x(2)+x(1)]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的命令如下:x0=[32]';[x,val,k]=bfgs('fun','gfun',x0)x=1.8、0e-05*0.0513-0.1555val=1.8846e-12k=3从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、分别利用算法和算法的
6、{:});oldf=feval(fun,x0,varargin{:});if(newf0)Bk=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk*yk')/(yk'*sk);endk=k+1;x0=x;endval=feval(fun,x0,varargin{:});%在一开始的时候输入
7、格式有错误为:[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)2*x(2)+x(1)]';选取初始点为,调用函数程序,得出最小极值点为,极小值为,在界面框中输入的命令如下:x0=[32]';[x,val,k]=bfgs('fun','gfun',x0)x=1.
8、0e-05*0.0513-0.1555val=1.8846e-12k=3从结果可以看出迭代次数为次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。2、分别利用算法和算法的
此文档下载收益归作者所有