资源描述:
《最优化期末大作业.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、西安电子科技大学——电子工程学院最优化方法及应用上机报告科目:_______最优化方法及应用__________任课老师:_________________________姓名:_________________________学号:___________________________班级:_______________________一、问题描述(一)用牛顿法和最速下降法求解以下优化问题:mi最速下降法1)、算法程序functionmin=grads()symsx1x2x3x4pf=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*
2、x3)^4+10*(x1-x4)^4;e=0.01;k=1;x=[-0.1,-2.0,0.5,-2.5];df=[diff(f,x1)diff(f,x2)diff(f,x3)diff(f,x4)];dk=-subs(df,[x1,x2,x3,x4],x);while(norm(dk))>=e&(k<150)f=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4;df=[diff(f,x1)diff(f,x2)diff(f,x3)diff(f,x4)];dk=-subs(df,[x1,x2,x3,x4],x
3、);dk=subs(dk);x=yw(x,dk);k=k+1;endf=subs(f,[x1,x2,x3,x4],x);disp('初始点为:')disp('x=[-0.1,-2.0,0.5,-2.5]')disp('迭代次数为:')disp(k)disp('最小点是:')disp(x)disp('最小值是:')disp(f)returnend一维搜索(0.618法):functionm=yw(x,dk)e=0.01;symsx1x2x3x4f=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4;a=x;
4、b=x+dk;whilenorm(b-a)>eq1=a+0.328*(b-a);q2=a+0.618*(b-a);f1=subs(f,[x1,x2,x3,x4],q1);f2=subs(f,[x1,x2,x3,x4],q2);iff1>f2a=q1;elseb=q2;endf=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4;endm=(a+b)/2;2)、程序运行结果3)运行结果分析:经算得,得到的最小值为0.0094牛顿法1)、算法程序functionmin=new()e=0.001;k=1;sym
5、sx1x2x3x4;f=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4;df=[diff(f,x1)diff(f,x2)diff(f,x3)diff(f,x4)];x=[0.1,-2,1,-1]';dd=subs(df,[x1,x2,x3,x4],x);whilenorm(dd)>=e&&(k<=1000)dm1=[diff(df(1),x1),diff(df(1),x2),diff(df(1),x3),diff(df(1),x4)]';dm2=[diff(df(2),x1),diff(df(2),x
6、2),diff(df(2),x3),diff(df(2),x4)]';dm3=[diff(df(3),x1),diff(df(3),x2),diff(df(3),x3),diff(df(3),x4)]';dm4=[diff(df(4),x1),diff(df(4),x2),diff(df(4),x3),diff(df(4),x4)]';dm=[dm1,dm2,dm3,dm4]';dm=subs(dm,[x1,x2,x3,x4],x);dk=-dmdd';x=yiwei(x,dk);dd=subs(df,[x1,x2,x3,x4],x);k=k+1;e
7、ndf=subs(f,[x1,x2,x3,x4],x);disp('迭代次数为:'),disp(k)disp('最小点x='),disp(x)disp('最小值f='),disp(f)2)、程序运行结果一、问题描述(二)用内点法和外点法求解以下约束优化问题:内点法1)、算法程序m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);symsx1x2e;m(1)=1;c=0.2;a(1)=2;b(1)=0;f=x1^3+x2^2-e*(1/(2*x1+x2-2)+1/(1-x1));f0(1)=1
8、5;fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(