预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

机械优化设计大作业 1.求f=(x-4)*(x-5)的最优解和最优值已知初始搜索区间为[0,10],迭代精度e=0.001. 2.用黄金分割法 3.黄金分割法的算法框图 给定:a,b,e b-0.618(b-a)=a(1);f(a(1))=>f1 a+0.618(b-a)=a(2);f(a(2))=>f2 a(2)=>b,a(1)=>a(2) f1=>f2 a+0.618(b-a)=a(1) f(a(2))=f2 输出:0.5(b+a)=>a*;f*=f(a*) 停 + - + f1<=f2 N Y a(1)=>a,a(2)=>a(1), f2=>f1 b-0.618(b-a)=a(1) f(a(1))=f1 b-a<=e? 4.程序 #include<stdio.h> #include<math.h> doublef(doublex) {return(x-4)*(x-5); } voidmain(void) { doublea1,y1,a2,y2,a,b,k,e; a=0;b=10;e=0.001;k=0.618; a1=b-k*(b-a);y1=f(a1); a2=a+k*(b-a);y2=f(a2); printf("a\ta1\t\ta2\tb\t\ty2\n"); while(fabs(b-a)>e) {if(y1>=y2) {a=a1;a1=a2;y1=y2; a2=a+k*(b-a);y2=f(a2); } else{b=a2;a2=a1;y2=y1; a1=b-k*(b-a);y1=f(a1); } printf("%f%f%f%f%f\n",a,a1,a2,b,y1,y2); } printf("x*=%f\n",(a+a2)/2); printf("y*=%f\n",y1); } 5.经c++运行的结果为 经运算最终结果为; 最优解为4.500008 最优值为-0.25000