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

  • 格式:doc
  • 大小:102.50 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机械优化设计课程论文

院系机械工程系

专业机械设计

班级一班

姓名

学号

一、优化题目

应用所学计算机语言编写一维搜索的优化计算程序,完成计算结果和输出。

二、建立优化数学模型

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);

}

六、结果分析:

通过利用外推法和黄金分割法求解函数的最优解的一维优化问题。通过反复对程序的调试以得到所需要的结果,使我对这两个方法的原理有了更深刻的理解。