⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wbrodn.m

📁 无约束优化中的共轭梯度算法程序
💻 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 + -