現(xiàn)代設(shè)計黃金分割法、復(fù)合形法實驗報告_第1頁
現(xiàn)代設(shè)計黃金分割法、復(fù)合形法實驗報告_第2頁
現(xiàn)代設(shè)計黃金分割法、復(fù)合形法實驗報告_第3頁
現(xiàn)代設(shè)計黃金分割法、復(fù)合形法實驗報告_第4頁
現(xiàn)代設(shè)計黃金分割法、復(fù)合形法實驗報告_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 現(xiàn)代設(shè)計理論與方法實驗報告 、實驗?zāi)康?機械優(yōu)化設(shè)計是一門實踐性較強的課程,學(xué)生通過實際上機計算可以達(dá)到以 下目的: 1 加深對機械優(yōu)化設(shè)計方法的基本理論和算法步驟的理解; 2 培養(yǎng)學(xué)生獨立編制或調(diào)試計算機程序的能力; 3 掌握常用優(yōu)化方法程序的使用方法; 4 培養(yǎng)學(xué)生靈活運用優(yōu)化設(shè)計方法解決工程實際問題的能力 、實驗項目、學(xué)時分配及對每個實驗項目的要求 實驗項目 學(xué)時 實驗要求 1 明確黃金分割法基本原理、計算步驟及程序框圖; 1 黃金分割法 2編制或調(diào)試黃金分割法應(yīng)用程序; 3 用測試題對所編程序進行測試; 4撰寫實驗報告 1 明確復(fù)合形法基本原理、計算步驟及程序框圖 等; 2 復(fù)合形法

2、 42.編制或調(diào)試復(fù)合形法應(yīng)用程序; 3 用測試題對所編程序進行測試; 4.撰寫實驗報告。 三、測試題 1.黃金分割法程序測試題 1) nil =-10 x4-36 取嶺三。爲(wèi)三=10 程序如下: #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;/求解的一維函數(shù) return(y); void finding(float a3,float f3) float t=tt,a1,f1,ia; int i; a0=0;/

3、初始區(qū)間的下界值 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=a0;f1=f0; a0=a2;f0=f2; a2=a1;f2=f1; return; float gold(float *ff) float a13,f1

4、3,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=function(a2); else a3=a2;f3=f2; a2=a1;f2=f1; a1=a0+0.382*(a3-a0); f1=function(a1

5、); if(a3-a0)e) aa=(a1+a2)/2;*ff=function(aa); break; return(aa); void main() float xx, ff; xx=gold( printf(n The Optimal Design Result Is:n); printf(ntx*=%fntf*=%f, xx, ff); getch(); 運行結(jié)果: 回 rtr 2)fu -FW =r+ -5r +-6x + ti0 取耳 Y 為*12 程序如下: #in clude #in clude #in clude #defi ne e 0.00001 #defi ne tt

6、0.01 float fun cti on( float x) 求解的一維函數(shù) float y=pow(x,4)-5*pow(x,3)+4*pow(x,2)-6*x+60; return(y); void fin di ng(float a3,float f3) float t=tt,a1,f1,ia; int i; a0=0;初始區(qū)間的下界值 f0=fu nctio n(a0); for(i=0;i+) a1=a0+t;f1=fu nctio n(a1); if(f1=e) t=-t;a0=a1;f0=f1; else if(ia=1) return; t=t/2;ia=1; for(i=0

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

8、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)o,取儀,耐MOI , d尸 程序如下: #in clude #in clude #in clude #define e 0.00001 #defi ne tt 0.01 float fun cti on( float x) 求解的一維函

9、數(shù) float y=(x+1)*pow(x-2),2); return(y); void fin di ng(float a3,float f3) float t=tt,a1,f1,ia; int i; a0=0;/ 初始區(qū)間的下界值 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;f

10、0=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=function(a2); for(i=0;i+) if(f1=f2) a0=a1;f0=f1; a1=a2;f1

11、=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) else return 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);r3=pow(2,37);rm=5*rm; if(rm=r3)rm=rm-r3; if(rm=r2)rm=rm-r2; if(rm=r1

12、)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(i=0;in;i+) X0i=0; for(jj=1;jjj+1;jj+) X0i+=Xjji; X0

13、i=(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(l=0;lk-1;l+) for(lp=0;lpk-1;l

14、p+) 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;

15、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;i n ;i+) if(XIiXci) ai=XIi;bi=Xci; el

16、se ai=Xci;bi=XIi; goto s111; s333:pri ntf(F(Xmi n)=%fn,F(XI); for(i=0;i n;i+) prin tf(n The X%d is %f.,i,XIi); 運行結(jié)果如下: E * C:Ud mi m str-a t)orDeskt o20100621 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=A

17、i+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(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-X

18、0i); 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(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+

19、) 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=

20、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;bi=Xci; else ai=Xci;bi=Xli; goto s111; s333:printf(F(Xmin)=%fn,F(Xl); for(i=0;iebugCpp6.exe | u | 回 S3 |F=0.000?5? ini F(JT)二

21、X +x2 斗 W -1。片41 +60 M gl(J3=jq0 筋03=耳mo 殆岔=五-耳工0 取:廠廠丁 丁】: 程序如下: #in elude math.h #i nclude stdio.h #in elude stdlib.h #define E1 0.001 #defi ne ep 0.00001 #defi ne n 2 #defi ne k 4 double af; int i,j; double X0n ,XX n ,Xk n,FFk; double an,bn; double rm=2657863.0; double F(double Cn) double F; F=po

22、w(C0,2)+pow(C1,2)-C0*C1-10*C0-4*C1+60; return F; int cons(double Dn) if(D0=0) else return 0; void bou() a0=0,b0=6; a1=0,b1=8; double r() double r1,r2,r3,rr; r1=pow(2,35);r2=pow(2,36);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(doub

23、le 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(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

24、;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(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=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論