資源描述:
《求解無約束最優(yōu)化問題的共軛梯度法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、首次試做實驗記錄年月日實驗課程名稱最優(yōu)化方法面向?qū)I(yè)信息與計算科學(xué)總學(xué)時數(shù)實驗項目名稱求解無約束最優(yōu)化問題的共軛梯度法實驗學(xué)時一、實驗?zāi)康?、要求目的:進一步掌握解無約束最優(yōu)化問題的共軛梯度法的基本思想,熟悉關(guān)于極小化正定二次函數(shù)以及非二次函數(shù)的共軛梯度法的算法,了解它們的特點,加強編程能力和編程技巧,能夠上機求解一些多變量函數(shù)最優(yōu)化問題。要求:針對給定的實驗題目,根據(jù)共軛梯度法的算法,能夠熟練地使用某種語言上機編程,給出實驗結(jié)果,注意上機編程的正確性。二、實驗原理共軛梯度法是介于最速下降法與牛頓法之間的一個方法,它僅需利用一階導(dǎo)數(shù)信息,但克服了最速下降法收斂慢的缺
2、點,又避免了牛頓法需要存儲和計算Hesse矩陣并求逆的特點。共軛梯度法具有二次終止性,即對于正定二次函數(shù),在精確線搜索的條件下,方法有限步終止。關(guān)于正定二次函數(shù)和非二次函數(shù)的共軛梯度法詳見教材中的算法4.3.4和算法4.3.8。需要寫算法三、實驗內(nèi)容:極小化函數(shù),其中。四、實驗過程原始記錄(數(shù)據(jù)、圖表、計算等)%首先我們給出給出針對正定二次函數(shù)的共軛梯度法的程序%該程序具有一定的適應(yīng)性,適合一般的正定二次函數(shù)function[x,iter]=cgopt(G,b,x0,max_iter,tol)%Conjugategradientmethodforthefollow
3、ingpositivedefinitequadratic%function%x0:startingpoint%max_iter:maximumnumberofiterations%tol:toleranceofthegradientx=x0;fprintf('x0=');fprintf('%10.6f',x0);r=G*x-b;d=-r;fork=1:max_iterifnorm(r)<=toliter=k-1;fprintf('Algorithmfindsasolution!');returnendalpha=(r'*r)/(d'*G*d);xx=x+a
4、lpha*d;rr=r+alpha*G*d;beta=(rr'*rr)/(r'*r);d=-rr+beta*d;x=xx;r=rr;fprintf('x%d=',k);fprintf('%10.6f',x);enditer=max_iter;return%下面我們給出利用共軛梯度法法求解本實驗題目的主程序%該程序具有針對性,需針對具體的題目進行適當(dāng)?shù)男薷膄unctionCG_main()G=[101234;19-12-3;2-173-5;32312-1;4-3-5-115];b=[12-2714-1712]';x0=[00000]';max_iter=1000
5、;tol=1e-6;fprintf('');fprintf('ConjugateGradientMethod:');fprintf('=============');[x,iter]=cgopt(G,b,x0,max_iter,tol);fprintf('Iterativenumber:%d',iter);fprintf('Solution:');fprintf('%10.6f',x);fprintf('=============');五、實驗結(jié)果及分析我們在工作窗口輸入命令CG_main(),運行后得結(jié)果ConjugateGrad
6、ientMethod:=============x0=0.0000000.0000000.0000000.0000000.000000x1=1.073560-2.4155101.252487-1.5208771.073560x2=1.305605-2.6279812.146636-1.6942700.442393x3=1.446618-2.2253842.448048-1.9706910.620722x4=1.086550-2.0635742.792911-2.1016450.836386x5=1.000000-2.0000003.000000-2.0000001
7、.000000Algorithmfindsasolution!Iterativenumber:5Solution:1.000000-2.0000003.000000-2.0000001.000000=============結(jié)果分析:我們根據(jù)解針對正定二次函數(shù)的共軛梯度法的算法編寫了Matla程序。上機運行后經(jīng)過5次迭代后得到了精確最優(yōu)解。本題中的目標(biāo)函數(shù)是正定二次函數(shù),未知變量的維數(shù)為5,理論上共軛梯度法經(jīng)過5次迭代后即可得到最優(yōu)解,而上機數(shù)值實驗的結(jié)果也是如此。結(jié)果說明了用共軛梯度法求解無約束最優(yōu)化問題的可行性,同時也表明了我們編寫的程序的正確性。