机械优化设计MATLAB程序

2018-11-19 22:37

机械优化设计作业

1.用二次插值法求函数??t???t?1??t?2?2极小值,精度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 t2

if f2>f4

f1=f2;t1=t2; t2=t4;f2=f4; else

f3=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>f4

t=t4;f=f(t4); else

t=t2;f=f(t2); end

fprintf(1,'迭代计算k=%3.0f\\n',k) fprintf(1,'极小点坐标t=%3.0f\\n',t) fprintf(1,'函数值f=%3.4f\\n',f)

运行结果如下: 迭代计算k= 7 极小点坐标t= 2 函数值f=0.0001

2.用黄金分割法求函数??t??3t2?3t2?1的极小值,精度e=0.01。

在MATLAB的M文件编辑器中编写的M文件,如下: f=inline('t^(2/3)-(t^2+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 f1

b=t2;t2=t1;f2=f1;

t1=b-0.618*(b-a);f1=f(t1); else

a=t1;t1=t2;f1=f2;

t2=a+0.618*(b-a);f2=f(t2); end

t=0.5*(b+a); k=k+1; f0=f(t); end

fprintf(1,'迭代次数k=% 3.0f\\n',k)

fprintf(1,'迭代区间—左端a=%3.4f\\n',a) fprintf(1,'试点1坐标值t1=%3.4f\\n',t1) fprintf(1,'函数值f1=%3.4f\\n',f(t1))

fprintf(1,'迭代区间—右端b=%3.4f\\n',b) fprintf(1,'试点2坐标值t2=%3.4f\\n',t2) fprintf(1,'函数值f2=%3.4f\\n',f(t2)) fprintf(1,'区间中点t=%3.4f\\n',t) fprintf(1,'函数值f0=%3.4f\\n',f(t)) 运行结果如下: 迭代次数k= 13

迭代区间—左端a=0.0000 试点1坐标值t1=0.0036 函数值f1=-0.9767

迭代区间—右端b=0.0093 试点2坐标值t2=0.0058 函数值f2=-0.9679 区间中点t=0.0047 函数值f0=-0.9721

由黄金分割法在初始区间[0,3]求得的极小值点为t=0.0047,极小值为-0.9721。

3.用牛顿法、阻尼牛顿法及变尺度法求函数f?x1,x2???x1?2???x1?2x2?的极小点。

42(1)在用牛顿法在MATLAB的M文件编辑器中编写的M文件,如下: function [x,fx,k]=niudunfa(x0) syms x1 x2

f=(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; end x=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]=zuniniudunfa(x0)%阻尼牛顿法 syms x1 x2

f=(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; end x=x0;

fx=subs(f,{x1,x2},{x0(1,1),x0(2,1)});

运行结果如下:

>>[x,fx,k]=zuniniudunfa([1;1])

x=1.9999554476059523381489991377897 0.99997772380297616907449956889483

fx=0.0000000000000000039398907941382470301534502947647 k=23

(3)用变尺度法在MATLAB的M文件编辑器中编写的M文件,如下:

32124.用共轭梯度法求函数f?x1,x2??x1?x2?x1x2?2x1的极小点

22(1)用共轭梯度法在MATLAB的M文件编辑器中编写的M文件,如下:

function[y,x,k]=CG(A,b,c,x0)

%共轭梯度法解minf(x)=0.5*X'*A*X+b'x+c eps=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)>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=0.5*x'*A*x+b'*x+c;

运行结果如下:

[y,x,k]=CG([3 -1;-1 1],[-2;0],0,[2;1]) y = -1

x = 1.0000 1.0000 k = 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=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


机械优化设计MATLAB程序.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于单片机的火灾报警器开题报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: