資源描述:
《求解無(wú)約束最優(yōu)化問(wèn)題的共軛梯度法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、首次試做實(shí)驗(yàn)記錄年月日實(shí)驗(yàn)課程名稱最優(yōu)化方法面向?qū)I(yè)信息與計(jì)算科學(xué)總學(xué)時(shí)數(shù)實(shí)驗(yàn)項(xiàng)目名稱求解無(wú)約束最優(yōu)化問(wèn)題的共軛梯度法實(shí)驗(yàn)學(xué)時(shí)一、實(shí)驗(yàn)?zāi)康?、要求目的:進(jìn)一步掌握解無(wú)約束最優(yōu)化問(wèn)題的共軛梯度法的基本思想,熟悉關(guān)于極小化正定二次函數(shù)以及非二次函數(shù)的共軛梯度法的算法,了解它們的特點(diǎn),加強(qiáng)編程能力和編程技巧,能夠上機(jī)求解一些多變量函數(shù)最優(yōu)化問(wèn)題。要求:針對(duì)給定的實(shí)驗(yàn)題目,根據(jù)共軛梯度法的算法,能夠熟練地使用某種語(yǔ)言上機(jī)編程,給出實(shí)驗(yàn)結(jié)果,注意上機(jī)編程的正確性。二、實(shí)驗(yàn)原理共軛梯度法是介于最速下降法與牛頓法之間的一個(gè)方法,它僅需利用一階導(dǎo)數(shù)信息,但克服了最速下降法收斂慢的缺
2、點(diǎn),又避免了牛頓法需要存儲(chǔ)和計(jì)算Hesse矩陣并求逆的特點(diǎn)。共軛梯度法具有二次終止性,即對(duì)于正定二次函數(shù),在精確線搜索的條件下,方法有限步終止。關(guān)于正定二次函數(shù)和非二次函數(shù)的共軛梯度法詳見(jiàn)教材中的算法4.3.4和算法4.3.8。需要寫算法三、實(shí)驗(yàn)內(nèi)容:極小化函數(shù),其中。四、實(shí)驗(yàn)過(guò)程原始記錄(數(shù)據(jù)、圖表、計(jì)算等)%首先我們給出給出針對(duì)正定二次函數(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%下面我們給出利用共軛梯度法法求解本實(shí)驗(yàn)題目的主程序%該程序具有針對(duì)性,需針對(duì)具體的題目進(jìn)行適當(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('=============');五、實(shí)驗(yàn)結(jié)果及分析我們?cè)诠ぷ鞔翱谳斎朊頒G_main(),運(yùn)行后得結(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ù)解針對(duì)正定二次函數(shù)的共軛梯度法的算法編寫了Matla程序。上機(jī)運(yùn)行后經(jīng)過(guò)5次迭代后得到了精確最優(yōu)解。本題中的目標(biāo)函數(shù)是正定二次函數(shù),未知變量的維數(shù)為5,理論上共軛梯度法經(jīng)過(guò)5次迭代后即可得到最優(yōu)解,而上機(jī)數(shù)值實(shí)驗(yàn)的結(jié)果也是如此。結(jié)果說(shuō)明了用共軛梯度法求解無(wú)約束最優(yōu)化問(wèn)題的可行性,同時(shí)也表明了我們編寫的程序的正確性。