优化设计黄金分割发以及迭代法
- 格式:doc
- 大小:102.50 KB
- 文档页数:7
机械优化设计课程论文
院系机械工程系
专业机械设计
班级一班
姓名
学号
一、优化题目
应用所学计算机语言编写一维搜索的优化计算程序,完成计算结果和输出。
二、建立优化数学模型
1、目标函数方程式:
y=pow(x,4)-1*pow(x,3)-3*pow(x,2)-16*x+10
2、变量:x
3、初始值:
初始值x1=5 初始步长tt=0.01
三、所选用的优化方法
1、采用外推法确定搜索区间
2、采用黄金分割法求函数最优
3、计算框图:
(1)、外推法程序框图
(2)、黄金分割法程序框图
四、计算输出内容:
五、优化的源程序文件:
#include
#include
#define e 0.0001
#define tt 0.01
float f (double x)
{
float y=pow(x,4)-1*pow(x,3)-3*pow(x,2)-16*x+10;
return(y);
}
void finding(float*p1,float*p2)
{
float x1=10,x2,x3,t,f1,f2,f3,h=tt;
int n=0;
x2=x1+h;f1=f(x1);f2=f(x2);
if(f2>f1)
{
h=-h;x3=x1;f3=f1;
x1=x2;f1=f2;
}
x3=x2+h;f3=f(x3);
n=n+1;
printf("n=%d,c1=%6.4lf,x2=%6.4lf,x3=%6.4lf,f1=%6.4lf,f2=^6.4lf,f3=%6.4lf\n",n, x1,x2,x3,f1,f2,f3);
while(f3 { h=2*h; x1=x2;f1=f2; x2=x3;f2=f3; x3=x2+h;f3=f(x3); n=n+1; printf("n=%d,x1=%6.4lf,x2=%6.4lf,x3=%6.4lf,f1=%6.4lf,f2=6.4%lf,f3=%6.4lf\n",n ,x1,x2,x3,f1,f2,f3); } if(h<0) { t=x1;x1=x3;x3=t; } *p1=x1;*p2=x3; } main() { float a,b,x1,x2,f1,f2,xmin,ymin,c; int n=0; finding(&a,&b) ; printf("the are is %6.4lf to %6.4lf\n",a,b); x1=b-0.618*(b-a);x2=a+0.618*(b-a);f1=f(x1);f2=f(x2); do { if(f1>f2) {a=x1;x1=x2;f1=f2;x2=a+0.618*(b-a);f2=f(x2);} else {b=x2;x2=x1;f2=f1;x1=b-0.618*(b-a);f1=f(x1);} n=n+1; printf("n=%d,a=%6.4lf,b=%6.4lf,x1=%6.4lf,x2=%6.4lf,f1=%6.4lf,f2=%6.4lf\n",n,a ,b,x1,x2,f1,f2); c=fabs(b-a); } while(c>e); xmin=(x1+x2)/2; ymin=f(xmin); printf("The min is %6.4lf and the result is %6.4lf",xmin,ymin); } 六、结果分析: 通过利用外推法和黄金分割法求解函数的最优解的一维优化问题。通过反复对程序的调试以得到所需要的结果,使我对这两个方法的原理有了更深刻的理解。