現代設計理論與方法第二次作業_第1頁
現代設計理論與方法第二次作業_第2頁
現代設計理論與方法第二次作業_第3頁
現代設計理論與方法第二次作業_第4頁
現代設計理論與方法第二次作業_第5頁
已閱讀5頁,還剩3頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

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

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

3、2)>epsi %while循環,將梯度的模和收斂精度比較進行迭代計算。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); %函數對t求一階導數。t0=solve(df_t); %求解最優步長。t=subs(t0); X0=X0-t*(inv(H1)*G; G=Gname(X0(1),X0(2); %調用梯度函數 k=k+1; endYmin=fname(X0(1),X0(2); fprintf('迭代次數

4、為:n %g',k) %輸出迭代次數。fprintf('n');fprintf('牛頓法求得最優解為:%f,%f',double(X0); %輸出最優解。fprintf('n');fprintf('牛頓法求得最優值的小數表示為:%fn分數表示為:',double(Ymin) %輸出最小值。 %梯度計算函數 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); %海森矩陣計算函數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); %目標函數表達式function f=fname(x1,x2) f=x12-2*x1*x2+1.5*x22+x1-2*x2;第3題第(2)原程序%現代設計理論與方

7、法第二次作業%第三題第2小題%=function Ymin=newton_method2X=1,1;epsi=1e-5;X0=X.' %設置初始點X0。G=Gname(X0(1),X0(2); k=0; %將迭代次數置0。while (abs(norm(G,2)>epsi %while循環,把梯度的模和收斂精度進行比較。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); %函數對t求一階導數。t0=solv

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

9、le(Ymin) %輸出最小值。 %梯度計算函數 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); %海森矩陣計算函數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); %目標函數表達式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)問源程序%現代設計理論與方法第二次作業%第四題第1小題%=function Ymin=zuisuxiajiang_methodX=1,1;epsi=1e-5;X0=X.' %設置初始點X0。G=Gname(X0(1),X0(2); k=0; %將迭代次數置0。while

12、 abs(G)>epsi %while循環,把梯度的模和收斂精度進行比較。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); %函數對t求一階導數。t0=solve(df_t); %求解最優步長。t=subs(t0); X0=X0-t*G; G=Gname(X0(1),X0(2); %調用梯度函數 k=k+1; endYmin=fname(X0(1),X0(2); fprintf('迭代次數為:n %g',k) %輸出迭代次數。fprintf('n&

13、#39;);fprintf('最速下降法求得最優解為X0=%f,%f',double(X0); %輸出最優解。fprintf('n');fprintf('最速下降法求得最優值的小數表示為Ymin=%fn分數表示為:',double(Ymin) %輸出最小值。 %梯度計算函數 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); %目標函數表達式function f=fname(x1,x2) f=x12-2*x1*x2+1.5*x22+x1-2*x2;第四題第(2)問源程序%現代設計理論與方法第二次作業%第四題第2小題%=function Ymin=zuisuxiajiang_method2X=1,1;epsi=1e-5;X0=X.' %設置初始點X0。G=Gname(X0(1),X0(2); k=0; %將迭代次數置0。while abs(G)>epsi %while循環,把梯度的模和收斂精度進行比較。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); %函數對t求一階導數。t0=solve(df_t); %求解最優步長。t=subs(t0); X0=X0-t*G; G=Gname(X0(1),X0(2); %調用梯度函數 k=k+1; endYmin=fname(X0(1),X0(2); fprintf('迭代次數為:n %g',k) %輸出迭代次數。fprintf('n');fprintf('最速下降法求得最優解為X0=%f,%f',double(X0); %輸出最優解。fprintf('n');fprintf('最速下降法求得最優值的小數表示為Ymin=%fn分數表示為:',double(Ymin) %輸出最小值。 %梯度計算函數 function G=Gname(a,b) syms x1 x2 f=fnam

溫馨提示

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

評論

0/150

提交評論