当前位置:文档之家› 优化设计黄金分割发以及迭代法

优化设计黄金分割发以及迭代法

机械优化设计课程论文
院系机械工程系
专业机械设计
班级一班
姓名
学号
一、优化题目
应用所学计算机语言编写一维搜索的优化计算程序,完成计算结果和输出。

二、建立优化数学模型
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<math.h>
#include<stdio.h>
#define e0.0001
#define tt0.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<f2)
{
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,x 1,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);
}
六、结果分析:
通过利用外推法和黄金分割法求解函数的最优解的一维优化问题。

通过反复对程序的调试以得到所需要的结果,使我对这两个方法的原理有了更深刻的理解。

相关主题