




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、机械优化设计作业1用二次插值法求函数t t 1 t 22极小值,精度e=0.01。在MATLAB的M文件编辑器中编写的 M文件,如下:f=inline('(t+1)*(t-2)A2','t')a=0;b=3;epsilon=0.01;t1=a;f1=f(t1);t3=b;f3=f(t3);t2=0.5*(t1+t3);f2=f(t2);c1=(f3-f1)/(t3-t1);C2=(f2-f1)/(t2-t1)-c1)/(t2-t3);t4=0.5*(t1+t3-c1/c2);f4=f(t4);k=0;while(abs(t4-t2)>=epsilon)if
2、 t2<t4if f2>f4 f1=f2;t1=t2; t2=t4;f2=f4; elsef3=f4;t3=t4; end else if f2>f4 f3=f2;t3=t2; t2=t4;f2=f4; else f1=f4;t2=t4; end end c1=(f3-f1)/(t3-t1); c2=(f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0.5*(t1+t3-c1/c2);f4=f(t4); k=k+1; end%输出最优解if f2>f4t=t4;f=f(t4);elset=t2;f=f(t2);endfprintf(1,迭代计算 k=%3.
3、0fn',k)fprintf(1,极小点坐标 t=%3.0fn',t)fprintf(1,函数值 f=%3.4fn',f)运行结果如下: 迭代计算k= 7 极小点坐标t= 2 函数值f=0.00012用黄金分割法求函数t3/F Vt21的极小值,精度e=0.01 o在MATLAB的M文件编辑器中编写的M文件,如下:f=inline('tA(2/3)-(tA2+1)A(1/3)','t');a=0;b=3;epsilon=0.01;t1=b-0.618*(b-a);f1=f(t1); t2=a+0.618*(b-a);f2=f(t2); k
4、=1;while abs(b-a)>=epsilonif f1<f2b=t2;t2=t1;f2=f1;t1=b-0.618*(b-a);f1=f(t1);elsea=t1;t1=t2;f1=f2;t2=a+0.618*(b-a);f2=f(t2);endt=0.5*(b+a);k=k+1;f0=f(t);endfprintf(1,迭代次数 k=% 3.0fn',k) fprintf(1,迭代区间一左端 a=%3.4fn',a) fprintf(1,'试点 1 坐标值 t1=%3.4fn',t1) fprintf(1,'函数值 f1=%3.4f
5、n',f(t1) fprintf(1,迭代区间一右端 b=%3.4fn',b) fprintf(1,'试点 2 坐标值 t2=%3.4fn',t2) fprintf(1,'函数值 f2=%3.4fn',f(t2) fprintf(1,'区间中点 t=%3.4fn',t) fprintf(1,'函数值 f0=%3.4fn',f(t) 运行结果如下: 迭代次数k= 13 迭代区间一左端 a=0.0000 试点1坐标值t1=0.0036 函数值 f1=-0.9767 迭代区间一右端 b=0.0093 试点2坐标值t2=0
6、.0058 函数值 f2=-0.9679 区间中点t=0.0047 函数值 f0=-0.9721由黄金分割法在初始区间0, 3求得的极小值点为t=0.0047 ,极小值为-0.9721。423.用牛顿法、阻尼牛顿法及变尺度法求函数f x1,X2% 2 为2x2的极小点。在用牛屯法在 MATLAB的M文件编辑器中编写的M文件,如下:function x,fx,k=niudunfa(x0)syms x1 x2f=(x1-2)A4+(x1-2*x2)A2;fx=0;v=x1,x2;df=jacobian(f,v);df=df.'G=jacobian(df,v);epson=1e-12;g1=
7、subs(df,x1,x2,x0(1,1),x0(2,1);G1=subs(G,x1,x2,x0(1,1),x0(2,1);k=0;p=-G1g1;x0=x0+p;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;endx=x0;fx=subs(f,x1,x2,x(1,1),x(2,1);运行结果如下:>> x,fx,k=niudunfa(1;1)x =1.9999554476059523381489991377
8、8970.99997772380297616907449956889483fx =0.0000000000000000039398907941382470301534502947647k =23(2)用阻尼牛顿法在 MATLAB的M文件编辑器中编写的M文件,如下:function xfx,k=zuniniudunfa(x0)% 阻尼牛顿法syms x1 x2f=(x1-2)A4+(x1-2*x2)A2;fx=0;v=x1,x2;df=jacobian(f,v);df=df.'G=jacobian(df,v);epson=1e-12;% 停机原则g1=subs(df,x1,x2,x0(1
9、,1),x0(2,1);G1=subs(G,x1,x2,x0(1,1),x0(2,1);k=0;%迭代次数p=-G1g1;a0=-p'*g1/(p'*G1*p);x0=x0+a0*p;while(norm(a0*p)>epson)p=-G1g1;a0=-p'*g1/(p'*G1*p);x0=x0+a0*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;endx=x0;fx=subs(f,x1,x2,x0(1,1),x0(2,1);运行结果如下:>>
10、x,fx,k=zuniniudunfa(1;1)x=1.99995544760595233814899913778970.99997772380297616907449956889483fx=0.0000000000000000039398907941382470301534502947647 k=23(3)用变尺度法在 MATLAB的M文件编辑器中编写的M文件,如下:3 21 24.用共轲梯度法求函数f x1,x2-x1-x2 x1x2 2x1的极小点22(1)用共轲梯度法在 MATLAB的M文件编辑器中编写的M文件,如下:function y,x,k=CG(A,b,c,x0)初知梯度法解
11、minf (x) =0.5*X'*A*X+b'x+ceps=1e-6;%迭代停机原则%fx=0.5*x0'.*A.*x0+b'.*x0+c;r0=A*x0+b;if norm(r0)<=eps x=x0;y=0.5*x'*A*x+b'*x+c; k=0; end p0=-r0;a=-r0'*p0/(p0'*A*p0);x1=x0+a*p0;r1=A*x1+b;k=0;while norm(r1)>epsbeta=(r1'*r1)/(r0'*r0);p1=-r1+beta*p0;alpha=-(r1
12、9;*p1)/(p1'*A*p1);x1=x1+alpha*p1;r2=A*x1+b;p0=p1;r0=r1;r1=r2;k=k+1;endx=x1;y=0.5*x'*A*x+b'*x+c;运行结果如下:y,x,k=CG(3-1;-11,-2;0,0,2;1)y = -1x =1.00001.0000k = 1(2)用变尺度法在 MATLAB的M文件编辑器中编写的M文件,如下:function x,fx,k=bianchidufa(A,b,c,x0)%用变尺度法求 fx=0.5*x'*A*x+b'*x+c;epson=1e-12;g0=A*x0+b;G0
13、=A;H0=eye(2);k=0;d0=-H0*g0;a0=-d0'*g0/(d0'*G0*d0);s0=a0*d0;%x(k+1)-x(k);y0=A*a0*d0;%g(k+1)-g(k);x1=x0+a0*d0;while (norm(s0)>=epson)switch kcase 10x0=x1;g0=A*x0+b;H0=eye(2);k=0;d0=-H0*g0;a0=-d0'*g0/(d0'*G0*d0);s0=a0*d0;x1=x0+a0*d0;breakotherwise g1=A*x1+b; y0=A*a0*d0; s0=a0*d0;% H1
14、=H0+s0*s0'/(s0'*y0)-H0*y0*y0'*H0/(y0'*H0*y0);H1=H0+(1+y0'*H0*y0/(s0'*y0)*s0*s0'-H0*y0*s0'-s0*y0'*H0)/(s0'*y0); k=k+1; d1=-H1*g1; a1=-d1'*g1/(d1'*G0*d1); a0=a1; d0=d1; H0=H1; s0=a0*d0; x1=x1+a0*d0; break end end x=x1; fx=0.5*x1'*A*x1+b'*x1+c; 运行
15、结果如下: » x,fx,k=bianchidufa(3 -1;-11,-2;0,0,2;1)H1 = 0.40310.25780.25780.8945fx =-1x = 1.0000 1.0000 fx=-1k=1故函数极小点是点(1,1 )5.用鲍威尔法求函数f x1,x2x12 2x2 4x1 2x1x2的极小点。用鲍威尔法在 MATLAB的M文件编辑器中编写的M文件,如下:function x,fx,k=bowell(A,b,c,x0)%包威尔法d01=1;0; d02=0;1; x02=0;0; esp=1e-12;%停机原则k=0; %迭代次数 while norm(x0
16、-x02)>=espk=k+1;g01=A*x0+b; a01=-d01'*g01/(d01'*A*d01);x01=x0+a01*d01;g02=A*x01+b;a02=-d02'*g02/(d02'*A*d02);x02=x01+a02*d02;d10=x02-x0;g10=A*x02+b;a10=-d10'*g10/(d10'*A*d10);x10=x0+a01*d01;d01=d02;d02=d10;x0=x10;endx=x0;fx=0.5*x'*A*x+b'*x+c;运行结果如下:x,fx,k=bowell(2
17、-2;-24,-4;0,0,2;1)fx =-8x =42fx =-8k =36.用单纯形法求线性规划问题min f(x)I.Ixi 2.2x2 3.3& 4.4x4Xix2x3 4st. x1 2x22.5x3 3x4 5X 0( j 1,2,3,4)用单纯形法在MATLAB的M文件编辑器中编写的 M文件,如下:%单纯形法 matlab 程序-danchunxingfa%求解标准型线性规划:max c*x; s.t. A*x=b; x>=0%本函数中的 A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量 % N是初始的基变量的下标%输出变量sol是最优解,其中松弛
18、变量(或剩余变量)可能不为0%输出变量val是最优目标值,kk是迭代次数function sol,val,kk=danchunxingfa(A,N) mA,nA=size(A);kk=0;%迭代次数flag=1;while flagkk=kk+1;if A(mA,:)<=0%已找到最优解flag=0;sol=zeros(1,nA-1);for i=1:mA-1 sol(N(i)=A(i,nA); end val=-A(mA,nA); elsefor i=1:nA-1if A(mA,i)>0&A(1:mA-1,i)<=0% 问题有无界解disp('have in
19、finite solution!');flag=0; break ; end end if flag %还不是最优表,进行转轴运算 temp=0; for i=1:nA-1 if A(mA,i)>temp temp=A(mA,i); inb=i;%进基变量的下标end end sita=zeros(1,mA-1); for i=1:mA-1 if A(i,inb)>0 sita(i)=A(i,nA)/A(i,inb); end end temp=inf; for i=1:mA-1 if sita(i)>0&sita(i)<temp temp=sita(i
20、); outb=i;%出基变量下标end end %以下更新N for i=1:mA-1 if i=outb N(i)=inb; end end %以下进行转轴运算A(outb,:)=A(outb,:)/A(outb,inb);for i=1:mA if i=outb A(i,:)=A(i,:)-A(outb,:)*A(i,inb); endend end end end ;令g(x) 1.1x12.2x2 3.3x3 4.4x4,贝U求 min f (x)1.1x1 2.2x2 3.3x3 4.4x4就变成求maxg(x),即min f (x) max g(x).运行结果如下:>>
21、; A=11104;1 2 2.535;1.1 2.2 -3.3 4.4 0;N=3;4;sol,val,kk= danchunxingfa (A,N) sol =004.00001.6667val =7.3333 kk =2所以,经两次转轴运算,得到的最优解为Xix2 0,x3 4.0000, x4 1.667,min f (x)7.33337.求解线性规划问题min z 7x1 12x2 9x1 4x2 x3 360 4x1 5x2 x4 200s.t. 3x1 10x2x5300Xj0( j 1,2,3,4,5)用单纯形法在 MATLAB的M文件编辑器中编写的M文件,如下:%11纯形法
22、matlab 程序-danchunxingfa%求解标准型线性规划 :max c*x; s.t. A*x=b; x>=0%本函数中的 A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量 b% N是初始的基变量的下标%输出变量sol是最优解,其中松弛变量(或剩余变量)可能不为 0 %输出变量val是最优目标值,kk是迭代次数 function sol,val,kk=danchunxingfa(A,N) mA,nA=size(A);kk=0;%迭代次数flag=1;while flag kk=kk+1;if A(mA,:)<=0%已找到最优解flag=0;sol=zeros(1,nA-1);for i=1:mA-1 sol(N(i)=A(i,nA); end val=-A(mA,nA); else for i=1:nA-1 if A(mA,i)>0&A(1:mA-1,i)<=0% 问题有无界解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025赤峰龙韵城市建设有限公司所属子公司员工招聘21人模拟试卷完整参考答案详解
- 2025广西南宁孔庙管理所招聘编外人员2人模拟试卷及完整答案详解1套
- 2025广东水利电力职业技术学院招聘32人模拟试卷及答案详解(夺冠)
- 2025年台州市黄岩区卫健系统公开招聘卫技人员26人考前自测高频考点模拟试题及一套完整答案详解
- 2025年安徽安科生物工程(集团)股份有限公司招聘考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025年莆田市供电服务有限公司招聘29人模拟试卷及答案详解(网校专用)
- 2025年潍坊寒亭区(经济区)公开招聘中小学教师(11名)模拟试卷及答案详解(易错题)
- 2025年5月广东深圳市光明区应急管理局选聘一般特聘专干1人模拟试卷及完整答案详解
- 2025昆明市盘龙区面向全国引进高中教育管理人才模拟试卷及答案详解1套
- 2025年蚌埠市第二人民医院招聘5人模拟试卷(含答案详解)
- 眉山市发展和改革委员会市项目工作推进中心公开选调事业人员的考试参考题库及答案解析
- 与生育相关的慢性子宫内膜炎诊治专家共识(2025年版)解读
- 2024义务教育科学新课标课程标准考试真题及答案
- (2025年标准)化妆学员协议书
- DG-TJ08-2461-2024 旧住房更新改造查勘标准
- 闲置资产盘活管理办法
- 中职历史说课课件
- 遥感科学与技术课件
- 2025年4月自考00840第二外语(日语)试题
- 社交媒体焦虑成因-洞察及研究
- 生产运营销售管理优化项目销售预测优化设计方案
评论
0/150
提交评论