最优化马昌凤第五章课后复习

上传人:汽*** 文档编号:469590524 上传时间:2022-12-16 格式:DOC 页数:11 大小:62.50KB
返回 下载 相关 举报
最优化马昌凤第五章课后复习_第1页
第1页 / 共11页
最优化马昌凤第五章课后复习_第2页
第2页 / 共11页
最优化马昌凤第五章课后复习_第3页
第3页 / 共11页
最优化马昌凤第五章课后复习_第4页
第4页 / 共11页
最优化马昌凤第五章课后复习_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《最优化马昌凤第五章课后复习》由会员分享,可在线阅读,更多相关《最优化马昌凤第五章课后复习(11页珍藏版)》请在金锄头文库上搜索。

1、最优化方法及其 Matlab 程序设计习题作业暨实验报告学院:数学与信息科学学院 班级: 12 级信计一班 姓名:李明 学号: 1201214049第四章 共轭梯度法一、上机问题与求解过程1、用 DFP 算法求解 min f (x)x2 3x2,取初始点和初始矩阵为x0111,H021.。11解:仿照书上编写DFP程序,将程序HESS矩阵变为Ho具体如下:function x,val,k=dfp(fun,gfun,x0) % 功能:用 DFP 算法求解吴宇舒问题: min f(x)% 输入: x0 是初始点, fun,gfun 分别是目标函数及其梯度% 输出: x,val 分别是近似最优点和最

2、优值, k 是迭代次数 maxk=1e5; % 给出最大迭代次数 rho=0.55;sigma=0.4;epsilon=1e-5;k=0; n=length(x0);Hk=2 1;1 1;while (kmaxk)gk=feval(gfun,x0); % 计算梯度if (norm(gk)epsilon), break ;end dk=-Hk*gk; % 计算搜索方向 m=0;mk=0;while (m20) % 用 Armijo 搜索求步长if(feval(fu n,x0+rhoAm*dk)0)Hk=Hk-(Hk*yk*yk*Hk)/(yk*Hk*yk)+(sk*sk)/(sk*yk);k=k

3、+1;x0=x;end val=feval(fun,x0);然后仿照书上建立两个目标函数和梯度的 M 文件:function f=fun(x)f=x(1f2+3*x(2)A2;function g=gfun(x)g=2*x(1)6*x(2);选取初始点为 1,1 ,调用函数程序,得出最小极值点为 0.2203 10 6, 0.1599 10 6,极小值为 1.2527 10 13 ,在界面框中输入的 程序如下:x0=1 -1;x,val,k=dfp(fun,gfun,x0)x =1.0e-06 *-0.2203-0.1599 val =1.2527e-13k =4从结果可以看出迭代次数为 4

4、次,如果选取不同的初值点则迭代 次数不一样,但是极小值相同。2、用BFGS算法求f (x)xfx1x2 x;的极小点,选取初始点为x0 (3,2)T解:仿照书上编写BFGS程序具体如下:function x,val,k=bfgs(fun,gfun,x0,varargin)%功能:用 BFGS 算法求解无约束问题: min f(x) ;% 输入: x0 是初始点, fun,gfun 分别是目标函数及梯度;%varargin 是输入的可变参数变量,简单调用 bfgs 时可以忽略它; %但若其他程序循环调用该程序时将会发生重要的作用% 输出: x,val 分别为近似最优点和最优值, k 是迭代次数

5、maxk=500;rho=0.55;sigma=0.4;epsilon=1e-5;k=0; n=length(x0);Bk=eye(n);while (kmaxk)gk=feval(gfun,x0,varargin:);if (norm(gk)epsilon), break ;enddk=-Bkgk; % 解方程组,计算搜索方向m=0;mk=0;while (m20) % 用 Armijo 搜索求步长n ewf=feval(fu n,xO+rhAm*dk,varargi n:);oldf=feval(fun,x0,varargin:);if(n ewf0)Bk=Bk-(Bk*sk*sk*Bk)

6、/(sk*Bk*sk)+(yk*yk)/(yk*sk);endk=k+1;x0=x;endval=feval(fun,x0,varargin:);%在一开始的时候输入格式有错误为:x,val,k=bfgs( fun ,gfun ,x0,varargin)% 后来改为 x,val,k=bfgs(fun,gfun,x0) 得出正确答案建立两个目标函数和梯度的 M 文件:function f=fun(x)f=x(1)A2+x (2) A2+x (1)*x(2);function g=gfun(x)g=2*x(1)+x(2)2*x(2)+x(1);选 取 初 始 点 为 3,2 , 调 用 函 数 程

7、 序 , 得 出 最 小 极 值 点 为 0.0513 10 5, 1.5555 10 5,极小值为 1.8846 10 6 ,在界面框中输入的命 令如下:x0=3 2;x,val,k=bfgs(fun,gfun,x0)x =1.0e-05 *0.0513-0.1555val =1.8846e-12k =3 从结果可以看出迭代次数为 3 次,如果选取不同的初值点则迭代 次数不一样,但是极小值相同。3、分别利用BFGS算法和DFP算法的Matlab程序求解下列优化问题(1) min f (x)x12 x22 3x1 x1x2 3, 取 x0 (0,0)T;(2) min f(x) 4(1 Xi)

8、2 5(x2 xj)2,取 x(2,0)T;解:(1)BFGS 算法解题与前面程序相同,编写不同的函数文件,如下:function f=fun(x)f=x(1)A2+x (2)A2-3*x(1)-x(1)*x (2)+3;function g=gfun(x)g=2*x(1)-x(2)-32*x(2)-x(1);在窗口中输入命令并得出结果:x0=0 0;x,val,k=bfgs(fun,gfun,x0)x =2.00001.0000val =3.4737e-12k =4由输入的命令与现实的结果可以知道,极小值点为2,1,迭代的次数为 4 次。DFP 算法解题: 在上面计算的基础之上,添加函数文件

9、,调用第一题程序:function He=Hess(x)He=2 ,-1;-1, 2;在窗口中输入命令并得出结果:x0=0 0;x,val,k=dfp(fun,gfun,x0)x =21val =0k =1由输入的命令与现实的结果可以知道, 极小值点为 2,1 ,迭代的次 数为1次。(2) BFGS算法解题 与前面程序相同,编写不同的函数文件,如下: function f=fun(x)f=4*(1-x(1)f2+5*(x (2)-x(1)A2);function g=gfun(x)g=-8*(1-x(1)-10*x(1)*(x(2)-x(1)A2)10*(x(2)-x(1)A2);在窗口中输入

10、命令并得出结果:x0=2 0;x,val,k=bfgs(fun,gfun,x0)x =1.00001.0000val =-1.6236e-06k =31由输入的命令与现实的结果可以知道,极小值点为 1,1 ,迭代的次数为 31 次。DFP 算法解题:在上面计算的基础之上,添加函数文件,调用第一题程序:function He=Hess(x)He=8-10*(x (2)-x(1F2)+20*x ,-10*x(1);-10*x(1), 10;在窗口中输入命令并得出结果:x0=2 0;x,val,k=dfp(fun,gfun,x0)x =1.00001.0000val =1.7009e-07k =18

11、由输入的命令与现实的结果可以知道, 极小值点为 1,1 ,迭代的次 数为18次。4、分别利用 BFGS 算法和 DFP 算法的 Matlab 程序求 Powell 奇异函数的 极小值:2 2 2 2min f (x) (x1 10x2) 5(x3 10x4) (x2 2x3) 10(x1 x4) , 初始点取为 x0 (3, 1,0,1)T 。解:BFGS算法解题与前面程序相同,编写不同的函数文件,如下:function f=fun(x)f=(x(1)+10*x(2)A2+5*(x(3)-10*x(4)A2+(x (2)-2*x(3)A2+10*(x(1)-x(4)A2;function g=

12、gfun(x) g=20*(x(1)+10*x(2)+20*(x(1)-x(4)20*(x(1)+10*x(2)+2*(x(2)-2*x(3)10*(x(3)-10*x(4)-4*(x(2)-2*x(3) -100*(x(3)-10*x(4)-20*(x(1)-x(4);在窗口中输入命令并得出结果:x0=3,-1,0,1;x,val,k=bfgs(fun,gfun,x0)x =1.0e-08 *-0.00620.01310.44650.0432val =8.1534e-17k =13由输入的命令与现实的结果可以知道,极小值点为 0.0062 10 8,0.0131 10 8,0.4465 10

13、 8,0.0432 10 8 ,迭代的次数为 13 次。DFP 算法解题:在上面计算的基础之上,添加Hess矩阵文件,function He=Hess(x)n=length(x);He=zeros(n,n);He=40,20,0,-20; 20,202,-4,0; 0,-4,18,-100; -20,0,-100,1020;调用第一题程序。由输入的命令与现实的结果可以知道,极小值 点为 0,0,0,0 。二、实验结果与心得通过上机作四道题可以发现使用拟牛顿法求解问题, DFP 方法需要 Hess 矩阵比较麻烦,但是计算结果精确程度较高,收敛速度快。迭代次数少。而BFGS方法不需要Hess矩阵,初始矩阵为单位矩阵, 但是迭代速度慢。在做第四题的时候用 DFP 方法计算速度较快,但 结果明显不精确到真实值。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号