共軛梯度法-機械優(yōu)化設計.doc

共軛梯度法-機械優(yōu)化設計.doc

ID:58150780

大?。?4.00 KB

頁數(shù):9頁

時間:2020-04-11

共軛梯度法-機械優(yōu)化設計.doc_第1頁
共軛梯度法-機械優(yōu)化設計.doc_第2頁
共軛梯度法-機械優(yōu)化設計.doc_第3頁
共軛梯度法-機械優(yōu)化設計.doc_第4頁
共軛梯度法-機械優(yōu)化設計.doc_第5頁
資源描述:

《共軛梯度法-機械優(yōu)化設計.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、實驗報告實驗課程名稱機械優(yōu)化設計實驗項目名稱共軛梯度法年級專業(yè)學生姓名學號實驗時間:2012年11月2日8學生所在學院:專業(yè):班級:姓名學號實驗組實驗時間指導教師成績實驗項目名稱共軛梯度法求函數(shù)極小值1、實驗目的及要求:實驗目的:掌握機械優(yōu)化設計方法并能夠理論聯(lián)系實際地加以應用,任務是將課程所學的知識應用于實踐,通過實際編寫調(diào)試及運行程序加深理論知識的掌握并提高解決優(yōu)化問題的能力。根據(jù)實驗指導書的要求應能夠獨立的編寫優(yōu)化程序并在計算機上運行,學會判斷結(jié)果及程序的正確性,學會建立機械優(yōu)化設計的數(shù)學模型,合理選用優(yōu)化方法,獨立的解決機械優(yōu)化設計的實際問題。實驗(或算

2、法)原理:共軛梯度法是共軛方向法中的一種,該方法中每一個共軛向量都是依賴與迭代點處的負梯度而構(gòu)造出來。它通過梯度來尋找極小點。先通過一維搜索確定搜索區(qū)間,然后再通過共軛梯度法運用c語言編程求解。實驗硬件及軟件平臺:vs20108實驗步驟:1.確定所需求解的函數(shù)y=pow(x[0]+t*p[0],2)+25*pow(x[1]+t*p[1],2)2.確定搜索區(qū)間3.畫出程序框圖4.用c語言在vs2010上寫出源代碼5.運行程序6.檢驗試驗結(jié)果,分析結(jié)果實驗內(nèi)容(包括實驗具體內(nèi)容、算法分析、源代碼等等):本實驗通過c語言編程,運用共軛梯度法求解函數(shù)y極小值;程序框圖8

3、源程序#include#include#defineN10#defineepspow(10,-6)doublef(doublex[],doublep[],doublet){doubles;s=pow(x[0]+t*p[0],2)+25*pow(x[1]+t*p[1],2);returns;}voidsb(double*a,double*b,doublex[],doublep[]){doublet0,t1,t,h,alpha,f0,f1;intk=0;t0=2.5;/*初始值*/h=1;/*初始步長*/alpha=2;/*加步系數(shù)

4、*/f0=f(x,p,t0);t1=t0+h;f1=f(x,p,t1);while(1){if(f1t1?t:t1;break;8}}t1=t0+h;f1=f(x,p,t1);}}doublehjfg(doublex[],doublep[]){doublebeta,t1,t2,t;doublef1,f2;doublea=0,b=0;double*c,*d;c=&a,d=&b;sb(c,d,x,p

5、);printf("x1=%lf,x2=%lf,p1=%lf,p2=%lf",x[0],x[1],p[0],p[1]);printf("[a,b]=[%lf,%lf]",a,b);system("pause");beta=(sqrt(5)-1.0)/2;t2=a+beta*(b-a);f2=f(x,p,t2);t1=a+b-t2;f1=f(x,p,t1);while(1){if(fabs(t1-t2)

6、}else{a=t1;t1=t2;f1=f2;t2=a+beta*(b-a);f2=f(x,p,t2);8}}}t=(t1+t2)/2;returnt;}voidgtd(){doublex[N],g[N],p[N],t=0,f0,mod1=0,mod2=0,nanda=0;inti,k,n;printf("請輸入函數(shù)的元數(shù)值n=");scanf("%d",&n);printf("請輸入初始值");for(i=0;i

7、t(pow(g[0],2)+pow(g[1],2));if(mod1>eps){p[0]=-g[0];p[1]=-g[1];k=0;while(1){t=hjfg(x,p);printf("p1=%lf,p2=%lf,t=%lf",p[0],p[1],t);x[0]=x[0]+t*p[0];x[1]=x[1]+t*p[1];g[0]=2*x[0];g[1]=50*x[1];/*printf("x1=%lf,x2=%lf,g1=%lf,g2=%lf",x[0],x[1],g[0],g[1]);*/mod2=sqrt(pow(g[0],2)+pow(g[1]

8、,2));if(mod2

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。