資源簡介
無約束最優化:主要是共軛梯度法和擬牛頓法中DFP方法,很簡單的程序。清晰易懂。初學者使用。

代碼片段和文件信息
function?alpha=conjugate(fa1b1xkdkepsM)
%alpha?為單峰函數g(x)=f(xk+x*dk)在[a1b1]的最小值點,eps為精度要求,M為迭代次數控制.
%用于求精確步長的黃金分割法,參數傳遞有改動
if?nargin==5
????eps=?1.0e-10;
????M??=?200;
elseif?nargin<5
????error
????return
elseif?nargin==6
????M=200;
end
xsize=size(xk);
if?xsize(1)==1
????xk=xk‘
end
xsize=size(dk);
if?xsize(1)==1
????dk=dk‘
end
tau=(sqrt(5)-1)/2;
tau1=1-tau;
a=a1;
b=b1;
lambda=a+tau1*(b-a);
mu=a+tau*(b-a);
flambda=feval(fxk+lambda*dk);
fmu=feval(fxk+mu*dk);
for?k=1:1:M
????if?flambda>fmu
????????if?abs(b-a)<=eps
????????????alpha=mu;
????????????return;
????????else
????????????a=lambda;
????????????b=b;
????????????lambda=mu;
????????????flambda=fmu;
????????????mu=a+tau*(b-a);
????????????fmu=feval(fxk+mu*dk);
????????end
????else
????????if?abs(mu-a)<=eps
????????????alpha=lambda;
????????????return;
????????else
????????????a=a;
????????????b=mu;
????????????mu=lambda;
????????????fmu=flambda;
????????????lambda=a+tau1*(b-a);
????????????flambda=feval(fxk+lambda*dk);
????????end
????end
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1128??2008-05-20?10:46??conjugate.m
?????文件????????913??2005-10-31?20:28??conjugategrad.m
?????文件????????964??2005-10-31?20:44??DFP.m
-----------?---------??----------?-----??----
?????????????????3005????????????????????3
- 上一篇:基于迂回相位編碼的CGH及其再現
- 下一篇:HEVC中LCU分割 劃分查看
評論
共有 條評論