现代设计黄金分割法复合形法实验报告word文档良心出品

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

《现代设计理论与方法》实验报告

、实验目的

机械优化设计是一门实践性较强的课程,学生通过实际上机计算可以达到以

下目的:

1. 加深对机械优化设计方法的基本理论和算法步骤的理解;

2. 培养学生独立编制或调试计算机程序的能力;

3. 掌握常用优化方法程序的使用方法;

4 .培养学生灵活运用优化设计方法解决工程实际问题的能力。

、实验项目、学时分配及对每个实验项目的要求

1.明确黄金分割法基本原理、计算步骤及程序框图; 吐

入「土 2•编制或调试黄金分割法应用程序; 1 黄金分割法 2

八' " 3 •用测试题对所编程序进行测试;

4•撰写实验报告。

1.明确复合形法基本原理、计算步骤及程序框图 等;

2 复合形法 4 2•编制或调试复合形法应用程序;

3 •用测试题对所编程序进行测试;

4•撰写实验报告。

二、测试题

1. 黄金分割法程序测试题

1)rn"何二?-10r+36,取坷=0 ,卜皿1, 沪

程序如下:

#in clude #in clude #in clude #defi ne e 0.00001 序实验项目 学时

实验要求

#define tt 0.01

float function(float x)

float y=pow(x,2)-10*x+36;//

return(y); void finding(float a[3],float f[3])

float t=tt,a1,f1,ia;

int i;

f[0]=function(a[0]);

for(i=0;;i++)

a[1]=a[0]+t;f[1]=function(a[1]);

if(f[1]

if(fabs(f[1]-f[0])>=e)

t=-t;a[0]=a[1];f[0]=f[1];

else{

if(ia==1) return;

t=t/2;ia=1;

for(i=0;;i++)

a[2]=a[1]+t;f[2]=function(a[2]);

if(f[2]>f[1]) break;

t=2*t;

a[0]=0;/

/ 初始区间的下界值 求解的一维函数

a[0]=a[1];f[0]=f[1];

a[1]=a[2];f[1]=f[2];

if(a[0]>a[2])

a1=a[0];f1=f[0];

a[0]=a[2];f[0]=f[2];

a[2]=a1;f[2]=f1;

return;

}float gold(float *ff)

float a1[3],f1[3],a[4],f[4];

float aa;

int i;

finding(a1,f1);

a[0]=a1[0];f[0]=f1[0];

a[3]=a1[2];f[3]=f1[2];

a[1]=a[0]+0.382*(a[3]-

a[0]);

a[2]=a[0]+0.618*(a[3]-

a[0]);

f[1]=function(a[1]);

f[2]=function(a[2]);

for(i=0;;i++)

if(f[1]>=f[2])

a[0]=a[1];f[0]=f[1];

a[1]=a[2];f[1]=f[2];

a[2]=a[0]+0.618*(a[3]-

a[0]);

f[2]=function(a[2]);

else{

a[3]=a[2];f[3]=f[2];

a[2]=a[1];f[2]=f[1];

a[1]=a[0]+0.382*(a[3]-a[0]);

f[1]=function(a[1]);

if((a[3]-a[0])

aa=(a[1]+a[2])/2;*ff=function(aa);

break;

return(aa);

void main()

float xx, ff;

xx=gold(&ff);

printf("\n The Optimal Design Result Is:\n"); printf("\n\tx*=%f\n\tf*=%f", xx, ff);

getch();

运行结果:

2) mil SI*-5J?+4J?-fix+fiO 取舟=0 折二Ml A HT*

程序如下:

#in cludevstdio.h> #in clude #in clude #defi ne e

0.00001 #defi ne tt 0.01

float fun cti on( float x)

求解的一维函数float y=po w(x,4)-5* pow(x,3)+4* po w(x,2)-6*x+60;//

return(y);

void fin di ng(float a[3],float f[3])

float t=tt,a1,f1,ia;

int i;

a[0]=0;// 初始区间的下界值

f[0]=fu nctio n(a[0]);

for(i=0;;i++)

a[1]=a[0]+t;f[1]=fu nctio n(a[1]);

if(f[1]

{

相关文档
最新文档