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

📄 twopoint20.m

📁 最优化学习的Matlab程序:包括最速下降法,黄金分割法,曲线拟合等.
💻 M
字号:
function twopoint20
%TWOPOINT20 Two point step size gradient methods 两点步长梯度法2
%参考文献:J. Barzilai and J. M. Borwein  Two point step size gradient methods  
%IMA Journal of  Numerical Analysis  Vol .8  pp. 141-148 ,1998

%By:Ji Lin
%Email: linji@live.com
%Blog: http://linji526.spaces.live.com
%Date: 2007,2008/08/18

syms x1 x2 x3 x4 real
x=[x1 x2 x3 x4]';
A=diag([20,10,2,1]);
b=[1,1,1,1]';
fx=x'*A*x./2-b'*x;
xk(:,1)=[0,0,0,0]';xk(:,2)=[0,0,0,0]';
e=10^(-8);
k=3;alpha(2)=1;
for ii=1:4
    gx(ii)=diff(fx,x(ii));
end
gx=gx';
gk(:,1)=subs(gx,{x1,x2,x3,x4},{xk(1,1),xk(2,1),xk(3,1),xk(4,1)});
gk(:,2)=subs(gx,{x1,x2,x3,x4},{xk(1,2),xk(2,2),xk(3,2),xk(4,2)});
xk(:,3)=-gk(:,2);
flag=1;
while flag
    gk(:,k)=subs(gx,{x1,x2,x3,x4},{xk(1,k),xk(2,k),xk(3,k),xk(4,k)});
    alpha(k)=(xk(:,k)-xk(:,k-1))'*(xk(:,k)-xk(:,k-1))/((xk(:,k)-xk(:,k-1))'*(gk(:,k)-gk(:,k-1)));
    xk(:,k+1)=xk(:,k)-alpha(k).*gk(:,k);
    if norm(gk(:,k))<=e
        flag=0;
    else  
        k=k+1;
    end
end
gk(:,k+1)=subs(gx,{x1,x2,x3,x4},{xk(1,k+1),xk(2,k+1),xk(3,k+1),xk(4,k+1)});
for ii=1:k
normgk(ii)=norm(gk(:,ii));
Gk(ii)=norm(gk(:,ii+1))^2/(norm(gk(:,ii))^2);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -