用MATLAB實現(xiàn)共軛梯度法求解實例_第1頁
用MATLAB實現(xiàn)共軛梯度法求解實例_第2頁
用MATLAB實現(xiàn)共軛梯度法求解實例_第3頁
用MATLAB實現(xiàn)共軛梯度法求解實例_第4頁
用MATLAB實現(xiàn)共軛梯度法求解實例_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、用MATLAB實現(xiàn)共軛梯度法求解實例康福 2021037100311 無約束優(yōu)化方法1.1 無約束優(yōu)化方法的必要性一般機械優(yōu)化設計問題,都是在一定的限制條件下追求某一指標為最小,它們都屬于約束優(yōu)化問題。但是為什么要研究無約束優(yōu)化問題? 1有些實際問題,其數(shù)學模型本身就是一個無約束優(yōu)化問題。 2通過熟悉它的解法可以為研究約束優(yōu)化問題打下良好的根底。 3約束優(yōu)化問題的求解可以通過一系列無約束優(yōu)化方法來到達。所以無約束優(yōu)化問題的解法是優(yōu)化設計方法的根本組成局部,也是優(yōu)化方法的根底。4對于多維無約束問題來說,古典極值理論中令一階導數(shù)為零,但要求二階可微,且要判斷海賽矩陣為正定才能求得極小點,這種方法有

2、理論意義,但無實用價值。和一維問題一樣,假設多元函數(shù)F(X)不可微,亦無法求解。但古典極值理論是無約束優(yōu)化方法開展的根底。 1.2共軛梯度法目前已研究出很多種無約束優(yōu)化方法,它們的主要不同點在于構造搜索方向上的差異。 1間接法要使用導數(shù),如梯度法、阻尼牛頓法、變尺度法、共軛梯度法等。2直接法不使用導數(shù)信息,如坐標輪換法、鮑威爾法單純形法等。用直接法尋找極小點時,不必求函數(shù)的導數(shù),只要計算目標函數(shù)值。這類方法較適用于解決變量個數(shù)較少的n 20問題,一般情況下比間接法效率低。間接法除要計算目標函數(shù)值外,還要計算目標函數(shù)的梯度,有的還要計算其海賽矩陣。 搜索方向的構成問題乃是無約束優(yōu)化方法的關鍵。共

3、軛梯度法是沿著共軛方向進行搜索,屬于共軛方向法中的一種,該方法中每一個共軛向量都是依賴于迭代點處的負梯度而構造出來。共軛梯度法作為一種實用的迭代法,它主要有下面的優(yōu)點:1算法中,系數(shù)矩陣的作用僅僅是用來由向量P產(chǎn)生向量W=AP,這不僅可充分利用的稀疏性,而且對某些提供矩陣較為困難而由向量P產(chǎn)生向量W=AP又十分方便的應用問題是很有益的。2不需要預先估計任何參數(shù)就可以計算,這一點不像SOR等;3每次迭代所需的計算,主要是向量之間的運算,便于并行化。共軛梯度法原理的知識較多,請詳見?機械優(yōu)化設計?第四章的第四、五節(jié)。圖1為共軛梯度法的程度框圖圖1為共軛梯度法的程度框圖2 設計題目及要求2.1設計題

4、目用共軛梯度法求二次函數(shù) 的極小點及極小值。2.2設計要求(1) 使用matlab編寫程序,熟練撐握matlab編程方法。(2) 學習并撐握共軛梯度法的原理、方法及應用,并了解不同無約束優(yōu)化方法的區(qū)別、優(yōu)缺點及特殊要求。(3) 編寫程序,計算出二次函數(shù)的極小點及極小值,并適中選取不同的初始點及迭代精度精度,分析比擬結果。三計算步驟3.1計算求解解:初始點1,1T 迭代精度 1第一次沿負梯度方向搜尋計算初始點處的梯度:為一維搜索最正確步長,應滿足得: 2第二次迭代 代入目標函數(shù)由 得從而有:因收斂。3.2運行與程序運行:翻開matlab,確定conjugate_grad_2d.m文件夾為當前目錄

5、。 在命令窗中輸入:f=conjugate_grad_2d(1,1,0.001) 選擇不同的初始點坐標0,0,0,1,1,0,和迭代精度0.01,0.0001,進行運行時,需要屢次調(diào)用conjugate_grad_2d函數(shù)。程序及說明:function f=conjugate_grad_2d(x0,t)%用共軛梯度法求函數(shù)f(x1,x2)=x12+2*x22-4*x1-2*x1*x2的極值點%初始點坐標:x0%收斂精度:t%求得函數(shù)的極值:fx=x0;syms xi yi a; %定義自變量,步長為符號變量f=xi2+2*yi2-4*xi-2*xi*yi; %創(chuàng)立符號表達式ffx=diff(f

6、,xi); %求表達式f對xi的一階求導fy=diff(f,yi); %求表達式f對yi的一階求導fx=subs(fx,xi,yi,x0); %代入初始點坐標計算對xi的一階求導實值fy=subs(fy,xi,yi,x0); %代入初始點坐標計算對yi的一階求導實值fi=fx,fy; %初始點梯度向量count=0; %搜索次數(shù)初始為0while double(sqrt(fx2+fy2)>t %搜索精度不滿足條件 s=-fi; %第一次搜索的方向為負梯度方向 if count<=0 s=-fi; else s=s1; end x=x+a*s; %進行一次搜索后的點坐標 f=subs

7、(f,xi,yi,x); %構造一元搜索的一元函數(shù)(a) f1=diff(f); %對函數(shù)(a)進行求導 f1=solve(f1); %得到最正確步長a if f1=0 ai=double(f1); %強制轉(zhuǎn)換數(shù)據(jù)類型為雙精度數(shù)值 else break %假設a=0,那么直接跳出循環(huán),此點即為極值點 end x=subs(x,a,ai); %得到一次搜索后的點坐標值 f=xi2+2*yi2-4*xi-2*xi*yi; fxi=diff(f,xi); fyi=diff(f,yi); fxi=subs(fxi,xi,yi,x); fyi=subs(fyi,xi,yi,x); fii=fxi,fyi

8、; %下一點梯度向量 d=(fxi2+fyi2)/(fx2+fy2); s1=-fii+d*s; %下一點搜索的方向向量 count=count+1; %搜索次數(shù)加1 fx=fxi; fy=fyi; %搜索后終點坐標變?yōu)橄乱淮嗡阉鞯氖键c坐標endx,f=subs(f,xi,yi,x),count %輸出極值點,極小值以及搜索次數(shù)四運行結果及分析此程序運行2秒后終止,結果如下:x = 4 2 極小點坐標f = -8 極小值數(shù)值count = 2 迭代次數(shù)ans = -8分析可得:(1) 由結果看出,程序經(jīng)過2次迭代,得到二次函數(shù)的極小值坐標4,2,極小值-8;說明共軛梯度法收斂速度較快,計算量較

9、小,穩(wěn)定性高。(2) 選擇不同的初始點坐標0,0,0,1,1,0,1,1,都是經(jīng)過2次迭代得到一致的結果;說明共軛梯度法初始點的選擇不影響收斂結果。(3) 選擇迭代精度0.0001,程序?qū)⒔\行15秒才結束;可知迭代精度越高時,程序運行的時候越長,所以在實際應用中選擇適當?shù)牡龋欣谔岣哂嬎愕男省?4) 從共軛梯度法的計算過程可以看出,第一個搜索方向取作負梯度方向,這就是最速下降法。其余各步的搜索方向是將負梯度偏轉(zhuǎn)一個角度,也就是對負梯度進行修正。所以共軛梯度法實質(zhì)上是對最速下降法進行的一種改良,故它又被稱作旋轉(zhuǎn)梯度法。五結束語優(yōu)化設計是是機械行業(yè)開展起來的一門新學科,將最優(yōu)化原理和計

10、算機應用于設計領域,為工程設計提供一種重要的科學設計方法。利用它,人們可以從眾多的設計方案中尋找最正確設計方案,從而大大提高設計效率和質(zhì)量,廣泛應用于各個工業(yè)部門。在自然科學和工程技術中很多問題的解決常常歸結為約束優(yōu)化或無約束優(yōu)化的問題。首先根據(jù)實際的機械問題建立相應的數(shù)學模型,即應用數(shù)學形式描述實際設計問題。同時需要用專業(yè)的知識確定設計的限制條件和所追求的目標,確立各設計變量之間的相互關系等。一旦建立數(shù)學模型,應用數(shù)學規(guī)劃理論的方法,根據(jù)數(shù)學模型的特點可以選擇適當?shù)膬?yōu)化方法,進而可以選擇適當?shù)挠嬎銠C程序,以計算作為工具求得最正確優(yōu)化設計參數(shù)。通過學習發(fā)現(xiàn),共軛梯度法是介于最速下降法與牛頓法之

11、間的一個方法,它僅需利用一階導數(shù)信息,但克服了最速下降法收斂慢的缺點,又防止了牛頓法需要存儲和計算Hesse矩陣并求逆的缺點,共軛梯度法不僅是解決大型線性方程組最有用的方法之一,也是解大型非線性最優(yōu)化最有效的算法之一。其優(yōu)點是所需存儲量小,具有步收斂性,穩(wěn)定性高,而且不需要任何外來參數(shù)。如何把實際的工程技術問題轉(zhuǎn)化為理論的數(shù)學模型,進行分析運算求解,是檢驗我們是否學好這一課的關鍵。這可以讓我們在以后的研究生生涯中有更加透徹的理解能力,扎實地撐握機械知識,培養(yǎng)創(chuàng)造性思維,專業(yè)技能有新的提高。文檔收集自網(wǎng)絡,僅用于個人學習通過這次作業(yè)的完成,越來越覺得數(shù)學方法在機械優(yōu)化設計中的重要性。無論是優(yōu)化設計,CAD,CAE,其理論支撐都是來自高等數(shù)學、數(shù)值分析、矩陣分析這幾門課程,這讓我對原本枯燥無味的數(shù)學課程,又有了新的態(tài)度,新的激情。認真學習好數(shù)學,理論聯(lián)系實踐,同時借助于強大的計算機工具,解決實際問題。Matlab是一種強大的科學計算工具,為科學研究、工程設計以及必須進行有效數(shù)值計算的眾多科學領域提供了一種有力的工具。在使用Matlab編寫程序時,對于編程的根本規(guī)那么及函數(shù)的調(diào)用缺乏清晰的認識,程序運行中經(jīng)常出現(xiàn)錯誤,一點一滴地調(diào)試再糾正。比方:程序運行過程中經(jīng)常出現(xiàn)錯誤:Error using =>Too many input arguments。查閱了些書籍,

溫馨提示

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

最新文檔

評論

0/150

提交評論