大连理工优化方法大作业MATLAB编程.docx
《大连理工优化方法大作业MATLAB编程.docx》由会员分享,可在线阅读,更多相关《大连理工优化方法大作业MATLAB编程.docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上function x,dk,k=fjqx(x,s)flag=0;a=0;b=0;k=0;d=1;while(flag=0)p,q=getpq(x,d,s);if (p=0)&(q=0)dk=d;x=x+d*s;flag=1;end k=k+1; if(p=0)&(q0)a=d;d=min2*d,(d+b)/2;endend%定义求函数值的函数fun,当输入为x0=(x1,x2)时,输出为ffunction f=fun(x) f=(x(2)-x(1)2)2+(1-x(1)2;function gf=gfun(x) gf=-4*x(1)*(x(2)-x(1)2)+2*(x
2、(1)-1),2*(x(2)-x(1)2);function p,q=getpq(x,d,s) p=fun(x)-fun(x+d*s)+0.20*d*gfun(x)*s;q=gfun(x+d*s)*s-0.60*gfun(x)*s;结果:x=0,1;s=-1,1; x,dk,k=fjqx(x,s)x =-0.0000 1.0000dk =1.1102e-016k =54function f= fun( X )%所求问题目标函数f=X(1)2-2*X(1)*X(2)+2*X(2)2+X(3)2+ X(4)2- X(2)*X(3)+2*X(1)+3*X(2)-X(3);endfunction g=
3、 gfun( X )%所求问题目标函数梯度g=2*X(1)-2*X(2)+2,-2*X(1)+4*X(2)-X(3)+3,2*X(3)-X(2)-1,2*X(4);endfunction x,val,k = frcg( fun,gfun,x0 )%功能:用FR共轭梯度法求无约束问题最小值%输入:x0是初始点,fun和gfun分别是目标函数和梯度%输出:x、val分别是最优点和最优值,k是迭代次数maxk=5000;%最大迭代次数rho=0.5;sigma=0.4;k=0;eps=10e-6;n=length(x0);while(k=0.0) d=-g; end end if(norm(g)ep
4、s) break; end m=0;mk=0; while(m20) if(feval(fun,x0+rhom*d) x0=0,0,0,0; x,val,k = frcg( fun,gfun,x0 )x = -4.0000 -3.0000 -1.0000 0val = -8.0000k =21或者function x,f,k=second(x)k=0;dk=dfun(x);g0=gfun(x);s=-g0;x=x+dk*s;g1=gfun(x);while(norm(g1)=0.02)if(k=3)k=0;g0=gfun(x);s=-g0;x=x+dk*s;g1=gfun(x); else i
5、f(k3)u=(norm(g1)2)/(norm(g0)2); s=-g1+u*s;k=k+1;g0=g1;dk=dfun(x);x=x+dk*s;g1=gfun(x);endendf=fun(x);endfunction f=fun(x) f=x(1)2-2*x(1)*x(2)+2*x(2)2+x(3)2+x(4)2-x(2)*x(3)+2*x(1)+3*x(2)-x(3);function gf=gfun(x)gf=2*x(1)-2*x(2)+2,-2*x(1)+4*x(2)-x(3)+3,2*x(3)-x(2)-1,2*x(4);function p,q=con(x,d)ss=-gfun
6、(x);p=fun(x)-fun(x+d*ss)+0.2*d*gfun(x)*(ss);q=gfun(x+d*ss)*(ss)-0.6*gfun(x)*(ss);function dk=dfun(x)flag=0;a=0;d=1;while(flag=0)p,q=con(x,d);if (p=0)&(q=0) dk=d;flag=1;end if(p=0)&(q x,f,k=second(x)x =-4.0147 -3.0132 -1.0090 0f = -7.9999k = 1function f,x,k=third_1(x) k=0; g=gfun(x);while(norm(g)=0.0
7、01) s=-g;dk=dfun(x,s);x=x+dk*s;k=k+1;g=gfun(x);f=fun(x);endfunction f=fun(x) f=x(1)+2*x(2)2+exp(x(1)2+x(2)2);function gf=gfun(x)gf=1+2*x(1)*exp(x(1)2+x(2)2),4*x(2)+2*x(2)*(x(1)2+x(2)2);function j_1,j_2=con(x,d,s)j_1=fun(x)-fun(x+d*s)+0.1*d*gfun(x)*(s);j_2=gfun(x+d*s)*(s)-0.5*gfun(x)*(s);function dk=
8、dfun(x,s)%获取步长flag=0;a=0;d=1;while(flag=0)p,q=con(x,d,s);if (p=0)&(q=0)dk=d;flag=1;end if(p=0)&(q=0.001)s=(-H*g);dk=dfun(x,s);x=x+dk*s;k=k+1;g=gfun(x);f=fun(x);endfunction f=fun(x) f=x(1)+2*x(2)2+exp(x(1)2+x(2)2);function gf=gfun(x)gf=1+2*x(1)*exp(x(1)2+x(2)2),4*x(2)+2*x(2)*(x(1)2+x(2)2);function gg
9、f=ggfun(x)ggf=(4*x(1)2+2)*exp(x(1)2+x(2)2),4*x(1)*x(2)*exp(x(1)2+x(2)2); 4*x(1)*x(2)*exp(x(1)2+x(2)2),4+(4*x(2)2+2)*exp(x(1)2+x(2)2);function j_1,j_2=con(x,d,s)j_1=fun(x)-fun(x+d*s)+0.1*d*gfun(x)*(s);j_2=gfun(x+d*s)*(s)-0.5*gfun(x)*(s);function dk=dfun(x,s)% 步长获取flag=0;a=0;d=1;b=10000;while(flag=0)p
10、,q=con(x,d,s);if (p=0)&(q=0) dk=d;flag=1;end if(p=0)&(q=(d+b)/2d=(d+b)/2;else d=2*d;endendEnd 结果:x=0,1;f,x,k=third_2(x)f =0.7729x = -0.4193 0.0001k =8(2) 程序:function f,x,k=third_3(x)k=0; X=cell(2);g=cell(2);X1=x;H=eye(2);g1=gfun(X1);s=(-H*g1);dk=dfun(X1,s);X2=X1+dk*s;g2=gfun(X2);while(norm(g2)=0.001
11、)dx=X2-X1;dg=g2-g1;v=dx/(dx*dg)-(H*dg)/(dg*H*dg);h1=H*dg*dg*H/(dg*H*dg);h2=dx*dx/(dx*dx);h3=dg*H*dg*v*v;H=H-h1+h2+h3;k=k+1;X1=X2;g1=gfun(X1);s=(-H*g1);dk=dfun(X1,s);X2=X1+dk*s;g2=gfun(X2);norm(g2);f=fun(x);x=X2;endfunction f=fun(x) f=x(1)+2*x(2)2+exp(x(1)2+x(2)2);function gf=gfun(x)gf=1+2*x(1)*exp(x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大连理工 优化 方法 作业 MATLAB 编程
限制150内