系统优化设计算法。
指导老师:孙xx
姓名: 李x
学号:02009xxx
日期:2012/11/29
目录。一、 **分割法。
1.1编程原理3
1.2程序源**3
1.3程序框图6
1.4运行结果7
1.5实例考核9
1.6结论9
二、 二次插值法。
2.1编程原理10
2.2程序源**10
2.3程序框图12
2.4运行结果13
2.5实例考核14
2.6结论14
三、 鲍威尔法。
3.1编程原理15
3.2程序源**16
3.3程序框图22
3.4运行结果23
3.5实例考核24
3.6结论26
一、 **分割法。
1.1编程原理。
**分割法的搜索过程是:
1)给出初始搜索区间【a,b】及收敛精度,将赋以0.618
2)按照坐标点计算公式计算a1和a2,并计算其对应的f(a1),f(a2)。
3)根据区间消去原理缩小搜索区间。为了能用原来的坐标点计算公式,需进行区间名称的代换,并在保留区间中计算一个新的试验点及其函数值。
4)检查区间是否缩短到足够小和函数值是否收敛到足够近,如果条件不满足则返回到步骤2。
5)如果条件满足,则取最后两试验点的平均值作为作为极小点的数值近似解。
1.2程序源**。
syms x
disp('请输入函数')
f=input('请输入函数f=')
if isempty(f)
f=x.^2+2*x
enda=input('请输入函数搜索区间的左极限a=')
b=input('请输入函数搜索区间的左极限b=')
error=input('请输入精度[1e-3]error=')
if isempty(error)
error=1e-3
enddisp('正在用**分割法很努力地计算……'
x_end,y_end]=god(f,x,a,b,error)
function [x_end,y_end]=god(f,x,a,b,error)
l=0.618;
x_end=0;
x1=b-l*(b-a);
x2=a+l*(b-a);
y1=subs(f,x,x1);
y2=subs(f,x,x2);
while abs((b-a)./b)>=error||abs((y2-y1)./y2)>=error
if(y1>=y2)
a=x1x1=x2
y1=y2x2=a+l*(b-a)
y2=subs(f,x,x2);
elseb=x2
x2=x1y2=y1
x1=b-l*(b-a)
y1=subs(f,x,x1);
endx_end=(a+b)./2
endx_end=(a+b)./2
y_end=subs(f,x,x_end)
1.3程序框图。
是否。是否。
1.4运行结果。
最终结果与理论解x=-1,y=-1十分接近,可以认为是正确的。
表1.4.1是迭代12次的结果。
可以看出,函数的最优解收敛很快,6次以后的迭代过程中结果变化很小。
表1.4.1
1.5实例考核。
附录一维搜索考核题minf(t)=t2-10t+36
用我所编的搜索程序得到的结果时。
这与理论值t=5 ,f(t)=11吻合地很好,证明了该程序的通用性。
1.6结论。
该**分割法搜索程序很好地完成了一维问题最优解的搜索,并通过实例得到了印证。可以认为,该程序的编写是成功的,可以用来作为解决一维最优解搜索问题的通用方法。
二、二次插值法。
2.1编程原理。
二次插值法又称抛物线法。它是利用y=f(a)在单谷区间中的三点a1f(a2)p(a)=a0+a1a+a2a2
多项式p(a)的极值点ap就是f(a)的极小点的近似解。
因此,首先应该在函数曲线上找到高-低-高三点,然后根据区间消去原理逐渐缩短区间,直到满足精度要求为止。
2.2程序源**。
syms x
disp('请输入函数')
f=input('请输入函数f=')
if isempty(f)
f=sin(x)
enda=input('请输入函数搜索区间的左极限a=')
c=input('请输入函数搜索区间的左极限b=')
error=input('请输入精度[1e-3]error=')
if isempty(error)
error=1e-3
enddisp('正在用二次插值法很努力地计算……'
x_end,y_end]=two(f,x,a,c,error)
function [x_end,y_end]=two(f,x,a,c,error)
b=(a+c)./2;
x_end=b;
while ((c-a)>error)
y1=subs(f,x,a)
y2=subs(f,x,b)
y3=subs(f,x,c)
a1=((b.^2-c.^2)*y1+(c.^2-a.^2)*y2+(a.^2-b.^2)*y3)./a-b)*(b-c)*(c-a))
a2=-(b-c)*y1+(c-a)*y2+(a-b)*y3)./a-b)*(b-c)*(c-a))
x_end=-a1./(2*a2);
if (y2 c=x_end;
elsea=b
b=x_end;
endend
x_endy_end=subs(f,x,x_end)
2.3程序框图。
2.4运行结果。
最终结果与理论解十分接近,可以认为程序是正确的。
2.5实例考核。
附录一维搜索考核题minf(t)=t4-5t3+4t2-6t+60
根据我所编的搜索程序,当收敛精度要求为0.001时得到的结果为。
这与理论值t=3.2796 ,f(t)=22.6590十分接近,证明了上面程序的通用性。
2.6结论。
该二次插值法搜索程序很好地完成了一维问题最优解的搜索,并通过实例得到了印证。可以认为,该程序的编写是成功的,可以用来作为解决一维最优解搜索问题的通用方法。
三、鲍威尔法。
3.1编程原理。
3.1.1基本powell算法步骤。
1) 任选一初始点x0,再选两个线性无关的向量,如坐标轴单位向量e1=[0,1]t、e2=[1,0]t作为初始搜索方向。
2) 从x0出发,顺次沿e1、e2作一维搜索得点,两点连线得一新方向。用代替形成两个线性无关向量,作为下一轮迭代的搜索方向。再从出发,沿作一维搜索得点,作为下一轮迭代的初始点。
机械优化设计大作业
1.题目自拟。多元函数优化问题。2.已知条件。根据具体题目确定。3.作业要求。1 建立优化模型 包括设计变量 目标函数 约束条件 2 程序求解,可以选用c fortran basic等编程语言或matlab maple等工具软件,写出最优解。3 学习本课程的心得体会。不少于 4 用a4纸打印。注意 ...
机械优化设计大作业
一 问题的描述。设计一重量最轻的空心传动轴。空心传动轴的d d分别为轴的外径和内径。轴的长度不得小于3m。轴的材料为45钢,密度为7.8 10 6kg mm,弹性模量e 2 10 5mpa,许用切应力 60mpa。轴所受扭矩为m 1.5 10 6n mm。二 数学模型的建立。1 扭转强度。因为空心传...
机械优化设计大作业
1 体积小 重量轻 结构紧凑 传递功率大 承载能力高 2 传动效率高,工作高 3 传动比大。某行星齿轮减速器主要用于石油钻采设备的减速,其高速轴转速为1300r min 工作环境温度为 20 60 可正 反两向运转。按该减速器最小体积准则,确定行星减速器的主要参数。传动比u 4.64,输入扭矩t 齿...