机械优化设计MATLAB程序12378.pdf
机械优化设计作业 1.用二次插值法求函数 t t 1 t 2 2极小值,精度 e=。在MATLAB 勺M 文件编辑器中编写的 M 文件,如下:f=in li ne(t+1)*(t-2)A2,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)if t2f4 f1=f2;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=*(t1+t3-c1/c2);f4=f(t4);k=k+1;end%输出最优解 if f2f4 t=t4;f=f(t4);else t=t2;f=f(t2);end fprintf(1,迭代计算 k=%n,k)fprintf(1,极小点坐标 t=%n,t)fprintf(1,函数值 f=%n,f)k=7 t=2 f=2.t 3 t2 3 t2 1e=。MATLABMMf=i nlin e(tA(2/3)-(tA2+1)A(1/3),t);a=0;b=3;epsil on=;t1=*(b-a);ff(t1);t2=a+*(b-a);f2=f(t2);k=1;while abs(b-a)=epsil on if f1epson)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;end x=x0;fx=subs(f,x1,x2,x(1,1),x(2,1);x,fx,k=niudunfa(1;1)x=fx=k=23(2)MATLAMMfunction x,fx,k=zuniniudunfa(x0)%syms x1 x2 f=(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,1),x0(2,1);G1=subs(G,x1,x2,xO(1,1),xO(2,1);k=0;%p=-G1g1;2 aO=-p*g1/(p*G1*p);xO=xO+aO*p;while(no rm(aO*p)eps on)p=-G1g1;a0=-p*g1/(p*G1*p);xO=xO+aO*p;gsubs(df,x1,x2,x0(1,1),x0(2,1);G1=subs(G,x1,x2,xO(1,1),xO(2,1);k=k+1;end x=x0;fx=subs(f,x1,x2,x0(1,1),x0(2,1);x,fx,k=zu nin iudu nfa(1;1)x=fx=k=23(3)MATLABMM4.f XX2 X;X;X/2 22 2 1 MATLABMMfun ctio n y,x,k=CG(A,b,c,xO)%minf x=*X*A*X+bx+c eps=1e-6;%fx=*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;end x=x1;y=*x*A*x+b*x+c;y,x,k=CG(3-1;-1 1,-2;0,0,2;1)y=-1 x=k=1(2)MATLABMfunction 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)switch k case 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;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;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=*x1*A*x1+b*x1+c;x,fx,k=bianchidufa(3 H1=fx=-1 x=fx=-1 k=1 1,1 5.f x1,x2 x12 2x22 4x1 2x1x2 M-1;-1 1,-2;0,0,2;1)MATLABMMfunction 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=d10;x0=x10;end x=x0;fx=*x*A*x+b*x+c;x,fx,k=bowell(2-2;-2 4,-4;0,0,2;1)fx=-8 x=4 2 fx=-8 k=3 6.min f(x)1.1x1 2.2x2 3.3x3 4.4x4 x1 x2 x3 4 xj 0(j 1,2,3,4)MATLABMM%matlab-danchunxingfa%:max c*x;.A*x=b;x=0%A:%N%sol,%val kk function sol,val,kk=danchunxingfa(A,N)mA,nA=size(A);kk=0;%flag=1;while flag kk=kk+1;s.t.x1 2x2 2.5x3 3x4 5 b0 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=1 1 1 0 4;1 2 3 5;0;N=3;4;sol,val,kk=danchunxingfa(A,N)sol=0 0 val=kk=2 x1 x2 0,x3 4.0000,x4 1.667,min f(x)7.min z 7x1 12x2 9x1 4x2 x3 360 4x1 5x2 x4 200 s.t.3x1 10 x2 x5 300 xj 0(j 1,2,3,4,5)MATLABMM%matlab-danchunxingfa%:max c*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;%7.3333 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 0 val=420 kk=3 3 x1 20,x2 24,x3 84,x4 x5 0,min z 420.