文档介绍:最新范本,供参考!
最新范本,供参考!
最新范本,供参考!
?机械优化设计?
实验报告
班级: 机械设计〔2〕班
姓名: 邓传淮
学号: 0901102021
最新范本,供参考!
最新范本,供参考!
最新范本,供参考!
1 实验名称:一维搜索黄金分割法求最正确步长
2 实验目的:通过上机编程,理解一维搜索黄金分割法的原理,了解计算机在优化设计中的应用。
3 黄金分割法的根本原理
黄金分割法是用于一元函数f(x)在给定初始区间[a,b]内搜索极小点α*的一种方法。它是优化计算中的经典算法,以算法简单、收敛速度均匀、效果较好而著称,是许多优化算法的根底,但它只适用于一维区间上的凸函数[6],即只在单峰区间内才能进展一维寻优,其收敛效率较低。其根本原理是:依照“去劣存优〞原那么、对称原那么、以及等比收缩原那么来逐步缩小搜索区间[7]。具体步骤是:在区间[a,b]内取点:a1 ,a2 把[a,b]分为三段。如果f(a1)>f(a2),令a=a1,a1=a2,a2=a+r*(b-a);如果f(a1)<f(a2) ,令b=a2,a2=a1,a1=b-r*(b-a),如果|(b-a)/b|和|(y1-y2)/y2|都大于收敛精度ε重新开场。因为[a,b]为单峰区间,这样每次可将搜索区间缩小倍或倍,处理后的区间都将包含极小点的区间缩小,然后在保存下来的区间上作同样的处理,如此迭代下去,将使搜索区[a,b]逐步缩小,直到满足预先给定的精度时,即获得一维优化问题的近似最优解。黄金分割法原理如下图,
实验所编程序框图
进退发确定单峰区间的计算框图
最新范本,供参考!
最新范本,供参考!
最新范本,供参考!
〔2〕黄金分割法计算框图
最新范本,供参考!
最新范本,供参考!
最新范本,供参考!
最新范本,供参考!
最新范本,供参考!
最新范本,供参考!
5 程序源代码
〔1〕进退发确定单峰区间的程序源代码
#include<>
#include<>
#define f(x) pow(x,4)-3*pow(x,3)-5*pow(x,2)-14*x+46
main()
{
int k;
double x,h,x1,x2,x3;
double f1,f2,f3,f;
double a,b;
x1=0;
h=1;
x2=x1+h;
f1=f(x1);
f2=f(x2);
if (f1>f2)
{
h=2*h;
x3=x2+h;
f3=f(x3);
}
else
{
h=-h;
x1=x2;
f1=f2;
x3=x2+h;
f3=f(x3);
}
printf("x1=%lf,x2=%lf\0",x1,x2);
do
{
x1=x2;
x2=x3;
f1=f