资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
实验的题目和要求 一、所属课程名称:最优化方法 二、实验日期:2010 年 5 月 10 日2010 年 5 月 15 日 三、实验目的 掌握最速下降法,牛顿法和共轭梯度法的算法思想,并能上机 编程实现相应的算法。 二、实验要求用 MATLAB 实现最速下降法,牛顿法和共轭梯度法求解实例。 四、实验原理最速下降法是以负梯度方向最为下降方向的极小化算法,相邻 两次的搜索方向是互相直交的。 牛顿法是利用目标函数)(xf在迭代点kx处的 Taylor 展开式作为模型函数,并利用这个二次模型函数的极小点序列去逼近目标函数的极小点。共轭梯度法它的每一个搜索方向 是互相共轭的, 而这些搜索方向kd仅仅是负梯度方向kg与上一次接 待的搜索方向1kd的组合。 五运行及结果如下 :最速下降法:题目:f=(x-2)2+(y-4)2M文件:function R,n=steel(x0,y0,eps) syms x; syms y; f=(x-2)2+(y-4)2; v=x,y; j=jacobian(f,v); T=subs(j(1),x,x0),subs(j(2),y,y0); temp=sqrt(T(1)2+(T(2)2); x1=x0;y1=y0; n=0; syms kk ; while (tempeps) d=-T; f1=x1+kk*d(1);f2=y1+kk*d(2); fT=subs(j(1),x,f1),subs(j(2),y,f2); fun=sqrt(fT(1)2+(fT(2)2); Mini=Gold(fun,0,1,0.00001); x0=x1+Mini*d(1);y0=y1+Mini*d(2); T=subs(j(1),x,x0),subs(j(2),y,y0); temp=sqrt(T(1)2+(T(2)2); x1=x0;y1=y0; n=n+1; endR=x0,y0调用黄金分割法: M 文件:function Mini=Gold(f,a0,b0,eps) syms x;format long; syms kk ; u=a0+0.382*(b0-a0); v=a0+0.618*(b0-a0); k=0; a=a0;b=b0; array(k+1,1)=a;array(k+1,2)=b; while(b-a)/(b0-a0)=eps) Fu=subs(f,kk,u); Fv=subs(f,kk,v); if (FuFv) a=u; u=v; v=a+0.618*(b-a); k=k+1; endarray(k+1,1)=a;array(k+1,2)=b; endMini=(a+b)/2; 输入:R,n=steel(0,1,0.0001) R = 1.99999413667642 3.99999120501463 R = 1.99999413667642 3.99999120501463 n = 1 牛顿法:题目:f=(x-2)2+(y-4)2 M 文件:syms x1x2 ; f=(x1-2)2+(x2-4)2;v=x1,x2; df=jacobian(f,v); df=df.; G=jacobian(df,v); epson=1e-12;x0=0,0;g1=subs(df,x1,x2,x0(1,1),x0(2,1);G1=subs(G,x1,x2,x0(1,1),x0(2,1);k=0;mul_count=0;sum_count=0; mul_count=mul_count+12;sum_count=sum_count+6; while(norm(g1)epson) p=-G1g1; x0=x0+p; g1=subs(df,x1,x2,x0(1,1),x0(2,1); G1=subs(G,x1,x2,x0(1,1),x0(2,1); k=k+1; mul_count=mul_count+16;sum_count=sum_count+11; end ; k x0 mul_count sum_count 结果: :k = 1 x0 = 2 4 mul_count = 28 sum_count = 17 共轭梯度法:题目:f=(x-2)2+(y-4)2M 文件:function f=conjugate_grad_2d(x0,t) x=x0; syms xiyiaf=(xi-2)2+(yi-4)2; fx=diff(f,xi); fy=diff(f,yi); fx=subs(fx,xi,yi,x0); fy=subs(fy,xi,yi,x0); fi=fx,fy; count=0; while double(sqrt(fx2+fy2)t s=-fi; if counte step=step+1; dk=-fan; %点 x(k) 处的搜索步长ak=(2*x(1)-4)*dk(1)+(2*x(2)-6)*dk(2)/(dk(1)*dk(2)-2*dk(1)2-2*dk(2)2); xu=x+ak*dk; x=xu; %输出结果optim_fx=subs(fx,x1 x2,x(1) x(2); fprintf( x= %d %d optim_fx=%dn,x(1),x(2),optim_fx); %计算目标函数点x(k+1) 处一阶导数值fan=subs(fxd1,x1 x2,x(1) x(2); g=0; for i=1:length(fan) g=g+fan(i)2; end g=sqrt(g); end % 输出结果optim_fx=subs(fx,x1 x2,x(1) x(2); fprintf(n最速下降法 n 结果: n x= %d %d optim_fx=%dn,x(1),x(2),optim_fx);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号