現(xiàn)代設(shè)計理論與方法第二次作業(yè)_第1頁
現(xiàn)代設(shè)計理論與方法第二次作業(yè)_第2頁
現(xiàn)代設(shè)計理論與方法第二次作業(yè)_第3頁
現(xiàn)代設(shè)計理論與方法第二次作業(yè)_第4頁
現(xiàn)代設(shè)計理論與方法第二次作業(yè)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、現(xiàn)代設(shè)計理論與方法第二次作業(yè)無約束優(yōu)化方法習(xí)題三、用牛頓法求解(變量收斂精度為10-5 )(1) 解:通過使用已有的牛頓法程序,分別將目標(biāo)函數(shù)、初始點及收斂精度輸入程序,便得到所求函數(shù)的結(jié)果,如下圖:(2)將函數(shù)在點簡化為二次函數(shù),并用牛頓法求此二次函數(shù)的最優(yōu)解。解:1)通過調(diào)用matlab中的泰勒函數(shù),將函數(shù)簡化成在點處的二次函數(shù)如下圖:編寫的huajiancheng_2ci.m文件程序如下:syms x1 x2f=x14-3*x12*x2+2*x23;ffprintf('化簡后的二次函數(shù)n')f1=taylor(f, x1,x2,1,1,'order',3)

2、2)將第一問的化簡后的二次函數(shù)與入牛頓法程序所得結(jié)果如下圖所示四、用最速下降法求解(變量收斂精度為10-5 )(1) (2)將函數(shù)在點簡化為二次函數(shù),并用最速下降法求此二次函數(shù)的最優(yōu)解。答:同樣調(diào)用huajiancheng_2ci.m文件程序,得出如下圖化簡結(jié)果然后將化簡結(jié)果寫入最速下降法程序中得:附錄原程序:第3題第(1)問原程序%現(xiàn)代設(shè)計理論與方法第二次作業(yè)%=function Ymin=newton_methodX=1,1;epsi=1e-5;X0=X.' %設(shè)置初始點X0。G=Gname(X0(1),X0(2); k=0; %將迭代次數(shù)置0。while (abs(norm(G,

3、2)>epsi %while循環(huán),將梯度的模和收斂精度比較進行迭代計算。syms t X1=X0; %把X(k)點先賦值給X(k+1)點。H1=Hname(X1(1),X1(2); X1=X1-t*(inv(H1)*G; f_t=fname(X1(1),X1(2); df_t=diff(f_t); %函數(shù)對t求一階導(dǎo)數(shù)。t0=solve(df_t); %求解最優(yōu)步長。t=subs(t0); X0=X0-t*(inv(H1)*G; G=Gname(X0(1),X0(2); %調(diào)用梯度函數(shù) k=k+1; endYmin=fname(X0(1),X0(2); fprintf('迭代次數(shù)

4、為:n %g',k) %輸出迭代次數(shù)。fprintf('n');fprintf('牛頓法求得最優(yōu)解為:%f,%f',double(X0); %輸出最優(yōu)解。fprintf('n');fprintf('牛頓法求得最優(yōu)值的小數(shù)表示為:%fn分?jǐn)?shù)表示為:',double(Ymin) %輸出最小值。 %梯度計算函數(shù) function G=Gname(a,b) syms x1 x2 f=fname(x1,x2); dfx1=diff(f,'x1'); dfx2=diff(f,'x2'); df1=sub

5、s(dfx1,x1,x2,a,b); df2=subs(dfx2,x1,x2,a,b); G1=df1,df2' G=subs(G1); %海森矩陣計算函數(shù)function H=Hname(a,b) syms x1 x2 f=fname(x1,x2); dfx1=diff(f,'x1'); dfx2=diff(f,'x2'); dfx11=diff(dfx1,'x1'); dfx12=diff(dfx1,'x2'); dfx21=diff(dfx2,'x1'); dfx22=diff(dfx2,'x

6、2'); df11=subs(dfx11,x1,a); df11=subs(df11,x2,b); df12=subs(dfx12,x1,a);df12=subs(df12,x2,b);df21=subs(dfx21,x1,a);df21=subs(df21,x2,b);df22=subs(dfx22,x1,a);df22=subs(df22,x2,b);H1=df11,df12;df21,df22; H=subs(H1); %目標(biāo)函數(shù)表達(dá)式function f=fname(x1,x2) f=x12-2*x1*x2+1.5*x22+x1-2*x2;第3題第(2)原程序%現(xiàn)代設(shè)計理論與方

7、法第二次作業(yè)%第三題第2小題%=function Ymin=newton_method2X=1,1;epsi=1e-5;X0=X.' %設(shè)置初始點X0。G=Gname(X0(1),X0(2); k=0; %將迭代次數(shù)置0。while (abs(norm(G,2)>epsi %while循環(huán),把梯度的模和收斂精度進行比較。syms t X1=X0; %把X(k)點先賦值給X(k+1)點。H1=Hname(X1(1),X1(2); X1=X1-t*(inv(H1)*G; f_t=fname(X1(1),X1(2); df_t=diff(f_t); %函數(shù)對t求一階導(dǎo)數(shù)。t0=solv

8、e(df_t); %求解最優(yōu)步長。t=subs(t0); X0=X0-t*(inv(H1)*G; G=Gname(X0(1),X0(2); %調(diào)用梯度函數(shù) k=k+1; endYmin=fname(X0(1),X0(2); fprintf('迭代次數(shù)為:n %g',k) %輸出迭代次數(shù)。fprintf('n');fprintf('牛頓法求得最優(yōu)解為X0=%f,%f',double(X0); %輸出最優(yōu)解。fprintf('n');fprintf('牛頓法求得最優(yōu)值的小數(shù)表示為Ymin=%fn分?jǐn)?shù)表示為:',doub

9、le(Ymin) %輸出最小值。 %梯度計算函數(shù) function G=Gname(a,b) syms x1 x2 f=fname(x1,x2); dfx1=diff(f,'x1'); dfx2=diff(f,'x2'); df1=subs(dfx1,x1,x2,a,b); df2=subs(dfx2,x1,x2,a,b); G1=df1,df2' G=subs(G1); %海森矩陣計算函數(shù)function H=Hname(a,b) syms x1 x2 f=fname(x1,x2); dfx1=diff(f,'x1'); dfx2=di

10、ff(f,'x2'); dfx11=diff(dfx1,'x1'); dfx12=diff(dfx1,'x2'); dfx21=diff(dfx2,'x1'); dfx22=diff(dfx2,'x2'); df11=subs(dfx11,x1,a); df11=subs(df11,x2,b); df12=subs(dfx12,x1,a);df12=subs(df12,x2,b);df21=subs(dfx21,x1,a);df21=subs(df21,x2,b);df22=subs(dfx22,x1,a);df2

11、2=subs(df22,x2,b);H1=df11,df12;df21,df22; H=subs(H1); %目標(biāo)函數(shù)表達(dá)式function f=fname(x1,x2) f=3*x2 - 2*x1 - 6*(x1 - 1)*(x2 - 1) + 3*(x1 - 1)2 + 6*(x2 - 1)2 - 1;第四題第(1)問源程序%現(xiàn)代設(shè)計理論與方法第二次作業(yè)%第四題第1小題%=function Ymin=zuisuxiajiang_methodX=1,1;epsi=1e-5;X0=X.' %設(shè)置初始點X0。G=Gname(X0(1),X0(2); k=0; %將迭代次數(shù)置0。while

12、 abs(G)>epsi %while循環(huán),把梯度的模和收斂精度進行比較。syms t X1=X0; %把X(k)點先賦值給X(k+1)點。 X1=X1-t*G; f_t=fname(X1(1),X1(2); df_t=diff(f_t); %函數(shù)對t求一階導(dǎo)數(shù)。t0=solve(df_t); %求解最優(yōu)步長。t=subs(t0); X0=X0-t*G; G=Gname(X0(1),X0(2); %調(diào)用梯度函數(shù) k=k+1; endYmin=fname(X0(1),X0(2); fprintf('迭代次數(shù)為:n %g',k) %輸出迭代次數(shù)。fprintf('n&

13、#39;);fprintf('最速下降法求得最優(yōu)解為X0=%f,%f',double(X0); %輸出最優(yōu)解。fprintf('n');fprintf('最速下降法求得最優(yōu)值的小數(shù)表示為Ymin=%fn分?jǐn)?shù)表示為:',double(Ymin) %輸出最小值。 %梯度計算函數(shù) function G=Gname(a,b) syms x1 x2 f=fname(x1,x2); dfx1=diff(f,'x1'); dfx2=diff(f,'x2'); df1=subs(dfx1,x1,x2,a,b); df2=subs(

14、dfx2,x1,x2,a,b); G1=df1,df2' G=subs(G1); %目標(biāo)函數(shù)表達(dá)式function f=fname(x1,x2) f=x12-2*x1*x2+1.5*x22+x1-2*x2;第四題第(2)問源程序%現(xiàn)代設(shè)計理論與方法第二次作業(yè)%第四題第2小題%=function Ymin=zuisuxiajiang_method2X=1,1;epsi=1e-5;X0=X.' %設(shè)置初始點X0。G=Gname(X0(1),X0(2); k=0; %將迭代次數(shù)置0。while abs(G)>epsi %while循環(huán),把梯度的模和收斂精度進行比較。syms t

15、 X1=X0; %把X(k)點先賦值給X(k+1)點。 X1=X1-t*G; f_t=fname(X1(1),X1(2); df_t=diff(f_t); %函數(shù)對t求一階導(dǎo)數(shù)。t0=solve(df_t); %求解最優(yōu)步長。t=subs(t0); X0=X0-t*G; G=Gname(X0(1),X0(2); %調(diào)用梯度函數(shù) k=k+1; endYmin=fname(X0(1),X0(2); fprintf('迭代次數(shù)為:n %g',k) %輸出迭代次數(shù)。fprintf('n');fprintf('最速下降法求得最優(yōu)解為X0=%f,%f',double(X0); %輸出最優(yōu)解。fprintf('n');fprintf('最速下降法求得最優(yōu)值的小數(shù)表示為Ymin=%fn分?jǐn)?shù)表示為:',double(Ymin) %輸出最小值。 %梯度計算函數(shù) function G=Gname(a,b) syms x1 x2 f=fnam

溫馨提示

  • 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

提交評論