1、完整word版现代设计黄金分割法复合形法实验报告word文档良心出品现代设计理论与方法实验报告一、实验目的机械优化设计是一门实践性较强的课程,学生通过实际上机计算可以达到以下目的: 1加深对机械优化设计方法的基本理论和算法步骤的理解;2培养学生独立编制或调试计算机程序的能力; 3掌握常用优化方法程序的使用方法;4培养学生灵活运用优化设计方法解决工程实际问题的能力。二、实验项目、学时分配及对每个实验项目的要求序号实验项目学时实 验 要 求1黄金分割法21明确黄金分割法基本原理、计算步骤及程序框图;2编制或调试黄金分割法应用程序;3用测试题对所编程序进行测试;4撰写实验报告。2复合形法41明确复合
2、形法基本原理、计算步骤及程序框图等;2编制或调试复合形法应用程序;3用测试题对所编程序进行测试;4撰写实验报告。三、测试题 1黄金分割法程序测试题1) ,取,程序如下:#include#include#include#define e 0.00001#define tt 0.01float function(float x) float y=pow(x,2)-10*x+36;/求解的一维函数 return(y);void finding(float a3,float f3) float t=tt,a1,f1,ia; int i; a0=0;/初始区间的下界值f0=function(a0);fo
3、r(i=0;i+) a1=a0+t;f1=function(a1); if(f1=e) t=-t;a0=a1;f0=f1; else if(ia=1) return; t=t/2;ia=1; for(i=0;i+) a2=a1+t;f2=function(a2); if(f2f1) break; t=2*t; a0=a1;f0=f1; a1=a2;f1=f2;if(a0a2) a1=a0;f1=f0; a0=a2;f0=f2; a2=a1;f2=f1;return;float gold(float *ff) float a13,f13,a4,f4; float aa; int i; findi
4、ng(a1,f1); a0=a10;f0=f10; a3=a12;f3=f12; a1=a0+0.382*(a3-a0); a2=a0+0.618*(a3-a0); f1=function(a1); f2=function(a2); for(i=0;i+) if(f1=f2) a0=a1;f0=f1; a1=a2;f1=f2; a2=a0+0.618*(a3-a0); f2=function(a2);else a3=a2;f3=f2; a2=a1;f2=f1; a1=a0+0.382*(a3-a0); f1=function(a1);if(a3-a0)e) aa=(a1+a2)/2;*ff=f
5、unction(aa); break;return(aa);void main() float xx, ff; xx=gold(&ff); printf(n The Optimal Design Result Is:n); printf(ntx*=%fntf*=%f, xx, ff); getch(); 运行结果:2) ,取,程序如下:#include#include#include#define e 0.00001#define tt 0.01float function(float x) float y=pow(x,4)-5*pow(x,3)+4*pow(x,2)-6*x+60;/求解的一
6、维函数 return(y);void finding(float a3,float f3) float t=tt,a1,f1,ia; int i; a0=0;/初始区间的下界值f0=function(a0);for(i=0;i+) a1=a0+t;f1=function(a1); if(f1=e) t=-t;a0=a1;f0=f1; else if(ia=1) return; t=t/2;ia=1; for(i=0;i+) a2=a1+t;f2=function(a2); if(f2f1) break; t=2*t; a0=a1;f0=f1; a1=a2;f1=f2;if(a0a2) a1=a
7、0;f1=f0; a0=a2;f0=f2; a2=a1;f2=f1;return;float gold(float *ff) float a13,f13,a4,f4; float aa; int i; finding(a1,f1); a0=a10;f0=f10; a3=a12;f3=f12; a1=a0+0.382*(a3-a0); a2=a0+0.618*(a3-a0); f1=function(a1); f2=function(a2); for(i=0;i+) if(f1=f2) a0=a1;f0=f1; a1=a2;f1=f2; a2=a0+0.618*(a3-a0); f2=funct
8、ion(a2);else a3=a2;f3=f2; a2=a1;f2=f1; a1=a0+0.382*(a3-a0); f1=function(a1);if(a3-a0)e) aa=(a1+a2)/2;*ff=function(aa); break;return(aa);void main() float xx, ff; xx=gold(&ff); printf(n The Optimal Design Result Is:n); printf(ntx*=%fntf*=%f, xx, ff); getch(); 运行结果如下:3) ,其中,取,程序如下:#include#include#inc
9、lude#define e 0.00001#define tt 0.01float function(float x) float y=(x+1)*pow(x-2),2);/求解的一维函数 return(y);void finding(float a3,float f3) float t=tt,a1,f1,ia; int i; a0=0;/初始区间的下界值f0=function(a0);for(i=0;i+) a1=a0+t;f1=function(a1); if(f1=e) t=-t;a0=a1;f0=f1; else if(ia=1) return; t=t/2;ia=1; for(i=0
10、;i+) a2=a1+t;f2=function(a2); if(f2f1) break; t=2*t; a0=a1;f0=f1; a1=a2;f1=f2;if(a0a2) a1=a0;f1=f0; a0=a2;f0=f2; a2=a1;f2=f1;return;float gold(float *ff) float a13,f13,a4,f4; float aa; int i; finding(a1,f1); a0=a10;f0=f10; a3=a12;f3=f12; a1=a0+0.382*(a3-a0); a2=a0+0.618*(a3-a0); f1=function(a1); f2=
11、function(a2); for(i=0;i+) if(f1=f2) a0=a1;f0=f1; a1=a2;f1=f2; a2=a0+0.618*(a3-a0); f2=function(a2);else a3=a2;f3=f2; a2=a1;f2=f1; a1=a0+0.382*(a3-a0); f1=function(a1);if(a3-a0)=0)&(2-D0-D1)=0)return 1;elsereturn 0;void bou()a0=-5,b0=6;a1=-5,b1=8;double r()double r1,r2,r3,rr;r1=pow(2,35);r2=pow(2,36)
12、;r3=pow(2,37);rm=5*rm;if(rm=r3)rm=rm-r3;if(rm=r2)rm=rm-r2;if(rm=r1)rm=rm-r1;rr=rm/r1;return rr;void produce(double An,double Bn)int jj;double S;s1: for(i=0;in;i+)S=r();XXi=Ai+S*(Bi-Ai);if(cons(XX)=0)goto s1;for(i=0;in;i+)X0i=XXi;for(j=1;jk;j+) for(i=0;in;i+) S=r();Xji=Ai+S*(Bi-Ai);for(j=1;jk;j+)for(
13、i=0;in;i+)X0i=0;for(jj=1;jjj+1;jj+)X0i+=Xjji;X0i=(1/j)*(X0i);if(cons(X0)=0)goto s1;for(i=0;in;i+)XXi=Xji;while(cons(XX)=0)for(i=0;in;i+)Xji=X0i+0.5*(Xji-X0i);XXi=Xji;main()double EE,Xcn,Xhn,Xgn,Xln,Xrn,Xsn,w;int l,lp,lp1;bou();s111:produce(a,b);s222:for(j=0;jk;j+)for(i=0;in;i+)XXi=Xji;FFj=F(XX);for(
14、l=0;lk-1;l+)for(lp=0;lpk-1;lp+) lp1=lp+1;if(FFlpFFlp1)w=FFlp;FFlp=FFlp1;FFlp1=w;for(i=0;in;i+)XXi=Xlpi;Xlpi=Xlp1i;Xlp1i=XXi;for(i=0;in;i+)Xhi=X0i;Xgi=Xli;Xli=Xk-1i;for(i=0;in;i+)Xsi=0;for(j=0;jk;j+)Xsi+=Xji;Xsi=1/(k+0.0)*Xsi;EE=0;for(j=0;jk;j+)EE+=pow(FFj-F(Xs),2);EE=pow(1/(k+0.0)*EE),0.5);if(EE=E1)
15、 goto s333; for(i=0;in;i+) Xci=0; for(j=1;jk;j+) Xci+=Xji; Xci=1/(k-1.0)*Xci; if(cons(Xc)=1) af=1.3; ss:for(i=0;i=F(Xh) if(af=ep) for(i=0;in;i+) Xhi=Xgi; af=1.3;goto ss; else af=1/2.0*af;goto ss; else for(i=0;in;i+) X0i=Xri; goto s222; else af=1/2.0*af;goto ss; else for(i=0;in;i+) if(XliXci) ai=Xli;
16、bi=Xci; else ai=Xci;bi=Xli; goto s111; s333:printf(F(Xmin)=%fn,F(Xl); for(i=0;i=-10)&(D1=-10)&(D2=-10)&(D3=-10)&(D0=10)&(D1=10)&(D2=10)&(D3=r3)rm=rm-r3;if(rm=r2)rm=rm-r2;if(rm=r1)rm=rm-r1;rr=rm/r1;return rr;void produce(double An,double Bn)int jj;double S;s1: for(i=0;in;i+)S=r();XXi=Ai+S*(Bi-Ai);if(
17、cons(XX)=0)goto s1;for(i=0;in;i+)X0i=XXi;for(j=1;jk;j+) for(i=0;in;i+) S=r();Xji=Ai+S*(Bi-Ai);for(j=1;jk;j+)for(i=0;in;i+)X0i=0;for(jj=1;jjj+1;jj+)X0i+=Xjji;X0i=(1/j)*(X0i);if(cons(X0)=0)goto s1;for(i=0;in;i+)XXi=Xji;while(cons(XX)=0)for(i=0;in;i+)Xji=X0i+0.5*(Xji-X0i);XXi=Xji;main()double EE,Xcn,Xh
18、n,Xgn,Xln,Xrn,Xsn,w;int l,lp,lp1;bou();s111:produce(a,b);s222:for(j=0;jk;j+)for(i=0;in;i+)XXi=Xji;FFj=F(XX);for(l=0;lk-1;l+)for(lp=0;lpk-1;lp+) lp1=lp+1;if(FFlpFFlp1)w=FFlp;FFlp=FFlp1;FFlp1=w;for(i=0;in;i+)XXi=Xlpi;Xlpi=Xlp1i;Xlp1i=XXi;for(i=0;in;i+)Xhi=X0i;Xgi=Xli;Xli=Xk-1i;for(i=0;in;i+)Xsi=0;for(j=0;jk;j+)Xsi+=Xji;Xsi=1/(k+0.0)*Xsi;EE=0;for(j=0;jk;j+)EE+=pow(FFj-F(Xs),2);EE=pow(1/(k+0.0)*EE),0.5);if(EE=E1) goto s333; for(i=0;in;i+) Xci=0; for(j=1;jk;j+) Xci+=Xji; Xci=1/(k-1.0)*Xci; if(cons(Xc)=1) af=1.3; ss:for(i=0;i=F(Xh) if(af=ep)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1