优化设计作业及程序_第1页
优化设计作业及程序_第2页
优化设计作业及程序_第3页
优化设计作业及程序_第4页
优化设计作业及程序_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、优化设计程序及作业1进退法求搜索区间程序:function hu=hunt(x1,h)%定义函数为hunt,x1为初始值,h为步长f=(x)x2-7*x+10;f1=f(x1);x2=x1+h;f2=f(x2);if f1<f2 h=-h; x3=x1;f3=f(x3); x1=x2;f1=(x1); x2=x3;f2=f(x2);end x3=x2+h;f3=f(x3); while f3<f2 h=h; x1=x2;f1=f(x1); x2=x3;f2=f(x2); x3=x2+h;f3=f(x3); end display('所求区间') a=x1,b=x3

2、end在命令窗口运行hunt(0,0.1),得搜索区间3.4,3.62黄金分割法求极值function g=gold(a,b,j)%a,b为搜索区间,j为精度f=(x)x2-7*x+10;k=0.6180339887;x1=a+(1-k)*(b-a);x2=a+k*(b-a);while abs(a-b)>j f1=f(x1); f2=f(x2); if f1<f2 b=x2;x2=x1; x1=a+(1-k)*(b-a); else a=x1; x1=x2; x2=a+k*(b-a); end enddisplay('所求最优解')x=(a+b)/2display

3、('所求函数')y=f(x)在命令窗口运行gold(3.4,3.6,0.01)得到所求最优解:x =3.4798所求函数值:y = -2.2496黄金分割总程序function hj=hjfg(q1,h,j)%定义黄金分割法为hjfg,x1为初始值,h为初始步长,j为初始精度f=(x)x2-7*x+10;f1=f(q1);q2=q1+h;f2=f(q2);if f1<f2 h=-h; q3=q1;f3=f(q3); q1=q2;f1=(q1); q2=q3;f2=f(q2);end q3=q2+h;f3=f(q3); while f3<f2 h=h; q1=q2;f

4、1=f(q1); q2=q3;f2=f(q2); q3=q2+h;f3=f(q3); end a=q1; b=q3;k=0.6180339887;c1=a+(1-k)*(b-a);c2=a+k*(b-a);while abs(a-b)>j f1=f(c1); f2=f(q2); if f1<f2 b=c2;c2=c1; c1=a+(1-k)*(b-a); else a=c1; c1=c2; q2=a+k*(b-a); end enddisplay('所求x')x=(a+b)/2display('所求y')y=f(x)在命令窗口运行hjfg(0,0.1

5、,0.01)得到所求x:x =3.4798所求y:y = -2.24963坐标轮换法求二元函数极值function zblh(q,j,h)%定义坐标轮换法函数为zblh,q为初始值,j为精度,h为初始步长zb=(x)60-10*x(1)-4*x(2)+x(1)2+x(2)2-x(1)*x(2); p3=q;p1=p3+1;s1=1 0;s2=0 1;while norm(p1-p3)>j for i=1:2 if i=1 s=s1;p1=p3;p=p1; else s=s2;p=p2; end%黄金分割法子程序 f=(x)zb(p+x.*s); %进退法子程序 x1=0; x2=x1+h

6、; f2=f(x2);f1=f(x1); if f1<f2 h=-h; x3=x1;f3=f(x3); x1=x2;f1=(x1); x2=x3;f2=f(x2); end x3=x2+h;f3=f(x3); while f3<f2 h=h; x1=x2;f1=f(x1); x2=x3;f2=f(x2); x3=x2+h;f3=f(x3); end a=x1;b=x3; k=0.6180339887; c1=a+(1-k)*(b-a);c2=a+k*(b-a); while abs(a-b)>0.1 f1=f(c1);f2=f(c2); if f1<f2 b=c2;c2

7、=c1;c1=a+(1-k)*(b-a); else a=c1;c1=c2;c2=a+k*(b-a); end end r=(a+b)/2; if i=1 p2=p+r.*s; else p3=p+r.*s; end endenddisplay('极值点x:')x=p3display('函数值y:')y=zb(p3)输入初始点0 0,精度0.05,初始步长0.05 得到极值点x:x = 7.9854 5.9854函数值y:y =8.00024外惩罚函数function cf=cfhs(q,j,r,c,h)%定义外惩罚函数为cfhs,q为初始值,j为精度,r为惩罚

8、因子,c为收缩系数,h为初始步长cf=(x)2*x(1)2+2*x(2)2-2*x(1)*x(2)-4*x(1)-6*x(2)+r*(-2+x(1)+x(2)+x(1)-5*x(2)-5+1/x(1)+1/x(2)2;p3=q;p1=p3+1;s1=1 0;s2=0 1;while norm(p1-p3)>j r=r*c; for i=1:2 if i=1 s=s1;p1=p3;p=p1; else s=s2;p=p2; end%黄金分割法子程序 f=(x)cf(p+x.*s); %进退法 x1=0; x2=x1+h; f2=f(x2);f1=f(x1); if f1<f2 h=-

9、h; x3=x1;f3=f(x3); x1=x2;f1=(x1); x2=x3;f2=f(x2); end x3=x2+h;f3=f(x3); while f3<f2 h=h; x1=x2;f1=f(x1); x2=x3;f2=f(x2); x3=x2+h;f3=f(x3); end a=x1;b=x3; k=0.6180339887; %黄金分割部分 c1=a+(1-k)*(b-a);c2=a+k*(b-a); while abs(a-b)>0.1 f1=f(c1);f2=f(c2); if f1<f2 b=c2;c2=c1;c1=a+(1-k)*(b-a); else a=c1;c1=c2;c2=a+k*(b-a); end end r=(a+b)/2; if i=1 p2=p+r.*s; else p3=p+r.*s; end endenddisplay('极值点x')x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论