工程结构优化设计编程作业

发布 2023-05-16 23:43:28 阅读 9184

工程结构优化设计—编程作业。

1.用**分割法求方程在区间[-1,1]上的解。

在matlab中没有专门的函数实现**分割法求解线性方程,可通过编写函数实现**分割法求解,其**如下:

function x=glodf(f,a,b,eps)

if(nargin==3)

eps=1.0e-4;

endf1=subs(sym(f),findsym(sym(f)),a);

f2=subs(sym(f),findsym(sym(f)),b);

if(f1==0)

x=a;end

if(f2==0)

x=b;end

if(f1*f2>0)

disp(’两端点函数值乘积大于0!’)

return;

elset1=a+(b-a)*0.382;

t2=a+(b-a)*0.618;

f_1=subs(sym(f),findsym(sym(f)),t1);

f_2=subs(sym(f),findsym(sym(f)),t2);

tol=abs(t1-t2);

while(tol>eps)

if(f_1*f_2<0)

a=t1;b=t2;

elsefa=subs(sym(f),findsym(sym(f)),a);

if(f_1*fa>0)

a=t2;else

b=t1;end

endt1=a+(b-a)*0.382;

t2=a+(b-a)*0.618;

f_1=subs(sym(f),findsym(sym(f)),t1);

f_2=subs(sym(f),findsym(sym(f)),t2);

tol=abs(t2-t1);

endx=(t1+t2)/2;

end其实现的matlab**如下:

> clear all;

> tic

> x=glodf('x^3-3*x+1',-1,1,1e-6)x =

2.用抛物线法求解的极值点,取值范围[0.5,1],允许误差为1e-6。

在matlab中没有专门的函数实现抛物线法求解线性方程,可通过编写函数实现抛物线法求解,其**如下:

function x=paowuxian(f,x0,x1,x2,e)

if nargin<4,e=1e-4;

endx=x2;y=x1;z=x0;

while abs(x-y)>e

h1=y-z;

h2=x-y;

c1=(feval(f,y)-feval(f,z))/h1;

c2=(feval(f,x)-feval(f,y))/h2;

d=(c1-c2)/(h2+h1);

w=c2+h2*d;

xi=x-(2*feval(f,x))/w+(w/abs(w))*sqrt(w^2-4*feval(f,x)*d));

z=y;y=x;

x=xi;end

其实现的matlab**如下:

> fun=inline('x^3+2*x-0.2');

> paowuxian(fun,0,0.5,1,1e-6),format shortans =

3.用齿形法对下图的结构进行杆件截面优化设计:

节点处作用两种工况:(1)p1=2000kn,p2=0kn;(2)p1=0kn,p2=2000kn。各杆采用同一材料制成,弹性模量e为常数,容许应力分别为:

[σ2╳107kpa,[σ1.5╳107kpa。

此结构为对称结构,工况也对称,所以a1=a3,计算时只取两个变量a1和a2,一种工况p1=2000kn,p2=0kn。

目标函数取为结构总重量:

在matlab中没有专门的函数实现齿形法求解线性方程,可通过编写函数实现齿形法求解,其**如下:

function [newa1,newa2,newa3,w,exitflag] =zigzag( a1,a2,maxstep)

if nargin<3

maxstep=96;

enda=[a1;a2];

u=[(1e-4)*(sqrt(2)*a1+a2)/(sqrt(2)*a1^2+2*a1*a2);(1e-4)*(sqrt(2)*a1)/(sqrt(2)*a1^2+2*a1*a2)];

w=sqrt(2)*2*a1+a2;

w1=w;w2=w;

newa1=a1;

newa2=a2;

newa3=a1;

syms p l ;

w=vpa(w*p*l);

a11=a1;

a13=a1;

a22=a2;

a24=a2;

exitflag=-1;

for k=1:maxstep

if w2>w1

newa1=a11;

newa2=a22;

newa3=a11;

w=vpa(w1*p*l,4);

exitflag=1;

return;

endu1=max(u);

a=a.*u1;

a11=a(1);

a22=a(2);

u=u./u1;

u=roundn(u,-4);

w=sqrt(2)*2*a11+a22;

w1=w;if w1>w2

newa1=a13;

newa2=a24;

newa3=a13;

w=vpa(w2*p*l,4);

exitflag=0;

return;

enda=a.*u;

a1=a(1);

a2=a(2);

u=[(1e-4)*(sqrt(2)*a1+a2)/(sqrt(2)*a1^2+2*a1*a2);(1e-4)*(sqrt(2)*a1)/(sqrt(2)*a1^2+2*a1*a2)];

u1=max(u);

a=a.*u1;

a13=a(1);

a24=a(2);

u=u./u1;

u=roundn(u,-4);

w=sqrt(2)*2*a13+a24;

w2=w;a=a.*u;

a1=a(1);

a2=a(2);

u=[(1e-4)*(sqrt(2)*a1+a2)/(sqrt(2)*a1^2+2*a1*a2);(1e-4)*(sqrt(2)*a1)/(sqrt(2)*a1^2+2*a1*a2)];

endend

其实现的matlab**如下:

> clear;

a1=1e-4;

a2=1e-4;

anew1,anew2,anew3,w,exitflag]=zigzag(a1,a2)

anew1 =

7.7346e-05

anew2 =

4.5309e-05

anew3 =

7.7346e-05

w =0.0002641*l*p

exitflag =

4. 用修改齿形法对结构进行杆件截面优化设计。

在matlab中没有专门的函数实现修改齿形法求解线性方程,可通过编写函数实现修改齿形法求解,其**如下:

function [newa1,newa2,newa3,w,exitflag] =izigzag( a1,a2,v,maxstep)

if nargin<5

maxstep=96;

enda=[a1;a2];

u=[(1e-4)*(sqrt(2)*a1+a2)/(sqrt(2)*a1^2+2*a1*a2);(1e-4)*(sqrt(2)*a1)/(sqrt(2)*a1^2+2*a1*a2)];

w=sqrt(2)*2*a1+a2;

w1=w;w2=w;

newa1=a1;

newa2=a2;

newa3=a1;

syms p l ;

w=vpa(w*p*l);

a11=a1;

a13=a1;

a22=a2;

a24=a2;

exitflag=-1;

for k=1:maxstep

if w2>w1

newa1=a11;

newa2=a22;

newa3=a11;

w=vpa(w1*p*l,4);

exitflag=1;

return;

endu1=max(u);

a=a.*u1;

a11=a(1);

a22=a(2);

u=u./u1;

x1=u(1);

x2=u(2);

y1=1-v*(1-x1);

y2=1-v*(1-x2);

u=[y1;y2];

u=roundn(u,-4);

w=sqrt(2)*2*a11+a22;

w1=w;if w1>w2

newa1=a13;

newa2=a24;

newa3=a13;

w=vpa(w2*p*l,4);

exitflag=0;

return;

enda=a.*u;

a1=a(1);

a2=a(2);

u=[(1e-4)*(sqrt(2)*a1+a2)/(sqrt(2)*a1^2+2*a1*a2);(1e-4)*(sqrt(2)*a1)/(sqrt(2)*a1^2+2*a1*a2)];

u1=max(u);

a=a.*u1;

a13=a(1);

a24=a(2);

u=u./u1;

x1=u(1);

x2=u(2);

y1=1-v*(1-x1);

y2=1-v*(1-x2);

u=[y1;y2];

u=roundn(u,-4);

w=sqrt(2)*2*a13+a24;

w2=w;a=a.*u;

a1=a(1);

a2=a(2);

u=[(1e-4)*(sqrt(2)*a1+a2)/(sqrt(2)*a1^2+2*a1*a2);(1e-4)*(sqrt(2)*a1)/(sqrt(2)*a1^2+2*a1*a2)];

endend

其实现的matlab**如下:

> clear;

a1=1e-4;

a2=1e-4;

v=0.5;

优化方法编程大作业

matlab 将下面 输入command中即可 clcclear syms x2 x1 f a 0 b inf c1 0.1 c2 0.5 rk为搜索步长,xk为变量,sk为搜索方向,gk为梯度值。rk 1 sk 1 1 xk0 0 1 xk0初始值。f x2 x1 2 2 1 x1 2 所求函数。...

编程作业答案 选择结构

1 判断一个三位数是否是 水仙花数 所谓 水仙花数 是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为。2 计算下列分段函数的值 x2 x 6 x 0且x 3 f x x2 5x 6 0 x 10且x 2及x 3 x2 x 1 其它。3 求一个不多于5位的正整数的位数。提...

工程设计优化方法大作业

铁路投资及运营费用构成及计算。姓名 班级 学号 目录。一 投资费用 3 1 投资构成 3 1.1 土建工程投资 3 2.2 机车车辆购置费 3 2 投资计算 3 2.2机车 车辆购置费 3 二 运营费用 4 1 运营费用构成 4 1.1与行车量有关的运营费 4 1.2固定设备维修费 4 2 运营费用...