收藏 分销(赏)

机械优化设计MATLAB程序.doc

上传人:w****g 文档编号:2257496 上传时间:2024-05-24 格式:DOC 页数:19 大小:41.54KB
下载 相关 举报
机械优化设计MATLAB程序.doc_第1页
第1页 / 共19页
机械优化设计MATLAB程序.doc_第2页
第2页 / 共19页
机械优化设计MATLAB程序.doc_第3页
第3页 / 共19页
机械优化设计MATLAB程序.doc_第4页
第4页 / 共19页
机械优化设计MATLAB程序.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、(完整word版)机械优化设计MATLAB程序机械优化设计作业1. 用二次插值法求函数极小值,精度e=0.01。在MATLAB的M文件编辑器中编写的M文件,如下:f=inline(t+1)*(t-2)2,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 t2f4 f1=f2

2、;t1=t2; t2=t4;f2=f4; else f3=f4;t3=t4; end else if f2f4 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 f2f4 t=t4;f=f(t4);else t=t2;f=f(t2);endfprintf(1,迭代计算k=%3.0fn,k)fprintf(1,极小点坐标t=%3.0fn,t)f

3、printf(1,函数值f=%3.4fn,f)运行结果如下:迭代计算k= 7极小点坐标t= 2函数值f=0.00012. 用黄金分割法求函数的极小值,精度e=0.01。在MATLAB的M文件编辑器中编写的M文件,如下:f=inline(t(2/3)-(t2+1)(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=1;while abs(b-a)=epsilon if f1epson) p=-G1g1; x0=x0+p; g1=subs(df,x1,x2,x0(1,1),x0(2,

4、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.9999554476059523381489991377897 0.99997772380297616907449956889483 fx =0.0000000000000000039398907941382470301534502947647 k =23(2)用阻尼牛顿法在MATLAB的M文件编辑器中编写的M文件,如下:function x,fx,k=zuniniu

5、dunfa(x0)%阻尼牛顿法syms x1 x2f=(x1-2)4+(x1-2*x2)2;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,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(d

6、f,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);运行结果如下:x,fx,k=zuniniudunfa(1;1) x=1.99995544760595233814899913778970.99997772380297616907449956889483 fx=0.0000000000000000039398907941382470301534502947647 k=23(3)用变尺度法在MATLAB的M文件编辑器中编写的M文件,如下:4.

7、 用共轭梯度法求函数的极小点(1)用共轭梯度法在MATLAB的M文件编辑器中编写的M文件,如下:functiony,x,k=CG(A,b,c,x0)%共轭梯度法解minf(x)=0.5*X*A*X+bx+ceps=1e-6;%迭代停机原则%fx=0.5*x0.*A.*x0+b.*x0+c;r0=A*x0+b;if norm(r0)eps beta=(r1*r1)/(r0*r0); p1=-r1+beta*p0; alpha=-(r1*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.

8、5*x*A*x+b*x+c;运行结果如下:y,x,k=CG(3 -1;-1 1,-2;0,0,2;1)y = -1x = 1.0000 1.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=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=

9、x0+a0*d0;while (norm(s0)=epson) switch k case10 x0=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; break otherwise g1=A*x1+b; y0=A*a0*d0; s0=a0*d0; % H1=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;

10、d1=-H1*g1; a1=-d1*g1/(d1*G0*d1); a0=a1; d0=d1; H0=H1; s0=a0*d0; x1=x1+a0*d0; break endend x=x1; fx=0.5*x1*A*x1+b*x1+c;运行结果如下: x,fx,k=bianchidufa(3 -1;-1 1,-2;0,0,2;1)H1 =0.4031 0.2578 0.2578 0.8945fx = -1x = 1.0000 1.0000fx = -1k = 1 故函数极小点是点(1,1)5. 用鲍威尔法求函数的极小点。 用鲍威尔法在MATLAB的M文件编辑器中编写的M文件,如下:functi

11、on 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-x02)=esp k=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=d

12、10; x0=x10;endx=x0;fx=0.5*x*A*x+b*x+c;运行结果如下:x,fx,k=bowell(2 -2;-2 4,-4;0,0,2;1)fx = -8x = 4 2fx = -8k = 3 6. 用单纯形法求线性规划问题 用单纯形法在MATLAB的M文件编辑器中编写的M文件,如下:%单纯形法matlab程序-danchunxingfa% 求解标准型线性规划:max c*x; s.t. A*x=b; x=0 % 本函数中的A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量b % N是初始的基变量的下标 % 输出变量sol是最优解, 其中松弛变量(或剩余变量)

13、可能不为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&A(1:mA-1,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(

14、i)0&sita(i) A=1 1 1 0 4; 1 2 2.5 3 5; 1.1 2.2 -3.3 4.4 0;N=3;4;sol,val,kk=danchunxingfa(A,N)sol = 0 0 4.0000 1.6667val = 7.3333kk = 2所以,7. 求解线性规划问题 用单纯形法在MATLAB的M文件编辑器中编写的M文件,如下:%单纯形法matlab程序-danchunxingfa% 求解标准型线性规划:max c*x; s.t. A*x=b; x=0 % 本函数中的A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量b % N是初始的基变量的下标 % 输

15、出变量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&A(1:mA-1,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) A=9 4 1 0 0 360; 4 5 0 1 0 200; 3 10 0 0 1 300; 7 12 0 0 0 0; N=3;4;5; sol,val,kk=danchunxingfa(A,N)sol = 20 24 84 0 0val = 420kk = 3所以,经3次转轴运算,得到的最优解为

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 行业资料 > 机械/制造/汽车

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服