?? wbrodn.m
字號:
function []=wbrodn(x)
%for i=1:30
nprob=1;
c=0;
[n,m,x0]=initf(nprob);
ee=1e-6;
gk=grdfcn(n,m,x0,nprob);
dk=(-1)*gk;
p=0.1;
b=0.9;
K=0;
N=0;
Bk=eye(n);
Bk1=eye(n);
while (norm(gk)>=ee)&(K+N<60000)
a=1;
a1=0;
a2=10000;
sk=a*dk;
x1=x0+sk;
f0=objfcn(n,m,x0,nprob);
f1=objfcn(n,m,x1,nprob);
gk1=grdfcn(n,m,x1,nprob);
j=0;
M=0;
ff0=gk'*dk;
while (j==0)&(M<5000)&(norm(x1-x0)>10^(-10))
if f1<=f0+p*a*gk'*dk
gk1=grdfcn(n,m,x1,nprob);
ff1=gk1'*dk;
if ff1>=b*gk'*dk
j=-1;
else
aa=a1-(a-a1)*gk1'*dk/((gk'-gk1')*dk);
a1=a;
f0=f1;
ff0=ff1;
a=aa;
end
else
tt=(f0-f1)/((a-a1)*ff0);
aa=a1+0.5*(a-a1)/(1+tt);
a2=a;
a=aa;
end
x1=x0+a*dk;
f1=objfcn(n,m,x1,nprob);
gk1=grdfcn(n,m,x1,nprob);
K=K+1;
M=M+1;
end
yk=gk1-gk;
sk=x1-x0;
x0=x1;
Bk=Bk1;
f1=objfcn(n,m,x1,nprob);
gk=grdfcn(n,m,x0,nprob);
wk=sqrt(sk'*Bk*sk)*(yk/(sk'*yk)-(Bk*sk)/(sk'*Bk*sk));
Bk1=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk*yk')/(sk'*yk)+c*wk*wk';
dk=-inv(Bk1)*gk;
N=N+1;
end
n
m
N
K
f1
norm(gk)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -