机械优化设计MATLAB程序_第1页
机械优化设计MATLAB程序_第2页
机械优化设计MATLAB程序_第3页
机械优化设计MATLAB程序_第4页
机械优化设计MATLAB程序_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

机械优化设计MATLAB程序机械优化设计MATLAB程序机械优化设计MATLAB程序机械优化设计MATLAB程序编制仅供参考审核批准生效日期地址:电话:传真:邮编:机械优化设计作业用二次插值法求函数极小值,精度e=。在MATLAB的M文件编辑器中编写的M文件,如下:f=inline('(t+1)*(t-2)^2','t')a=0;b=3;epsilon=;t1=a;f1=f(t1);t3=b;f3=f(t3);t2=*(t1+t3);f2=f(t2);c1=(f3-f1)/(t3-t1);c2=((f2-f1)/(t2-t1)-c1)/(t2-t3);t4=*(t1+t3-c1/c2);f4=f(t4);k=0;while(abs(t4-t2)>=epsilon)ift2<t4iff2>f4f1=f2;t1=t2;t2=t4;f2=f4;elsef3=f4;t3=t4;endelseiff2>f4f3=f2;t3=t2;t2=t4;f2=f4;elsef1=f4;t2=t4;endendc1=(f3-f1)/(t3-t1);c2=((f2-f1)/(t2-t1)-c1)/(t2-t3);t4=*(t1+t3-c1/c2);f4=f(t4);k=k+1;end%输出最优解iff2>f4t=t4;f=f(t4);elset=t2;f=f(t2);endfprintf(1,'迭代计算k=%\n',k)fprintf(1,'极小点坐标t=%\n',t)fprintf(1,'函数值f=%\n',f)运行结果如下:迭代计算k=7极小点坐标t=2函数值f=用黄金分割法求函数的极小值,精度e=。在MATLAB的M文件编辑器中编写的M文件,如下:f=inline('t^(2/3)-(t^2+1)^(1/3)','t');a=0;b=3;epsilon=;t1=*(b-a);f1=f(t1);t2=a+*(b-a);f2=f(t2);k=1;whileabs(b-a)>=epsiloniff1<f2b=t2;t2=t1;f2=f1;t1=*(b-a);f1=f(t1);elsea=t1;t1=t2;f1=f2;t2=a+*(b-a);f2=f(t2);endt=*(b+a);k=k+1;f0=f(t);endfprintf(1,'迭代次数k=%\n',k)fprintf(1,'迭代区间—左端a=%\n',a)fprintf(1,'试点1坐标值t1=%\n',t1)fprintf(1,'函数值f1=%\n',f(t1))fprintf(1,'迭代区间—右端b=%\n',b)fprintf(1,'试点2坐标值t2=%\n',t2)fprintf(1,'函数值f2=%\n',f(t2))fprintf(1,'区间中点t=%\n',t)fprintf(1,'函数值f0=%\n',f(t))运行结果如下:迭代次数k=13迭代区间—左端a=试点1坐标值t1=函数值f1=迭代区间—右端b=试点2坐标值t2=函数值f2=区间中点t=函数值f0=由黄金分割法在初始区间[0,3]求得的极小值点为t=,极小值为。用牛顿法、阻尼牛顿法及变尺度法求函数的极小点。(1)在用牛顿法在MATLAB的M文件编辑器中编写的M文件,如下:function[x,fx,k]=niudunfa(x0)symsx1x2f=(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=-G1\g1;x0=x0+p;while(norm(g1)>epson)p=-G1\g1;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

=

fx

=

k

=23

(2)用阻尼牛顿法在MATLAB的M文件编辑器中编写的M文件,如下:function[x,fx,k]=zuniniudunfa(x0)%阻尼牛顿法symsx1x2f=(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=-G1\g1;a0=-p'*g1/(p'*G1*p);x0=x0+a0*p;while(norm(a0*p)>epson)p=-G1\g1;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)});运行结果如下:>>[x,fx,k]=zuniniudunfa([1;1])

x=

fx=

k=23

(3)用变尺度法在MATLAB的M文件编辑器中编写的M文件,如下:用共轭梯度法求函数的极小点(1)用共轭梯度法在MATLAB的M文件编辑器中编写的M文件,如下:function[y,x,k]=CG(A,b,c,x0)%共轭梯度法解minf(x)=*X'*A*X+b'x+ceps=1e-6;%迭代停机原则%fx=*x0'.*A.*x0+b'.*x0+c;r0=A*x0+b;ifnorm(r0)<=epsx=x0;y=*x'*A*x+b'*x+c;k=0;endp0=-r0;a=-r0'*p0/(p0'*A*p0);x1=x0+a*p0;r1=A*x1+b;k=0;whilenorm(r1)>epsbeta=(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=*x'*A*x+b'*x+c;运行结果如下:[y,x,k]=CG([3

-1;-1

1],[-2;0],0,[2;1])y

=

-1x

=

k

=

1用变尺度法在MATLAB的M文件编辑器中编写的M文件,如下:function[x,fx,k]=bianchidufa(A,b,c,x0)%用变尺度法求fx=*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=x0+a0*d0;while(norm(s0)>=epson)switchkcase{10}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;breakotherwiseg1=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;d1=-H1*g1;a1=-d1'*g1/(d1'*G0*d1);a0=a1;d0=d1;H0=H1;s0=a0*d0;x1=x1+a0*d0;breakendendx=x1;fx=*x1'*A*x1+b'*x1+c;运行结果如下:》

[x,fx,k]=bianchidufa([3

-1;-1

1],[-2;0],0,[2;1])H1

=

fx

=

-1

x

=

fx

=

-1

k

=

1故函数极小点是点(1,1)用鲍威尔法求函数的极小点。用鲍威尔法在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;%迭代次数whilenorm(x0-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=*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用单纯形法求线性规划问题用单纯形法在MATLAB的M文件编辑器中编写的M文件,如下:%单纯形法matlab程序-danchunxingfa%求解标准型线性规划:maxc*x;.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;whileflagkk=kk+1;ifA(mA,:)<=0%已找到最优解flag=0;sol=zeros(1,nA-1);fori=1:mA-1sol(N(i))=A(i,nA);endval=-A(mA,nA);elsefori=1:nA-1ifA(mA,i)>0&A(1:mA-1,i)<=0%问题有无界解disp('haveinfinitesolution!');flag=0;break;endendifflag%还不是最优表,进行转轴运算temp=0;fori=1:nA-1ifA(mA,i)>temptemp=A(mA,i);inb=i;%进基变量的下标endendsita=zeros(1,mA-1);fori=1:mA-1ifA(i,inb)>0sita(i)=A(i,nA)/A(i,inb);endendtemp=inf;fori=1:mA-1ifsita(i)>0&sita(i)<temptemp=sita(i);outb=i;%出基变量下标endend%以下更新Nfori=1:mA-1ifi==outbN(i)=inb;endend%以下进行转轴运算A(outb,:)=A(outb,:)/A(outb,inb);fori=1:mAifi~=outbA(i,:)=A(i,:)-A(outb,:)*A(i,inb);endendendendend;运行结果如下:>>A=[11104;1235;0];N=[3;4];[sol,val,kk]=danchunxingfa(A,N)sol=00val=kk=2所以,求解线性规划问题用单纯形法在MATLAB的M文件编辑器中编写的M文件,如下:%单纯形法matlab程序-danchunxingfa%求解标准型线性规划:maxc*x;.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;whileflagkk=kk+1;ifA(mA,:)<=0%已找到最优解flag=0;sol=zeros(1,nA-1);fori=1:mA-1sol(N(i))=A(i,nA);endval=-A(mA,nA);elsefori=1:nA-1ifA(mA,i)>0&A(1:mA-1,i)<=0%问题有无界解disp('haveinfinitesolution!');flag=0;break;endendifflag%还不是最优表,进行转轴运算temp=0;fori=1:nA-1ifA(mA,i)>temptemp=A(mA,i);inb=i;%进基变量的下标endendsita=zeros(1,mA-1);fori=1:mA-1ifA(i,inb)>0sita(i)=A(i,nA)

温馨提示

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

最新文档

评论

0/150

提交评论